大家好,今天我将解释我是如何通过同一目标的 OAuth 自定义方案劫持获得两个帐户接管的。
这是我的 Android 渗透测试方法的第二部分,第一部分。
我首先做了一些静态分析,我看到该应用程序对某些内容使用了深度链接,但该应用程序是带有 Hermes 的 React Native。
我开始进行一些静态分析,我看到该应用程序使用深度链接进行某些作,但该应用程序是使用 Hermes 的 react native
所以我尝试反编译 Hermes React Native 二进制文件并搜索应用程序如何处理深度链接,但我一无所获。
深度链接是将用户定向到 Android 应用中的特定位置或内容的 URL,而不仅仅是启动应用的主屏幕。它利用应用清单中定义的 intent 过滤器来实现从外部来源(如 Web 链接或其他应用)的无缝导航。
因此,我尝试拦截来自此应用程序的所有请求,以了解该应用程序如何处理此深度链接,但该应用程序使用 SSL 固定。我将通用 Android SSL 固定旁路与 Frida 一起使用。
因此,让我们探索应用程序功能并查看 Burp 历史记录中的请求。我尝试使用 SSO 登录 Google。
我惊讶地发现该应用程序使用外部浏览器(而不是 WebView)来执行此敏感作。
由于 OAuth 发生在应用程序之外,因此此流程引起了我的注意,因此我问自己应用程序如何知道我是否登录。是的,你是对的 — 它是深度链接。
所以我去了 Burp 历史记录,发现在你使用 Google 邮件作为 SSO 后,你被重定向到目标网站,之后,目标使用包含 tempToken 的深度链接进行重定向。
深度链接不安全,您永远不应该通过它们发送敏感信息。深度链接不安全的原因是没有用于注册 URL 方案的集中方法。作为应用程序开发人员,您几乎可以通过配置 URL 方案来使用它。但是,没有什么能阻止恶意应用程序通过注册相同的方案来劫持您的深度链接,从而获得对链接中包含的数据的访问权限。
目标应用程序 — Google OAuth 流程和漏洞:
目标应用程序允许用户连接到他们的 Google 账户以登录(通过 OAuth 流程)。
将 Google 邮件用作 SSO 后,您将被重定向到目标网站。
之后,目标使用 tempToken 的深度链接进行重定向。为了实现这一点,自定义 URL 方案用于将 在 OAuth 流的末尾传输到目标应用程序。target-app://
tempToken
然后,通过 GraphQL 请求将此令牌交换为授权代码。
但是,另一个(恶意)应用程序也可以声明相同的 URL 方案并拦截 .当作系统注册了多个应用程序来处理同一 URL 方案时,Android 将显示一个模式,要求用户选择要使用的应用程序。tempToken
为了演示此漏洞,我创建了一个恶意 Android 应用程序,该应用程序能够拦截并发送 GraphQL 请求以获取授权,然后发送 GraphQL 请求以获取用户信息。tempToken
报告时间线
创建时间 — 2025 年 1 月 15 日
严重性从“高”更改为“中”—2025 年 1 月 17 >
严重性从 2025 年 1 月 17 →更改为低
2025 年 1 月 20 日→ 欧元赏金
我在目标范围内的另一个应用程序中发现了相同的错误。
原文始发于微信公众号(安全狗的自我修养):我如何通过对同一目标的 OAuth 自定义方案劫持来获得两个帐户接管
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论