11 KiB
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
-
ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリにPRを提出してください。
ユニバーサルリンクは、ユーザーをSafariを経由せずにアプリに直接リダイレクトすることができます。
ユニバーサルリンクは一意であり、他のアプリによってクレームされることはありません。これは、ウェブサイトとアプリが関連していることを確認するために、所有者がファイルをアップロードしたウェブサイトの標準的なHTTP(S)リンクを使用します。
これらのリンクはHTTP(S)スキームを使用しているため、アプリがインストールされていない場合、Safariがリンクを開き、ユーザーをページにリダイレクトします。これにより、アプリがインストールされていなくてもアプリと通信することができます。
ユニバーサルリンクを作成するには、詳細を含むJSONファイルであるapple-app-site-association
というファイルを作成する必要があります。その後、このファイルをウェブサーバーのルートディレクトリにホストする必要があります(例:https://google.com/apple-app-site-association)。
ペンテスターにとって、このファイルは非常に興味深いものです。それはまだ公開されていないリリースのパスを公開することさえあります。
関連ドメインの権限を確認する
Xcodeで、Capabilitiesタブに移動し、Associated Domainsを検索します。または、.entitlements
ファイルを調べてcom.apple.developer.associated-domains
を探します。各ドメインはapplinks:
で始まる必要があります。例:applinks:www.mywebsite.com
。
Telegramの.entitlements
ファイルの例です:
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>
詳細な情報は、アーカイブされたApple Developerドキュメントで見つけることができます。
コンパイルされたアプリケーションしか持っていない場合は、次のガイドに従ってエンタイトルメントを抽出することができます:
{% content-ref url="extracting-entitlements-from-compiled-application.md" %} extracting-entitlements-from-compiled-application.md {% endcontent-ref %}
Apple App Site Associationファイルの取得
前のステップで取得した関連ドメインを使用して、サーバーからapple-app-site-association
ファイルを取得してみてください。このファイルは、https://<domain>/apple-app-site-association
またはhttps://<domain>/.well-known/apple-app-site-association
でHTTPS経由でアクセス可能である必要があります。
自分のブラウザで取得するか、Apple App Site Association (AASA) Validatorを使用することができます。
リンクレシーバーメソッドの確認
リンクを受け取り、適切に処理するためには、アプリデリゲートはapplication:continueUserActivity:restorationHandler:
を実装する必要があります。元のプロジェクトがある場合は、このメソッドを検索してみてください。
なお、アプリがopenURL:options:completionHandler:
を使用してアプリのウェブサイトへのユニバーサルリンクを開く場合、リンクはアプリ内で開かれません。呼び出し元がアプリから発生するため、ユニバーサルリンクとして処理されません。
webpageURL
のスキームはHTTPまたはHTTPSである必要があります(他のスキームは例外をスローするはずです)。URLComponents
/NSURLComponents
のscheme
インスタンスプロパティを使用して、これを確認できます。
データハンドラーメソッドの確認
iOSがユニバーサルリンクの結果としてアプリを開くと、アプリはNSUserActivityTypeBrowsingWeb
というactivityType
値を持つNSUserActivity
オブジェクトを受け取ります。アクティビティオブジェクトのwebpageURL
プロパティには、ユーザーがアクセスするHTTPまたはHTTPSのURLが含まれています。以下のSwiftの例では、URLを開く前にこれを正確に検証しています:
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
// ...
if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL {
application.open(url, options: [:], completionHandler: nil)
}
return true
}
さらに、URLにパラメータが含まれている場合は、信頼されたドメインからであっても、慎重にサニタイズおよび検証する必要があります。たとえば、それらは攻撃者によって改ざんされた可能性があるか、不正なデータが含まれている可能性があります。その場合、URL全体およびしたがってユニバーサルリンクのリクエスト全体を破棄する必要があります。
NSURLComponents
APIは、URLのコンポーネントを解析および操作するために使用できます。これは、application:continueUserActivity:restorationHandler:
メソッド自体の一部として行われる場合もありますし、それを呼び出す別のメソッドで行われる場合もあります。次の例は、これを示しています。
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let incomingURL = userActivity.webpageURL,
let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true),
let path = components.path,
let params = components.queryItems else {
return false
}
if let albumName = params.first(where: { $0.name == "albumname" })?.value,
let photoIndex = params.first(where: { $0.name == "index" })?.value {
// Interact with album name and photo index
return true
} else {
// Handle when album and/or album name or photo index missing
return false
}
}
参考文献
{% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %}
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
-
サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
-
The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
-
公式のPEASS&HackTricksのグッズを手に入れましょう。
-
💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
-
**ハッキングのトリックを共有するには、hacktricksリポジトリとhacktricks-cloudリポジトリ**にPRを提出してください。