秒杀JS异步加载光速出洞 —— JSHack脚本
大家好,今天我们来聊一聊JavaScript异步加载的原理,以及如何利用这些知识来增强网络安全检测。我们将介绍prefetch
、preload
与JS异步加载的关系,并展示一个实用的油猴脚本——JSHack。
JavaScript异步加载原理
在现代Web开发中,JavaScript已经成为不可或缺的一部分。为了提升页面加载速度和用户体验,JavaScript文件的异步加载技术变得尤为重要。
什么是异步加载JS
同步加载方法通常使用 script 标签直接在HTML文档中嵌入或链接外部JavaScript文件,这种方式下,浏览器会等待JavaScript文件加载并执行完成后,才会继续解析HTML文档的其余部分。而异步加载JavaScript可使用 async 或 defer 属性在 script 标签中实现。异步加载允许浏览器继续解析HTML,不必等待JavaScript文件的加载和执行。(引用自奇安信攻防社区文章:利用js挖掘漏洞)
https://forum.butian.net/share/3915
实战案例
在实际的渗透测试中,通过对js的挖掘可以发现诸多安全问题。例如,通过异步加载的JavaScript文件可能包含敏感信息,或者在加载过程中存在可被利用的漏洞。
第一个案例大家可以直接去奇安信攻防社区查看:中铁13层打工人 这个大佬的文章: 利用js挖掘漏洞)
那么直接开始我的案例:
这是上个月我遇到的一个站点,习惯性灯塔模块全开(因为有授权),WIH结果中出现了一个js代码中账户密码泄露,但是我在目标站点F12搜索,怎么也找不到这个泄漏点,我甚至怀疑是误报,但是直接访问对应js链接发现确实是存在泄露
问了一下做前端的好兄弟,终于明白是js异步加载,然后对前端html页面进行启用本地替代,修改了加载规则 替代前:
搜索密码搜不到
替代后:
搜索到了密码
那么又考虑到每次修改还是很麻烦的,所以决定做成脚本武器化便于迅速发现前端一些敏感信息泄露。
JSHack脚本:快速检测JS异步加载
在这样的背景下,我们开发了JSHack脚本,这是一个油猴脚本,用于自动将网站中的JS资源加载方式从prefetch
修改为preload
,以便更快地检测潜在的安全问题。
脚本原理
JSHack脚本通过修改HTML中的link
标签,将rel="prefetch"
更改为rel="preload"
,并指定as
属性为style
或script
。这样做的目的是确保关键的JS资源能够被浏览器优先加载,从而加快安全检测的速度。
如何使用JSHack脚本
要使用JSHack脚本,您需要先安装ScriptCat,然后安装JSHack脚本。以下是安装步骤:
-
1. 安装ScriptCat: 访问ScriptCat官网 ScriptCat 并按照指引安装ScriptCat浏览器扩展。 -
2. 安装JSHack脚本: -
• 打开ScriptCat浏览器扩展。 -
• 访问JSHack脚本页面 JSHack https://scriptcat.org/zh-CN/script-show-page/2558
-
• 点击安装按钮,按照提示完成脚本的安装。
联动bp插件HaE、CaA
脚本优势
-
1. 快速检测:通过预加载关键JS资源,可以快速检测前端敏感信息泄露。 -
2. 联动工具:推荐与浏览器插件如HaE、CaA联动使用,提高检测效率。 -
3. 统计功能:脚本会在控制台输出预加载的JS数量,方便用户了解当前页面的资源加载情况。 -
4. 彩色日志:为了便于调试,脚本的控制台输出采用了彩色日志,使得关键信息一目了然。 -
5. 更迅速通用:与 async
和defer
调试方法相比,JSHack脚本的方法更迅速通用,因为它直接修改了资源的加载优先级,而不是依赖于浏览器的异步加载机制,也不需要每次手动爬取JS编写JS脚本。
结语
网络安全是一个不断发展的领域,而前端安全检测是其中的重要一环。JSHack脚本的诞生,正是为了帮助安全研究人员和开发者更快地发现和修复潜在的安全问题。我们相信,通过不断优化和更新这样的工具,我们可以为网络安全贡献一份力量。
此心安处是吾乡,愿每一位网络安全从业者都能找到属于自己的一片天地。
原文始发于微信公众号(朱厌安全):秒杀JS异步加载光速出洞 —— JSHack脚本
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论