简介:侧翼应用程序
这一切都始于一个金融服务平台在 Hackerone 上开展了 3 倍的活动。我过去能够为这个程序找到几个严重性很高的漏洞,所以我对这个平台很熟悉,主平台非常坚固,所以我知道我必须采取不同的方法。
我决定“包抄”应用程序,而不是针对主要功能——专注于被忽视的端点和非常规的攻击面。该程序为您提供测试凭据,因此您可以直接登录测试环境并在具有数百个功能和端点的主应用程序中花费无数小时,这种方法在涉及活动的情况下效果不佳,采用直接方法意味着覆盖的领域太多,可能许多其他猎人正在研究相同的功能。
如果我这次要找到一个关键问题,我应该从侧面攻击应用程序,我的意思是关注被忽视的端点和功能,这些端点和功能在查看应用程序时不会自然出现。我开始在他们的应用程序和注册过程中四处寻找常见的嫌疑人 — 授权不当、IDOR 或一些配置错误的端点。
但后来,有些事情引起了我的注意。由于这是一家金融公司,注册过程并不简单,您必须使用您的财务信息创建申请表,然后提交以供批准。申请中的信息包括极其敏感的 PII,包括 SSN、居住地址、电子邮件和就业信息。
在注册过程中发现奇怪的代币
旅程从我访问注册页面开始:
https://example.com/test/apply/information
我填写了一些基本信息(姓名、电子邮件和其他详细信息),然后单击“下一步”。我在后台运行 Burp Suite,捕获所有请求。
这时我注意到了一些有趣的事情。服务器在标头中使用会话令牌进行响应:Set-Cookie
Set-Cookie: redactedSession=d54f59dbr202bb056df90ff55bc1e6611279; path=/
会话令牌总是值得研究的。它们掌握着用户身份验证和授权的关键,如果管理不善,可能会导致严重的安全问题。
但真正引起我兴趣的是什么呢?它看起来像一个 SHA-1 令牌,自然而然地,这个令牌永远不会过期。 JWT 令牌可能会过期,因为它们的有效负载中包含“exp”(过期)声明,对有效性施加时间限制,而 SHA1 令牌只是哈希值,没有任何内置的过期机制或时间感知。
步骤 2:调查令牌的行为
我知道,如果此令牌以任何方式泄露,攻击者可以简单地将其应用为会话 Cookie 并从受害者那里检索敏感信息。我继续注册过程,填写更多个人详细信息。最后,我到达了最后一步 — 帐户创建成功!应用程序将我重定向到此页面:
https://example.com/apply/information/?s=success&token=50e3ab903b3a054835d1b2d74c4bbd711278
看到那个参数了吗?那是我的会话令牌,直接嵌入到 URL 中。token
为什么这很糟糕?因为 URL 经常被记录、存储在浏览器历史记录中,甚至被搜索引擎索引。这意味着我的会话令牌可能对以下人员可见:
- 搜索引擎
(如果已编入索引) - 第三方分析服务
- 存储 URL 请求的服务器日志
为了证实我的怀疑,我复制了会话令牌并提出了一个简单的请求:
GET /apply/information/test.step.php HTTP/2Host: example.comCookie: redactedSession=50e3ab903b3a050035d1b2d74c4bbd711278
成功。 我的所有个人数据都被显示出来了——社会安全号码、出生日期、家庭住址、电子邮件。无需身份验证。
我现在所要做的就是尝试找到公开的令牌。
这是在野外发生的吗?(谷歌 Dorking 来救援)
在这一点上,我知道这很严重。但还有一个问题:这些会话令牌是否已经暴露在某个地方?
为了找出答案,我使用了古老但有效的 - Google Dorking。
我设计了一个简单的搜索查询来查找包含注册路径的索引 URL:
site:example.com /apply/
就这样。我发现多个在 Google 上编入索引的注册 URL,每个 URL 都包含持久会话令牌。
我单击其中一个结果,从 URL 复制令牌,并使用它发出请求。
成功了。 我可以访问其他人的敏感信息。
此时,我意识到这不仅仅是一个边缘情况 — 它在生产中积极暴露了真实的用户数据。
Wayback Machine 的作用
在这一点上,我想知道:这种情况已经发生了多久了?
进入 Wayback Machine。 这个 Internet 档案会随着时间的推移保留网页的快照,这意味着即使公司修复了漏洞,旧版本可能仍包含暴露的敏感信息。
我在 Wayback Machine 上搜索了存档的注册页面:
https://web.archive.org/web/*/https://example.com/apply/information/*
果然,我找到了注册 URL 的旧实例 — 其中一些包含仍然有效的会话令牌。
为了在所有可能的来源(如 AlienVault、CommonCrawl 等)中搜索更多公开的 URL,我使用了 Gau:https://github.com/lc/gau
这证明,这个漏洞可能已经存在了数月,甚至数年,并影响了数百名客户。
第三方数据泄露
就在我认为事情不会变得更糟时,他们确实变糟了。
在分析我的 Burp Suite HTTP 历史记录时,我搜索了我的会话令牌,以查看它被发送到的其他位置。就在这时,我发现了另一个泄漏:
我的令牌被传输到第三方分析服务,包括:
https://bat.bing.com
https://www.google-analytics.com
这意味着外部公司在不知情的情况下通过跟踪脚本接收了身份验证令牌。
这种数据泄露对攻击者来说是一座金矿,因为它允许他们收集泄露的会话令牌,甚至无需与网站交互。
影响:为什么这是一个关键漏洞
此问题很严重,原因如下:
- 未经身份验证的数据泄露
— 任何拥有会话令牌的人都可以访问受害者的敏感数据,包括 SSN、地址和出生日期。 - 持久会话令牌
— 令牌永不过期,这意味着攻击者可以无限期地使用泄露的令牌。 - 通过搜索引擎进行公共索引
— Google 存储这些 URL,使任何人都可以访问它们。 - 泄露给第三方
— 敏感的身份验证令牌被发送给分析提供商,从而扩大了攻击面。
我因这个严重漏洞获得了 15000 USD 的赏金。
关键要点
1. 始终检查会话令牌
-
检查它们的分配方式。 -
查看它们是否过期。 -
测试攻击者是否可以重复使用它们。
2. 在 URL 中查找公开的令牌
-
如果您在查询参数中看到身份验证令牌,则这是一个危险信号。 -
尝试搜索这些 URL 的索引版本。
3. 使用 Google Dorking 查找暴露的数据
一些有用的查询:
-
https://gist.github.com/sundowndev/283efaddbcf896ab405488330d1bbc06
4. 不要忘记 Wayback Machine
-
如果您怀疑存在漏洞,请检查该网站过去的快照。 -
有时,修复错误并不能消除历史曝光。
结论
最初是简单的注册流程分析,后来变成了发现一个影响很大的漏洞。
通过遵循结构化流程 — 检查会话处理、使用 Google Dorking、利用 Wayback Machine 并分析流量泄漏 — 我能够发现一个严重的数据泄露问题。
对于漏洞赏金猎人来说,这是一个完美的例子,说明了为什么耐心、好奇心和毅力会得到回报。有时,只需在 URL 中发现一个小细节,就可以解开更大的东西。
原文始发于微信公众号(安全狗的自我修养):通过持久会话令牌公开 PII 和 SSN — 15000 美元的漏洞赏金
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论