iOS Custom URI Handlers / Deeplinks / Custom Schemes
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.
Basic Information
컀μ€ν URL μ€ν΄μ μ±μ΄ 컀μ€ν νλ‘ν μ½μ μ¬μ©νμ¬ ν΅μ ν μ μλλ‘ νλ©°, μ΄λ Apple Developer Documentationμμ μμΈν μ€λͺ λμ΄ μμ΅λλ€. μ΄λ¬ν μ€ν΄μ μ±μμ μ μΈν΄μΌ νλ©°, μ΄ν ν΄λΉ μ€ν΄μ λ°λΌ λ€μ΄μ€λ URLμ μ²λ¦¬ν©λλ€. λͺ¨λ URL λ§€κ°λ³μλ₯Ό κ²μ¦νκ³ νμμ΄ μλͺ»λ URLμ νκΈ°νλ κ²μ΄ μ€μνμ¬, μ΄λ₯Ό ν΅ν΄ 곡격μ λ°©μ§ν μ μμ΅λλ€.
URI myapp://hostname?data=123876123κ° νΉμ μ ν리μΌμ΄μ
λμμ νΈμΆνλ μκ° μ£Όμ΄μ§λλ€. μ£Όλͺ©ν λ§ν μ·¨μ½μ μ Skype Mobile μ±μμ λ°κ²¬λμμΌλ©°, μ΄λ skype:// νλ‘ν μ½μ ν΅ν΄ νκ°λμ§ μμ ν΅ν λμμ νμ©νμ΅λλ€. λ±λ‘λ μ€ν΄μ μ±μ Info.plistμ CFBundleURLTypesμμ νμΈν μ μμ΅λλ€. μ
μμ μΈ μ ν리μΌμ΄μ
μ URIλ₯Ό μ¬λ±λ‘νμ¬ λ―Όκ°ν μ 보λ₯Ό κ°λ‘μ± μ μμ΅λλ€.
Application Query Schemes Registration
iOS 9.0λΆν°, μ±μ΄ μ¬μ© κ°λ₯νμ§ νμΈνκΈ° μν΄ canOpenURL:λ Info.plistμ LSApplicationQueriesSchemesμ URL μ€ν΄μ μ μΈν΄μΌ ν©λλ€. μ΄λ μ±μ΄ 쿼리ν μ μλ μ€ν΄μ 50κ°λ‘ μ ννμ¬ μ± μ΄κ±°λ₯Ό λ°©μ§νκ³ κ°μΈ μ 보λ₯Ό ν₯μμν΅λλ€.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>url_scheme1</string>
<string>url_scheme2</string>
</array>
URL μ²λ¦¬ λ° κ²μ¦ ν μ€νΈ
κ°λ°μλ application:didFinishLaunchingWithOptions: λ° application:openURL:options:μ κ°μ μμ€ μ½λμ νΉμ λ©μλλ₯Ό κ²μ¬νμ¬ URL κ²½λ‘ κ΅¬μ± λ° κ²μ¦μ μ΄ν΄ν΄μΌ ν©λλ€. μλ₯Ό λ€μ΄, Telegramμ URLμ μ¬λ λ€μν λ°©λ²μ μ¬μ©ν©λλ€:
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
}
λ€λ₯Έ μ±μ λν URL μμ² ν μ€νΈ
openURL:options:completionHandler:μ κ°μ λ©μλλ λ€λ₯Έ μ±κ³Ό μνΈμμ©νκΈ° μν΄ URLμ μ¬λ λ° μ€μν©λλ€. μ±μ μμ€ μ½λμμ μ΄λ¬ν λ©μλμ μ¬μ©μ μλ³νλ κ²μ μΈλΆ ν΅μ μ μ΄ν΄νλ λ° ν΅μ¬μ
λλ€.
μ¬μ© μ€λ¨λ λ©μλ ν μ€νΈ
application:handleOpenURL: λ° openURL:μ κ°μ URL μ΄κΈ°λ₯Ό μ²λ¦¬νλ μ¬μ© μ€λ¨λ λ©μλλ μλ³νκ³ λ³΄μ μν₯μ κ²ν ν΄μΌ ν©λλ€.
URL μ€ν΄ νΌμ§
URL μ€ν΄ νΌμ§μ λ©λͺ¨λ¦¬ μμ λ²κ·Έλ₯Ό μλ³ν μ μμ΅λλ€. Fridaμ κ°μ λꡬλ λ€μν νμ΄λ‘λλ‘ URLμ μ΄μ΄ μΆ©λμ λͺ¨λν°λ§νμ¬ μ΄ κ³Όμ μ μλνν μ μμ΅λλ€. μ΄λ iGoat-Swift μ±μμ URL μ‘°μμ μλ‘ μ€λͺ λ©λλ€:
$ 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
컀μ€ν URL μ€ν΄ νμ΄μ¬νΉ
μ΄ κ²μλ¬Όμ λ°λ₯΄λ©΄, μ μ± μ±μ λ€λ₯Έ μ±μ 컀μ€ν μ€ν΄μ λ±λ‘ν μ μμΌλ©°, κ·Έλ¬λ©΄ μ μ± μ±μ ASWebAuthenticationSessionμ μ¬μ©νμ¬ Safari μ±μ λͺ¨λ μΏ ν€κ° μλ λΈλΌμ°μ λ₯Ό μ΄ μ μμ΅λλ€.
μ
μ± μ±μ λΈλΌμ°μ λ₯Ό ν΅ν΄ 곡격μκ° μ μ΄νλ μΉ νμ΄μ§λ₯Ό λ‘λν μ μμΌλ©°, TCCλ λͺ¨λ°μΌ μ¬μ©μμκ² ν΄λΉ μ±μ μ΄κΈ° μν κΆνμ μμ²ν©λλ€. κ·Έλ° λ€μ, μ
μ± μΉ νμ΄μ§λ νΌν΄μ νμ΄μ§λ‘ 리λλ μ
ν μ μμΌλ©°, μλ₯Ό λ€μ΄ prompt=none λ§€κ°λ³μλ₯Ό κ°μ§ OAuth νλ¦μΌλ‘ 리λλ μ
λ©λλ€. μ¬μ©μκ° μ΄λ―Έ OAuth νλ¦μ λ‘κ·ΈμΈν κ²½μ°, OAuth νλ¦μ νΌν΄μ μ±μ 컀μ€ν
μ€ν΄μ μ¬μ©νμ¬ λΉλ°μ νΌν΄μ μ ν리μΌμ΄μ
μΌλ‘ λ€μ 보λ
λλ€.
κ·Έλ¬λ μ
μ± μ±λ μ΄λ₯Ό λ±λ‘νκΈ° λλ¬Έμ, μ¬μ©λ λΈλΌμ°μ κ° μ
μ± μ± λ΄μ μκΈ° λλ¬Έμ, μ΄ κ²½μ° μ»€μ€ν
μ€ν΄μ μ
μ± μ±μ μν΄ μ²λ¦¬λμ΄ OAuth ν ν°μ νμΉ μ μμ΅λλ€.
μ°Έμ‘°
- https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/
- https://evanconnelly.github.io/post/ios-oauth/
Tip
AWS ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:HackTricks Training GCP Red Team Expert (GRTE)
Azure ν΄νΉ λ°°μ°κΈ° λ° μ°μ΅νκΈ°:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks μ§μνκΈ°
- ꡬλ κ³ν νμΈνκΈ°!
- **π¬ λμ€μ½λ κ·Έλ£Ή λλ ν λ κ·Έλ¨ κ·Έλ£Ήμ μ°Έμ¬νκ±°λ νΈμν° π¦ @hacktricks_liveλ₯Ό νλ‘μ°νμΈμ.
- HackTricks λ° HackTricks Cloud κΉνλΈ λ¦¬ν¬μ§ν 리μ PRμ μ μΆνμ¬ ν΄νΉ νΈλ¦μ 곡μ νμΈμ.


