iOS Custom URI Handlers / Deeplinks / Custom Schemes
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Custom URL schemes enable apps to communicate using a custom protocol, as detailed in the Apple Developer Documentation. These schemes must be declared by the app, which then handles incoming URLs following those schemes. It's crucial to validate all URL parameters and discard any malformed URLs to prevent attacks through this vector.
Mfano unatolewa ambapo URI myapp://hostname?data=123876123
inachochea hatua maalum ya programu. Uthibitisho wa udhaifu ulipatikana katika programu ya Skype Mobile, ambayo iliruhusu hatua za simu zisizoidhinishwa kupitia itifaki ya skype://
. Mipango iliyosajiliwa inaweza kupatikana katika Info.plist
ya programu chini ya CFBundleURLTypes
. Programu mbaya zinaweza kutumia hii kwa kusajili tena URIs ili kukamata taarifa nyeti.
Kuanzia iOS 9.0, ili kuangalia kama programu inapatikana, canOpenURL:
inahitaji kutangaza mipango ya URL katika Info.plist
chini ya LSApplicationQueriesSchemes
. Hii inapunguza mipango ambayo programu inaweza kuuliza hadi 50, ikiongeza faragha kwa kuzuia orodha ya programu.
Wakandarasi wanapaswa kuchunguza mbinu maalum katika msimbo wa chanzo ili kuelewa ujenzi wa njia za URL na uthibitishaji, kama vile application:didFinishLaunchingWithOptions:
na application:openURL:options:
. Kwa mfano, Telegram inatumia mbinu mbalimbali za kufungua URL:
Mbinu kama openURL:options:completionHandler:
ni muhimu kwa kufungua URL ili kuingiliana na programu nyingine. Kutambua matumizi ya mbinu kama hizo katika msimbo wa chanzo wa programu ni muhimu kwa kuelewa mawasiliano ya nje.
Mbinu zilizopitwa na wakati zinazoshughulikia ufunguzi wa URL, kama application:handleOpenURL:
na openURL:
, zinapaswa kutambuliwa na kupitia kwa athari za usalama.
Fuzzing URL schemes inaweza kutambua makosa ya ufisadi wa kumbukumbu. Zana kama Frida zinaweza kuendesha mchakato huu kwa kufungua URL zenye mzigo tofauti ili kufuatilia ajali, kama inavyoonyeshwa na udanganyifu wa URL katika programu ya iGoat-Swift:
Kulingana na hiki, programu mbaya zinaweza kujiandikisha mipango maalum ya programu nyingine, kisha programu mbaya inaweza kufungua kivinjari ambacho kina vidakuzi vyote vya Safari App kwa kutumia ASWebAuthenticationSession.
Kwa kutumia kivinjari, programu mbaya inaweza kupakia ukurasa wa wavuti unaodhibitiwa na mshambuliaji na TCC itauliza mtumiaji wa simu ruhusa za kufungua programu hiyo. Kisha, ukurasa wa wavuti mbaya unaweza kuelekeza kwenye ukurasa wa mwathirika, kwa mfano mtiririko wa OAuth na parameter prompt=none
. Ikiwa mtumiaji tayari alikuwa amejiandikisha katika mtiririko wa OAuth, mtiririko wa OAuth utatuma siri nyuma kwa programu ya mwathirika kwa kutumia mpango maalum wa programu ya mwathirika.
Hata hivyo, kwa sababu programu mbaya pia iliandikisha na kwa sababu kivinjari kilichotumika kiko ndani ya programu mbaya, mpango maalum utashughulikiwa katika kesi hii na programu mbaya ambayo itakuwa na uwezo wa kuiba token ya OAuth.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)