webpack信息泄露-【XSSI】动态JS绑架用户信息-Webpack+JSONP绑架

2023-08-21 0 573 百度已收录

注:本文已对敏感信息进行脱敏处理,如有雷同,纯属巧合。

前言

在做测试的时候,发现一个请求:

POST /user/getUserInfo HTTP/1.1
Host: xxxxx
Cookie: xxxx

ticket=xxxxx

对应的返回信息中包含了我自己用户的敏感信息:手机号码、姓名、邮箱地址……

通过BurpSuite的插件Logger++搜索,发现ticket值居然出现在JS文件中:

webpack信息泄露-【XSSI】动态JS绑架用户信息-Webpack+JSONP绑架

识别漏洞

通过测试,我发现上述请求中的cookie是无效的请求头,并且后端没有进行对齐校准,而是对ticket进行了校准,也就是说这里的ticket代表的是获取用户信息的关键参数。 换句话说:当你知道用户信息时,可以通过用户的ticket参数获取到用户信息。

判断JS动静

当我在Logger++插件中搜索,发现JS文件内容中存在ticket值时,我首先想到的是JS文件是动态类型,其文件内容随着用户账号数组的变化而变化。

测试:删除cookie数组,结果:ticket参数值消失,因此可以判断JS内容是动态类型。

然后尝试将测试账户A的cookie数组内容替换为测试账户B的cookie数组内容webpack信息泄露,结果:ticket参数的值变成了测试账户B的用户对应的值,因此可以确定JS文件的路径是固定的,不是动态路径。

Webpack+JSONP劫持

已知的JS文件路径是:

查看其文件内容,发现已经被Webpack打包:

那么如果我们想绑架这个JS文件的内容,也许我们可以使用JSONP的PoC代码(因为这个JS文件的内容是自定义函数+传入参数):

webpack信息泄露-【XSSI】动态JS绑架用户信息-Webpack+JSONP绑架

<script>
function webpackJsonp(data) {
alert(data)
}
</script>
<script src="https://website/app.xxxxx.js"></script>

但是这样我们就得不到我们想要的票值了。 简单看了一下JS代码,这段JS代码内容的格式如下:

webpackJsonp函数传入两个参数:第一个参数无用,第二个参数传入的值包含我们想要的票值。

那么上面的代码可以这样改:

<script>
function webpackJsonp(data, data1) {
alert(data1)
}
</script>
<script src="https://website/app.xxxxx.js"></script>

但我们仍然没有得到我们想要的信息:

webpack信息泄露-【XSSI】动态JS绑架用户信息-Webpack+JSONP绑架

由于第二个参数传入的值还需要解析,我发现这个值的内容是一个JSON对象,并且该对象的每个属性都在定义一个函数:

找到票所在函数的位置,发现是在jbTV:function....知道了函数的位置,PoC代码只需要这样改进即可:

<script>
function webpackJsonp(data, data1) {
alert(data1['jbTV'])
}
</script>
<script src="https://website/app.xxxxx.js"></script>

访问,成功获得:

后面只需要添加一点规律就可以了~

攻击方式

在用户登录状态下webpack信息泄露,访问漏洞页面,触发获取ticket值,并将该值带入上面列出的请求中,即可未经授权获取用户信息

结尾

小心,漏洞就在你面前,

urlscan.io网站被发现窃取了大量用户的敏感URL。 文档共享、密码重置、团队邀请等敏感链接可以通过手动工具进行挖掘。 这些配置错误的安全编排、自动化和响应 (SOAR) 工具的用户面临着帐户因自动触发的密码重置而被劫持的高风险。

Github数据泄露

去年 2 月,GitHub 向受影响的客户发送了一封电子邮件,告知他们数据泄露事件。 具体来说,通过 GithubPages 启用私有存储库托管的用户的存储库名称及其用户名被盗。

虽然开发者尚未公开承认该漏洞,但我只是通过 HackerNews 上的一篇文章才了解到该漏洞。

GitHub 从 GitHub 员工的内部发现中了解到,GitHubPages 站点是从 GitHub 上的私人存储库发布的,并作为手动过程的一部分发送到 urlscan.io 进行元数据分析。

GitHub 对此的回应是“修复手动发送 GitHubPages 网站进行元数据分析的过程,以便仅发送公共 GitHubPages 网站进行分析”,并要求第三方删除数据。

什么是 urlscan.io?

urlscan.io 是一项免费的网站扫描和分析服务。 当 URL 提交到 urlscan.io 时,手动过程会像普通用户一样导航到该 URL,并记录页面导航创建的活动。 这包括链接的域和 IP、从这些域请求的资源(JavaScript、CSS 等)以及有关页面本身的其他信息。

urlscan.io 将自己描述为“网络沙箱”。 您可以提交 URL,然后以各种方式分析和扫描它们。 主要用于检测钓鱼网站等恶意网站。 除了剖析通过网站提交的 URL 之外,urlscan.io 还扫描公共数据源中的 URL,并提供 API 将检测集成到其他产品中,这导致了 GitHub 私有存储库 URL 的系统性数据泄露。

海量数据扫描

截至撰写本文时,登陆页面引用了过去 24 小时内进行的 120,000 次公共扫描、70,000 次非公开扫描和 430,000 次私人扫描。 它还包括“最近扫描”视图,这是典型的安全扫描网站。 但更令人惊讶的是使用广泛的 ElasticSearchQueryString 语法搜索所有历史数据(作为未经身份验证的用户)的选项。 GitHub的通知短信中也提到了这一点:

urlscan.io 在大约 30 秒内执行配置文件,或者使用将在搜索结果中返回配置文件的查询进行临时搜索。

对于每个扫描结果,该服务还提供丰富的信息:

提交的URL(包括所有GET参数);

重定向时有效的 URL;

抓取/扫描 URL 时执行的任何 HTTP 请求;

有关要通信的 IP 和域的信息;

扫描过程中捕获的页面截图;

网站的完整 HTML 响应;

在 urlscan 和其他加载的资源上捕获的 OAuth2 重定向流。 提交的 URL 还包含 Web 应用程序可能不希望公开的 UUID。

大量集成

urlscan.io 文档页面列出了 26 个商业安全解决方案,这些解决方案通过 Palo Alto、Splunk、Rapid7、FireEye 和 ArcSight 等供应商的 API 集成服务。 GitHub 在内部直接使用这个 API 作为其 SaaS 产品的一部分,但它没有出现在这个列表中,可能还有更多的企业客户。

urlscan 集成在各种商业安全工具中

如果此类工具/API 的用户无意中执行公共 URL 扫描,可能会导致系统数据泄露。 由于此类先进的安全工具大多安装在大型公司和政府机构中,因此被盗的信息可能非常敏感。

除了商业产品之外,集成页面还列出了 22 个开源项目,其中一些是信息收集工具,另一些是简单的库实现,以便更容易查询 API。

哪些敏感数据可能被泄露?

由于此 API 的集成类型(例如,使用扫描每封传入电子邮件并对所有链接执行 urlscan 的安全工具)以及数据库中的数据量,匿名用户可以搜索和检索各种类型的敏感数据。

webpack信息泄露-【XSSI】动态JS绑架用户信息-Webpack+JSONP绑架

urlscan.iodarks

请在下面找到一组可点击的“urlscan.iodorks”和编辑后的示例结果,请注意,在向 urlscan.io 报告我们的发现后,他们为下面的许多 dork 添加了删除规则。

密码重置链接

Instagram密码重置确认页面,恳求用户输入新密码两次

帐户创建链接

Zendesk 上 NBC 新闻帐户的初始密码设置页面

API密钥

包含有效 VirusTotalAPI 密钥的链接

电报机器人

TelegramAPIURL 包含一个长秘密标识符,可用于调用机器人上的不同 API 方法。

DocuSign 签名请求

DocuSign 签名请求通常包含带有敏感信息的协议文档

共享 GoogleDrive 文档

Dropbox 文件传输

分享点邀请

由于 SharePoint 工作区与组织相关联,因此子域已经给出了邀请的目的。

不和谐邀请

webpack信息泄露-【XSSI】动态JS绑架用户信息-Webpack+JSONP绑架

搜索查询返回了 7000 多个不同社区的 Discord 邀请代码。

政府Zoominvite

比 Discord 邀请更敏感的可能是 Zoom 邀请,尤其是法庭听证会。

WebEx 会议纪要

贝宝发票

PayPal 托管的收据实际上包含有效收据所需的所有(个人)信息,并且任何人都可以通过其 ID 进行检索。

Paypal 索赔请求

Paypalmoneyclaimrequest“仅”预先填写目标的电子邮件地址(以及金额和发件人),显示的信息比收据少一些。

包裹追踪链接

还可以找到各种邮政服务的包裹跟踪链接。 有趣的是,DHL虽然意识到跟踪代码泄露的风险,但在透露发件人地址之前会询问发件人的邮政编码。 注意:由于美国只有 8,000 个邮政编码,并且一般区域是通过包裹跟踪获知的,因此这些代码可能是可预测的。

亚马逊礼品运送链接

亚马逊礼品递送链接泄露送礼者姓名和礼物

取消订阅链接

HIBP 取消订阅链接允许对本身未显示在页面上的域进行非法通知

在PayPal取消订阅页面上,用户的电子邮件地址被完整显示。 其他一些服务至少会部分编辑取消订阅页面上的电子邮件地址。

有趣的是,当我在二月份进行第一次搜索时,我可以找到很多有趣的 Apple 域名 URL:

允许设置新密码的 Apple Developer ID 激活页面

webpack信息泄露-【XSSI】动态JS绑架用户信息-Webpack+JSONP绑架

最终的 AppleID 页面允许设置密码,看起来像 Gamestop 帐户

家庭共享邀请、使用他人订购的订阅的权限,甚至访问家庭照片和设备位置

仅限企业在线活动邀请

事实上,iCloud 还可以创建公共共享链接,这些链接是通过 urlscan.io 泄露的。

对于 iCloud 日历邀请,Apple 实际上创建了包含所有信息的链接。

与此同时,这些信息显然已被隐藏或从数据库中删除:

今天搜索 apple.com 及其子域仅返回两个结果

然而,当继续监控上述结果页面时,有时会发现一些新的附加条目,这些条目在大约10分钟内再次消失。

后来我们发现,苹果还要求通过定期删除所有符合特定规则的扫描结果,将其域名排除在扫描结果之外。

总体而言,urlscan.io 服务包含各种类型的敏感信息,黑客、垃圾邮件发送者或犯罪分子可以利用这些信息来接管帐户、窃取身份或进行可信的网络钓鱼活动。

数据从哪里来?

我们可以从扫描结果的详细信息中看出扫描是否是通过API提交的,但我们很难找到哪个应用程序或集成提交了扫描请求。

因此,我们有两个选择:

联系受影响的用户。 向泄露电子邮件地址的用户发送短信,告诉他们盗窃事件并询问可能是罪魁祸首的任何安全工具。

联系 urlscan.io。 发送可疑手动提交列表,并要求 urlscan 调查是否有任何集成意外将扫描选项设置为公开。

我们决定同时进行这两项工作,并开始联系用户,同时编制扫描结果列表并发送给 urlscan.io。

联系用户

我们向电子邮件地址在 API 启动扫描中遭到泄露的个人发送了 23 封电子邮件(其中 15 封来自取消订阅链接,5 封来自 PayPal 收据,2 封来自密码重置链接,1 封来自 PayPal 索赔)。

将发送一封示例电子邮件,其中包含指向相应 urlscan 结果页面的链接,顶部有一个测试链接。

通知短信的末尾是一个带有唯一 UUID 的“诱饵链接”,用于测试是否有任何 URL 会被手动提交到 urlscan.io。 如果是这种情况,唯一的令牌将允许我们将扫描请求与电子邮件发件人相关联。

在我们发送的 23 个测试链接中,有 9 个(约 40%)通过 API 提交到 urlscan.io(在发送相应电子邮件后立即提交):

短信中包含的“私有”测试链接的公开结果通知(请注意,单个 URL 会被扫描多次)

如果不估计 PayPal 收据(实际上可能是欺诈活动的一部分),成功率为 50%。 第二天,我们又向泄露的 hubspot 取消订阅链接电子邮件地址发送了 24 封电子邮件,其中 12 封(再次是 50%)触发了公共扫描。

这个“pingback”向我们展示了几件事:

我们假设有一个配置错误的安全工具,它将通过短信收到的任何链接提交给 urlscan.io 作为公共扫描,尽管这是正确的。

使用此类配置错误的安全工具的用户面临丢失所有在线帐户的高风险。

webpack信息泄露-【XSSI】动态JS绑架用户信息-Webpack+JSONP绑架

看似不太严重的 urlscan.io 调查结果(例如来自取消订阅链接的电子邮件地址)可能会产生重大影响。

对于有多个电子邮件地址或系统受到威胁的组织,我们还尝试直接联系 IT/安全部门。

当没有答案或没有适当的报告联系方式时,我们也会尝试通过 Twitter 进行联系。

不幸的是,我们既没有收到对发送给受影响个人的任何数据泄露通知短信的回复,也没有收到存在系统性问题的组织的任何反馈。

不仅仅是一个例外webpack信息泄露,在向某人发送了就业协议的 DocuSign 链接后,他们的雇主联系了我们,展开了调查,并授予了错误赏金。 他们将泄漏的根源确定为“安全编排、自动化和响应指南与正在积极开发的 urlscan.io 集成的错误配置”。

联系 urlscan.io

我们还向 urlscan.io 解释了这些情况,因为受影响的用户没有太多反馈。

如果集成开发人员遵循 urlscan.io 的文档,即为库/集成使用自定义 HTTP 用户代理字符串(包括适用的软件版本),那么识别扫描请求的源软件应该很容易。

因此,我们询问他们是否可以生成一个用户代理列表,触发与我们联系的人相关的扫描,以及我们自己的诱饵链接的扫描,以及他们是否愿意与我们分享这个列表。

总的来说,urlscan.io 团队反应非常积极,愿意调查并与我们合作来改善当前的情况。

查看用户代理列表发现,许多 API 集没有遵循上述建议,超过一半的扫描是由通用“pythonrequests/2.XY”用户代理发起的。

用户代理可以轻松识别的两种解决方案是:

XSOAR 位于帕洛阿尔托;

泳道;

对用于启动“python-requests”用户代理扫描的 API 条目的进一步调查显示,其中许多条目也是为 PaloAlto 的 XSOAR 生成的。 其他生成的目的是:

IBMResilient(现为“IBMSecurityQRadarSOAR”);

Splunk Phantom(现为“Splunk-SOAR”);

岱凯的飙升;

那么,这些数据从哪里来呢?

SOAR 平台允许组织自定义编写不同的数据源并将其与安全工具和服务连接。 为了简化开发,该平台提供了与多个第三方服务的集成,例如 thisXSOARurlscan.iopack。 安装此软件包后,playbook 可以从传入电子邮件中提取 URL 并使用可选参数命令 !urrl=https://example.com using="urlscan.io"。

这些扫描的可见性取决于:

1. 作为命令一部分提交的参数,

2、整合范围配置;

3.关联urlscan.io的可见性设置账户/团队。

因此,扫描可能会被错误地传送到公共域:

1. 发生编程错误或 urlscan.io 配置错误时的集成或帐户可见性设置,例如窃取员工雇佣协议的公司所发生的情况;

2. 如果集成本身存在不尊重用户选择的可见性的漏洞,如 PaloAltoXSOARurlscan.iopack 所发生的情况。

参数 […] 已配置默认值 public,此参数将覆盖与可见性相关的所有其他设置。 因此,对于没有明确为这个新引入的参数提供值的所有命令调用,所有扫描都以公共可见性执行。

回复

根据我们的调查结果,urlscan.io 联系了他们认为提交了大量公共扫描的客户,并开始审查流行的第三方集成(例如 SOAR 工具的集成),以确保他们在可见性方面尊重用户意图。

据悉,他们实施了以下变更:

添加了此处显示的哑修剪规则,以定期修剪与搜索模式匹配的扫描结果;

webpack信息泄露-【XSSI】动态JS绑架用户信息-Webpack+JSONP绑架

突出显示 UI 中的默认可见性设置;

添加了在团队范围内设置最大可见性的选项;

urlscan.io 还发表了一篇题为“扫描可见性最佳实践”的博客文章,解释了扫描可见性设置,鼓励用户经常检查其提交的内容,并详细介绍了 urlscan 为避免这种泄漏而采取的措施。

如果敏感数据仍然泄露,他们提供以下选项:

受影响的用户可以通过“报告”设置报告带有敏感数据的扫描结果,这将立即禁用它们;

希望将其域名或特定 URL 模式排除在扫描之外(或删除相应的现有结果)的公司可以联系 urlscan.io;

发现系统漏洞的安全研究人员也请联系 urlscan.io;

帐户接管

被动搜索历史urlscan.io数据已经发现了大量敏感信息,与“主动检测”相结合可以大大降低泄露风险。

正如我们在上面看到的,大约 50% 的用户窃取了 urlscan.io 中的取消订阅链接,任何传入电子邮件中的任何链接都将立即提交给 urlscan 作为公共扫描。

我们可以通过抓取 urlscan.io 来获取电子邮件地址(例如,在取消订阅页面中,甚至只是在 URL 本身中),通过电子邮件向他们发送“诱饵链接”,然后检查 urlscan.io 链接,从而找到这些配置错误的客户端。

我们可以利用这些行为,通过主动触发各种网络服务(例如社交媒体网站、其他短信提供商或 CCB)上受影响的电子邮件地址的密码重置,然后在 urlscan 数据库中检测相应域的最新扫描结果来接管帐户这些用户。 搜索其他数据泄露(例如使用 HaveIBeenPropown 查找此类电子邮件地址)也可能会提供有关用户注册的服务的提示。

对于企业电子邮件地址、自定义登录门户和流行的企业 SaaS,在 Google 上查找现有帐户并触发密码重置可能会非常有趣。

但是,即使还没有特定服务的帐户,只需使用公司电子邮件地址创建一个新帐户就可以访问存储在该服务上的内部公司数据。

右图说明了执行帐户接管攻击的所有必要步骤:

将被动搜索与主动检测配置错误的客户端以及触发密码重置相结合,可以大大减少任何单个 urlscan.io 漏洞的影响。

安全建议

作为网络服务的所有者,您可以确保您的密码重置和类似链接提前过期,并且不会通过潜在的公共链接向未经身份验证的用户泄露不必要的信息。 在取消订阅页面上,编辑用户的电子邮件地址,并在显示 PII 之前要求额外的身份验证/信息(就像许多包裹跟踪网站在显示完整地址之前需要邮政编码一样)。 实现 API 身份验证时,不要通过 GET 参数接受 API 密钥,而是需要使用单独的 HTTP contax。

据悉,您还可以搜索urlscan.io和其他服务本身是否有任何数据泄露,对于您自己的网络服务或组织,请删除/排除,例如禁用和逆转任何泄露的API密钥的用户。

urlscan.io 集成服务的用户/安全团队应检查其命令、集成和帐户可见性设置,保持集成最新,定期检查提交的扫描并查看 urlscan.io 博客文章以获取更多信息。

总结

urlscan.io 通常有助于保护用户,但它也存储敏感的用户信息,其中一些信息是公开的并且可以被攻击者搜索。

垃圾邮件发送者可以使用该信息来收集电子邮件地址和其他个人信息。 攻击者可能会利用它来接管帐户并进行可信的网络钓鱼活动。 安全研究人员还可以使用它来发现隐藏的管理门户、获得立足点或发现潜在目标。

urlscan.io网站被发现窃取了大量用户的敏感URL。 文档共享、密码重置、团队邀请等敏感链接可以通过手动工具进行挖掘。

与 GoogleDorking 或通过公共 S3 存储桶搜索类似,urlscan.io 挖掘揭示了许多原本无法公开获得的信息。 不同的是,通过微软或者公共S3存储桶中可以找到的信息实际上已经是公开的,并且提交给urlscan的URL。 用于公共扫描的 IO 可能包含身份验证令牌,并且来自安全解决方案发送给个人的私人电子邮件。 在这些情况下,引入额外的安全工具实际上可以提高系统的安全性。

本文档确实对提交的 URL 中的个人身份信息发出警告,但仅建议将此类扫描标记为不列出:

1. 从 URL 中剥离 PII 或将此类扫描提交为“未列出”时要小心,例如,当 URL 包含电子信息时

这些扫描至少是“在 urlscanPro 平台上进行的,并经过安全研究人员和安全公司的审查”

电子邮件地址。

2. 未列出的

个人身份信息

仍然可见”。据了解webpack信息泄露,此警告并未解决返回页面而不是 URL 本身的风险。

3.定价和API配额也非常支持公共扫描的使用。 该服务无法有效主动避免 PII 泄露。 例如,简单搜索 page.url:@gmail.com 最多可返回 10,000 个结果。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 webpack webpack信息泄露-【XSSI】动态JS绑架用户信息-Webpack+JSONP绑架 https://www.wkzy.net/game/135810.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务