iOS Custom URI Handlers / Deeplinks / Custom Schemes

Reading time: 4 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Osnovne Informacije

Prilagođeni URL šeme omogućavaju aplikacijama da komuniciraju koristeći prilagođeni protokol, kao što je detaljno objašnjeno u Apple Developer Documentation. Ove šeme moraju biti deklarisane od strane aplikacije, koja zatim obrađuje dolazne URL-ove prema tim šemama. Ključno je validirati sve URL parametre i odbaciti sve neispravne URL-ove kako bi se sprečili napadi putem ovog vektora.

Primer je dat gde URI myapp://hostname?data=123876123 poziva specifičnu akciju aplikacije. Zapažena ranjivost bila je u Skype Mobile aplikaciji, koja je omogućila neovlašćene pozivne akcije putem skype:// protokola. Registrovane šeme se mogu naći u Info.plist aplikacije pod CFBundleURLTypes. Zlonamerne aplikacije mogu iskoristiti ovo ponovnim registracijama URI-a kako bi presreli osetljive informacije.

Registracija Šema Upita Aplikacija

Od iOS 9.0, da bi se proverilo da li je aplikacija dostupna, canOpenURL: zahteva deklarisanje URL šema u Info.plist pod LSApplicationQueriesSchemes. Ovo ograničava šeme koje aplikacija može da upita na 50, poboljšavajući privatnost sprečavanjem enumeracije aplikacija.

xml
<key>LSApplicationQueriesSchemes</key>
<array>
<string>url_scheme1</string>
<string>url_scheme2</string>
</array>

Testing URL Handling and Validation

Razvijači bi trebali da pregledaju specifične metode u izvor kodu kako bi razumeli konstrukciju i validaciju URL putanja, kao što su application:didFinishLaunchingWithOptions: i application:openURL:options:. Na primer, Telegram koristi različite metode za otvaranje URL-ova:

swift
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
self.openUrl(url: url)
return true
}

func application(_ application: UIApplication, open url: URL, sourceApplication: String?,
annotation: Any) -> Bool {
self.openUrl(url: url)
return true
}

func application(_ app: UIApplication, open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
self.openUrl(url: url)
return true
}

func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
self.openUrl(url: url)
return true
}

Testing URL Requests to Other Apps

Metode kao što su openURL:options:completionHandler: su ključne za otvaranje URL-ova za interakciju sa drugim aplikacijama. Identifikacija korišćenja takvih metoda u izvor kodu aplikacije je ključna za razumevanje spoljne komunikacije.

Testing for Deprecated Methods

Zastarjeli metodi koji se bave otvaranjem URL-ova, kao što su application:handleOpenURL: i openURL:, treba da budu identifikovani i pregledani zbog bezbednosnih implikacija.

Fuzzing URL Schemes

Fuzzing URL shema može identifikovati greške u oštećenju memorije. Alati kao što je Frida mogu automatizovati ovaj proces otvaranjem URL-ova sa različitim payload-ima kako bi se pratili padovi, što je ilustrovano manipulacijom URL-ova u iGoat-Swift aplikaciji:

bash
$ frida -U SpringBoard -l ios-url-scheme-fuzzing.js
[iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}")
Watching for crashes from iGoat...
No logs were moved.
Opened URL: iGoat://?contactNumber=0&message=0

Hijackovanje prilagođenih URL šema

Prema ovom postu, zlonamerne aplikacije mogu registrovati prilagođene šeme drugih aplikacija, zatim zlonamerna aplikacija može otvoriti pregledač koji ima sve kolačiće Safari aplikacije sa ASWebAuthenticationSession.

Sa pregledačem, zlonamerna aplikacija može učitati veb stranicu koju kontroliše napadač i TCC će tražiti od mobilnog korisnika dozvole da otvori tu aplikaciju. Zatim, zlonamerna veb stranica može preusmeriti na stranicu žrtve, na primer, OAuth tok sa parametrima prompt=none. Ako je korisnik već bio prijavljen u OAuth toku, OAuth tok će poslati tajnu nazad u aplikaciju žrtve koristeći prilagođenu šemu aplikacije žrtve.
Međutim, pošto je zlonamerna aplikacija takođe registrovala tu šemu i pošto je korišćeni pregledač unutar zlonamerne aplikacije, prilagođena šema će u ovom slučaju biti obrađena od strane zlonamerne aplikacije koja će moći da ukrade OAuth token.

Reference

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks