iOS Universal Links
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.
Introduction
Universal links hutoa mwelekeo usio na mshono kwa watumiaji kwa kufungua moja kwa moja maudhui katika programu, bila ya kuhitaji mwelekeo wa Safari. Viungo hivi ni vya kipekee na salama, kwani haviwezi kudaiwa na programu nyingine. Hii inahakikishwa kwa kuhifadhi faili ya apple-app-site-association
ya JSON katika saraka ya mizizi ya tovuti, ikianzisha kiungo kinachoweza kuthibitishwa kati ya tovuti na programu. Katika hali ambapo programu haijasanidiwa, Safari itachukua na kuelekeza mtumiaji kwenye ukurasa wa wavuti, ikihifadhi uwepo wa programu.
Kwa wapimaji wa penetration, faili ya apple-app-site-association
ni ya umuhimu maalum kwani inaweza kufichua njia nyeti, ikiwa ni pamoja na zile zinazohusiana na vipengele ambavyo havijachapishwa.
Kuchambua Haki za Domains Zinazohusiana
Wakuu wa programu wanawezesha Universal Links kwa kusanidi Domains Zinazohusiana katika tab ya Uwezo ya Xcode au kwa kukagua faili ya .entitlements
. Kila domain ina anwani ya applinks:
. Kwa mfano, usanidi wa Telegram unaweza kuonekana kama ifuatavyo:
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>
Kwa maelezo zaidi, rejelea archived Apple Developer Documentation.
Ikiwa unafanya kazi na programu iliyokusanywa, ruhusa zinaweza kutolewa kama ilivyoelezwa katika hiki kiongozi.
Kurejesha Faili ya Muungano wa Tovuti ya Apple App
Faili ya apple-app-site-association
inapaswa kurejeshwa kutoka kwa seva kwa kutumia maeneo yaliyoainishwa katika ruhusa. Hakikisha faili inapatikana kupitia HTTPS moja kwa moja kwenye https://<domain>/apple-app-site-association
(au /.well-known/apple-app-site-association
). Zana kama Apple App Site Association (AASA) Validator zinaweza kusaidia katika mchakato huu.
Uhesabuji wa haraka kutoka kwa shell ya macOS/Linux
# tukichukulia umepata ruhusa kwenye ent.xml doms=$(plutil -extract com.apple.developer.associated-domains xml1 -o - ent.xml | \ grep -oE 'applinks:[^<]+' | cut -d':' -f2) for d in $doms; do echo "[+] Fetching AASA for $d"; curl -sk "https://$d/.well-known/apple-app-site-association" | jq '.' done
Kushughulikia Viungo vya Ulimwengu katika Programu
Programu lazima itekeleze mbinu maalum ili kushughulikia viungo vya ulimwengu kwa usahihi. Mbinu kuu ya kutafuta ni application:continueUserActivity:restorationHandler:
. Ni muhimu kwamba mpango wa URLs zinazoshughulikiwa ni HTTP au HTTPS, kwani zingine hazitasaidiwa.
Kuthibitisha Mbinu ya Kushughulikia Data
Wakati kiungo cha ulimwengu kinapofungua programu, kitu cha NSUserActivity
kinapitishwa kwa programu na URL. Kabla ya kushughulikia URL hii, ni muhimu kuthibitisha na kusafisha ili kuzuia hatari za usalama. Hapa kuna mfano katika Swift unaoonyesha mchakato:
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
// Check for web browsing activity and valid URL
if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL {
application.open(url, options: [:], completionHandler: nil)
}
return true
}
URLs zinapaswa kuchambuliwa na kuthibitishwa kwa makini, hasa ikiwa zinajumuisha vigezo, ili kujilinda dhidi ya uwezekano wa udanganyifu au data isiyo sahihi. API ya NSURLComponents
ni ya manufaa kwa ajili ya hili, kama inavyoonyeshwa hapa chini:
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let incomingURL = userActivity.webpageURL,
let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true),
let path = components.path,
let params = components.queryItems else {
return false
}
if let albumName = params.first(where: { $0.name == "albumname" })?.value,
let photoIndex = params.first(where: { $0.name == "index" })?.value {
// Process the URL with album name and photo index
return true
} else {
// Handle invalid or missing parameters
return false
}
}
Kupitia mipangilio na uthibitisho wa makini, waendelezaji wanaweza kuhakikisha kwamba viungo vya ulimwengu vinaboresha uzoefu wa mtumiaji huku wakihifadhi viwango vya usalama na faragha.
Ukatili wa Kawaida & Ukaguzi wa Pentesting
# | Ukatili | Jinsi ya kupima | Utekelezaji / Athari |
---|---|---|---|
1 | paths / components za kupita kiasi katika faili la AASA (mfano "/": "*" au wildcards kama "/a/*" ). | • Kagua AASA iliyopakuliwa na uangalie * , slashes za mwisho, au sheria za {"?": …} .• Jaribu kuomba rasilimali zisizojulikana ambazo bado zinakidhi sheria hiyo ( https://domain.com/a/evil?_p_dp=1 ). | Utekwaji wa kiungo cha ulimwengu: programu mbaya ya iOS inayosajili kikoa sawa inaweza kudai viungo vyote na kuwasilisha UI ya udukuzi. Mfano halisi ni ripoti ya bug-bounty ya Temu.com ya Mei 2025 ambapo mshambuliaji angeweza kuelekeza njia yoyote ya /a/* kwa programu yao. |
2 | Uthibitisho wa upande wa seva ulio missing wa njia za deep-link. | Baada ya kubaini njia zinazoruhusiwa, tolea maombi ya curl /Burp kwa rasilimali zisizopo na uangalie misimbo ya hali ya HTTP. Kila kitu kingine isipokuwa 404 (mfano 200/302) ni cha kutia shaka. | Mshambuliaji anaweza kuhifadhi maudhui yasiyo na mipaka nyuma ya njia inayoruhusiwa na kuyatoa kupitia kikoa halali, kuongeza kiwango cha mafanikio cha udukuzi au wizi wa tokeni za kikao. |
3 | Kushughulikia URL upande wa programu bila orodha ya mikoa/jeshi (CVE-2024-10474 – Mozilla Focus < 132). | Tafuta wito wa moja kwa moja wa openURL: /open(_:options:) au madaraja ya JavaScript yanayopitisha URL zisizo na mipaka. | Kurasa za ndani zinaweza kupeleka myapp:// au https:// URLs ambazo zinapita ukaguzi wa usalama wa URL-bar wa kivinjari, na kusababisha udanganyifu au vitendo vya kibali visivyokusudiwa. |
4 | Matumizi ya sub-domains za wildcard (*.example.com ) katika haki. | grep kwa *. katika haki. | Ikiwa sub-domain yoyote itachukuliwa (mfano kupitia S3 bucket isiyotumika), mshambuliaji moja kwa moja anapata uhusiano wa Universal Link. |
Orodha ya Haraka
-
Toa haki na uhesabu kila kipengee cha
applinks:
. - Pakua AASA kwa kila kipengee na ukaguzi wa wildcards.
- Thibitisha kwamba seva ya wavuti inarudisha 404 kwa njia zisizofafanuliwa.
- Katika binary, thibitisha kwamba tu mikoa/schemas zinazotambulika zinashughulikiwa.
-
Ikiwa programu inatumia sintaksia mpya ya
components
(iOS 11+), fuzz sheria za query-parameter ({"?":{…}}
).
Zana
- GetUniversal.link: Inasaidia kurahisisha upimaji na usimamizi wa Viungo vya Ulimwengu vya programu yako na faili la AASA. Ingiza tu kikoa chako ili kuthibitisha uhalali wa faili la AASA au tumia dashibodi maalum kupima tabia ya kiungo kwa urahisi. Zana hii pia inakusaidia kubaini wakati Apple itakapofanya index faili yako ya AASA.
- Knil: Zana ya iOS ya chanzo wazi inayopata, inachambua na inakuwezesha tap-test kila Kiungo cha Ulimwengu kilichotangazwa na kikoa moja kwa moja kwenye kifaa.
- universal-link-validator: CLI / validator ya wavuti inayofanya ukaguzi mkali wa ufanano wa AASA na kuonyesha wildcards hatari.
Marejeleo
- https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis
- https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8
- https://medium.com/@m.habibgpi/universal-link-hijacking-via-misconfigured-aasa-file-on-temu-com-eadfcb745e4e
- https://nvd.nist.gov/vuln/detail/CVE-2024-10474
tip
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Jifunze na fanya mazoezi ya Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Angalia mpango wa usajili!
- Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuatilie kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za hacking kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud repos za github.