6.9 KiB
htARTE(HackTricks AWS Red Team Expert) からAWSハッキングをゼロからヒーローまで学ぶ!
HackTricks をサポートする他の方法:
- HackTricks で企業を宣伝したい または HackTricks をPDFでダウンロードしたい 場合は SUBSCRIPTION PLANS をチェックしてください!
- 公式PEASS&HackTricksスワッグを入手する
- The PEASS Family、当社の独占的な NFTs コレクションを発見する
- **💬 Discordグループ に参加するか、telegramグループ に参加するか、Twitter 🐦 @carlospolopm をフォローする。
- ハッキングトリックを共有するために HackTricks と HackTricks Cloud のGitHubリポジトリにPRを提出する。
これは関連情報からの要約です https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/
基本情報
カスタムURLスキームを使用すると、アプリはカスタムプロトコルを使用して通信できます。これについては Apple Developer Documentation で詳しく説明されています。これらのスキームはアプリによって宣言され、その後、これらのスキームに従って受信URLを処理します。このベクトルを通じた攻撃を防ぐために、すべてのURLパラメータを検証し、不正なURLを破棄することが重要です。
例として、URI myapp://hostname?data=123876123
が特定のアプリケーションアクションを呼び出すとします。注目すべき脆弱性は、Skypeモバイルアプリで、skype://
プロトコルを介して許可されていない通話アクションを許可していたことです。登録されたスキームは、アプリの Info.plist
の CFBundleURLTypes
の下に見つけることができます。悪意のあるアプリケーションは、URIを再登録して機密情報を傍受することができます。
アプリケーションクエリスキームの登録
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スキームのFuzzing
URLスキームのFuzzingを行うことで、メモリ破損のバグを特定することができます。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
参考文献
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricks をサポートする他の方法:
- HackTricks で企業を宣伝したい または HackTricks をPDFでダウンロードしたい 場合は SUBSCRIPTION PLANS をチェックしてください!
- 公式PEASS&HackTricksのグッズを入手する
- The PEASS Family を発見し、独占的な NFTs のコレクションを見つける
- 💬 Discordグループ または telegramグループ に参加し、Twitter 🐦 @carlospolopm をフォローしてください。
- HackTricks と HackTricks Cloud のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。