mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-11 13:56:22 +00:00
92 lines
6.2 KiB
Markdown
92 lines
6.2 KiB
Markdown
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
|
|
|
|
HackTricks를 지원하는 다른 방법:
|
|
|
|
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
|
* [**공식 PEASS & HackTricks 스웨그**](https://peass.creator-spring.com)를 얻으세요.
|
|
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
|
|
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**를** **팔로우**하세요.
|
|
* **Hacking 트릭을 공유하려면** [**HackTricks**](https://github.com/carlospolop/hacktricks) 및 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 저장소에 PR을 제출하세요.
|
|
|
|
</details>
|
|
|
|
이것은 [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)에서 관련 정보의 요약입니다.
|
|
|
|
## 기본 정보
|
|
|
|
사용자 정의 URL 스키마는 앱이 사용자 정의 프로토콜을 사용하여 통신할 수 있도록합니다. 자세한 내용은 [Apple 개발자 문서](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1)를 참조하십시오. 이러한 스키마는 앱에 의해 선언되어 해당 스키마를 따르는 URL을 처리합니다. 이 벡터를 통한 공격을 방지하기 위해 **모든 URL 매개변수를 유효성 검사**하고 **잘못된 URL을 폐기**해야합니다.
|
|
|
|
예를 들어, URI `myapp://hostname?data=123876123`는 특정 애플리케이션 동작을 호출합니다. Skype Mobile 앱에서 발견된 취약점은 `skype://` 프로토콜을 통해 허가되지 않은 호출 동작을 허용했습니다. 등록된 스키마는 앱의 `Info.plist`에서 `CFBundleURLTypes` 아래에서 찾을 수 있습니다. 악성 애플리케이션은 이를 이용하여 민감한 정보를 가로챌 수 있습니다.
|
|
|
|
### 애플리케이션 쿼리 스키마 등록
|
|
|
|
iOS 9.0부터 `canOpenURL:`을 사용하여 앱의 가용성을 확인하려면 `Info.plist`에서 `LSApplicationQueriesSchemes` 아래에 URL 스키마를 선언해야합니다. 이를 통해 앱의 열거를 방지하여 개인 정보 보호를 강화하기 위해 앱이 쿼리할 수 있는 스키마가 50개로 제한됩니다.
|
|
```xml
|
|
<key>LSApplicationQueriesSchemes</key>
|
|
<array>
|
|
<string>url_scheme1</string>
|
|
<string>url_scheme2</string>
|
|
</array>
|
|
```
|
|
### URL 처리 및 유효성 검사 테스트
|
|
|
|
개발자는 `application:didFinishLaunchingWithOptions:` 및 `application:openURL:options:`와 같은 소스 코드의 특정 메서드를 검사하여 URL 경로 구성 및 유효성 검사를 이해해야 합니다. 예를 들어, 텔레그램은 다양한 방법으로 URL을 열기 위해 다음과 같은 메서드를 사용합니다:
|
|
```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
|
|
}
|
|
```
|
|
### 다른 앱에 대한 URL 요청 테스트
|
|
|
|
`openURL:options:completionHandler:`와 같은 메소드는 다른 앱과 상호작용하기 위해 URL을 열 때 중요합니다. 앱의 소스 코드에서 이러한 메소드의 사용을 식별하는 것은 외부 통신을 이해하는 데 필수적입니다.
|
|
|
|
### 폐기된 메소드에 대한 테스트
|
|
|
|
`application:handleOpenURL:` 및 `openURL:`과 같은 폐기된 메소드는 URL 열기를 처리하는 데 사용되며, 보안적인 영향을 검토하기 위해 식별되어야 합니다.
|
|
|
|
### URL 스키마 퍼징
|
|
|
|
URL 스키마 퍼징은 메모리 손상 버그를 식별할 수 있습니다. [Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/)와 같은 도구를 사용하여 다양한 페이로드를 가진 URL을 열어 충돌을 모니터링하는 프로세스를 자동화할 수 있습니다. 이는 iGoat-Swift 앱에서 URL을 조작하는 것으로 예시됩니다.
|
|
```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
|
|
```
|
|
## 참고 자료
|
|
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
|
|
|
|
<details>
|
|
|
|
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong>를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요<strong>!</strong></summary>
|
|
|
|
HackTricks를 지원하는 다른 방법:
|
|
|
|
* **회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드**하려면 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)를 확인하세요!
|
|
* [**공식 PEASS & HackTricks 스왑**](https://peass.creator-spring.com)을 얻으세요.
|
|
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)를 발견하세요. 독점적인 [**NFTs**](https://opensea.io/collection/the-peass-family) 컬렉션입니다.
|
|
* 💬 [**Discord 그룹**](https://discord.gg/hRep4RUj7f) 또는 [**텔레그램 그룹**](https://t.me/peass)에 **참여**하거나 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)을 **팔로우**하세요.
|
|
* **HackTricks**와 **HackTricks Cloud** github 저장소에 PR을 제출하여 여러분의 해킹 기법을 공유하세요.
|
|
|
|
</details>
|