6.2 KiB
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하려면 SUBSCRIPTION PLANS를 확인하세요!
- 공식 PEASS & HackTricks 스웨그를 얻으세요.
- The PEASS Family를 발견하세요. 독점적인 NFTs 컬렉션입니다.
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @carlospolopm를 팔로우하세요.
- Hacking 트릭을 공유하려면 HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하세요.
이것은 https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/에서 관련 정보의 요약입니다.
기본 정보
사용자 정의 URL 스키마는 앱이 사용자 정의 프로토콜을 사용하여 통신할 수 있도록합니다. 자세한 내용은 Apple 개발자 문서를 참조하십시오. 이러한 스키마는 앱에 의해 선언되어 해당 스키마를 따르는 URL을 처리합니다. 이 벡터를 통한 공격을 방지하기 위해 모든 URL 매개변수를 유효성 검사하고 잘못된 URL을 폐기해야합니다.
예를 들어, URI myapp://hostname?data=123876123
는 특정 애플리케이션 동작을 호출합니다. Skype Mobile 앱에서 발견된 취약점은 skype://
프로토콜을 통해 허가되지 않은 호출 동작을 허용했습니다. 등록된 스키마는 앱의 Info.plist
에서 CFBundleURLTypes
아래에서 찾을 수 있습니다. 악성 애플리케이션은 이를 이용하여 민감한 정보를 가로챌 수 있습니다.
애플리케이션 쿼리 스키마 등록
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 경로 구성 및 유효성 검사를 이해해야 합니다. 예를 들어, 텔레그램은 다양한 방법으로 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
참고 자료
htARTE (HackTricks AWS Red Team Expert)를 통해 AWS 해킹을 처음부터 전문가까지 배워보세요!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 HackTricks를 PDF로 다운로드하려면 SUBSCRIPTION PLANS를 확인하세요!
- 공식 PEASS & HackTricks 스왑을 얻으세요.
- The PEASS Family를 발견하세요. 독점적인 NFTs 컬렉션입니다.
- 💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @carlospolopm을 팔로우하세요.
- HackTricks와 HackTricks Cloud github 저장소에 PR을 제출하여 여러분의 해킹 기법을 공유하세요.