引言
上一篇所介绍源码信息收集,主要针对目标站点不可见的后端源码进行收集,往往能收集到的概率小但危害较大。而本篇则介绍针对前后端分离&前端Web的JS的信息收集,由于源码本身可见,因此收集重点从源码转为源码中的敏感信息。
目录
一、什么是JS渗透测试?
JavaScript 中同样包含变量和函数,当存在可控变量以及函数调用时,就可能出现参数类漏洞。与 PHP、Java、.NET 等后端语言开发的 Web 应用不同,基于 JavaScript 的 Web 应用即使没有直接访问源代码,也可以通过浏览器的“查看源代码”功能轻松获取真实的代码片段,例如 URL 地址、JS 敏感信息以及代码中的参数传递逻辑。因此,从某种意义上讲,基于 JavaScript 开发的 Web 应用更接近于白盒测试(默认可参考源码)。通常情况下,渗透测试人员会重点分析 JS 文件中暴露的更多 URL 地址,并深入研究其中的代码逻辑(如加密算法、API Key 配置、验证逻辑等)以发现潜在的安全隐患。
需要注意的是,虽然使用 PHP 开发前端也是可行的,但由于 PHP 中存在一些潜在的危险函数,这使得其安全性相对较弱。相比之下,只要合理控制,js相比 PHP 能够提供更高的安全性
二、JS常见安全问题
源码泄漏
未授权访问=JS里面分析更多的URL访问确定接口路径
敏感key泄漏=JS文件中可能配置了接口信息(云应用,短信,邮件,数据库等)
API接口安全(代码中加密提交参数传递,更多的URL路径)
三、常见JS框架&判定JS开发
常见JS框架
Vue,NodeJS,jQuery,Angular等。
如何判定JS开发应用?
1. 插件wappalyzer
2. 源程序代码简短
3. 引入多个js文件
4. 一般有/static/js/app.js等顺序的js文件
5. 一般cookie中有connect.sid
四、测试方式
4.1手动测试
1、筛选出JS文件
2、ctrl+shift+f全局搜索关键字
src=
path=
method:"get"
httþ.get ("
method:"post"
http.post ("
$.ajax
http://service.httppost
http://service.httpget
4.2、半自动
4.2.1burpsuitepro官方插件
JS Miner、JS Link Finder
4.2.2 第三方插件
1. Unexpected information项目地址:
https://github.com/NSA-ksh/Unexpected
2. BurpAPIFinder源码
https://github.com/shuanx/BurpAPIFinder
源码下载下来以后需要打包成jar才能载入burpsuitepro。
apt install maven
mvn clean package
效果图:
打包完成后正常载入burp即可
3. HaE
https://github.com/NSA-ksh/HaE
HeA安装完成后,应当改进规则以对不同的信息泄露显示不同颜色。
规则配置:直接将默认的config.yml替换成上面项目中的,最后点击载入即可。
效果图
4.3自动化工具
1. 浏览器插件:findsomething
该插件会收集当前标签页的源码以及其中包含的 JavaScript 链接,然后将这些 JS 链接重新加载,以获取对应的 JS 源码。接着,它会从提取到的 HTML 和 JS 源码中,通过正则匹配的方式寻找其中的敏感信息,并将匹配到的结果进行展示。
2. JSfinder
作为一款老牌的 JavaScript 挖掘工具,JSFinder 曾经在相关领域发挥过重要作用。然而,由于长期无人维护,我在实际使用过程中遇到了不少问题,因此并不推荐这款工具。
https://github.com/Threezh1/JSFinder
3. URLFinder:JSfinder的升级版
由于 JSFinder 项目长期无人维护,后来有安全研究人员对其进行了改进,推出了更加优秀的工具URLFinder。作为 JSFinder 的升级版本,URLFinder 在性能和功能上都有显著提升。它不仅检索速度更快,而且能够覆盖更广泛的内容,非常适合用于自动化收集 JavaScript 文件中的相关信息。因此,在进行 JavaScript 信息收集时,URLFinder 是一个更为推荐的选择。
https://github.com/pingc0y/URLFinder
4. ffuf
FFUF 的工作方式与 JSFinder 和 URLFinder 存在显著区别。JSFinder 和 URLFinder 的 JS 敏感信息收集方法主要依赖正则匹配、递归等技术,在浏览器接收到的 JS 文件基础上进行分析。而 FFUF 则采用了完全不同的思路,它利用模糊测试的方式,通过加载大字典文件对目标 Web 应用中可能存在的 JS 文件进行全面扫描,特别适用于那些未被发送到客户端但仍可能存在的重要 JS 文件,从而帮助用户挖掘出更多隐藏的信息。因此,FFUF 可以被视为一款功能强大的模糊测试工具,非常适合用于 FUZZ 模糊化 JS 文件的场景。
https://github.com/ffuf/ffuf
由于使用ffuf需要提前准备字典,so 这里分享一个字典站:
https://wordlists.assetnote.io/
在下载字典文件时需要注意,由于该文件是 .txt格式,无法通过直接点击链接完成下载。正确的操作步骤如下:
1. 右键点击下载链接,然后选择“将链接另存为”。
2. 在弹出的保存对话框中,选择目标保存位置并确认。
5. Packer-Fuzzer
Packer-Fuzzer 是一款专为 Webpack 等前端打包工具构建的网站快速、高效且安全的检测扫描工具,尤其适用于通过 Webpack 打包后的混淆 JavaScript 文件。由于 Webpack 会对生成的 JS 代码进行混淆处理,传统的信息收集方法往往难以获取准确的结果。而 Packer-Fuzzer 能够针对这些混淆后的 JS 文件进行高效的敏感信息收集,并支持部分漏洞检测功能。在扫描完成后,该工具会自动生成详细的检测报告,帮助用户全面了解目标网站的安全状况。
https://github.com/rtcatc/Packer-Fuzzer
使用:
# 进入目录
cd Pack-Fuzzer
# 创建虚拟环境
python3 -m venv myenv
# 激活虚拟环境
source myenv/bin/activate
# 在虚拟环境中安装依赖
pip install -r requirements.txt
# 运行程序
python3 PackerFuzzer.py -u http://url
# 退出虚拟环境
deactivate
示例:
6. jjjjjjjjjjjjjs
针对webpack站点,爬取网站JS文件,分析获取接口列表,自动结合指纹识别和fuzz获取正确api根,可指定api根地址(针对前后端分离项目,可指定后端接口地址),根据有效api根组合爬取到的接口进行自动化请求,发现未授权/敏感信息泄露,回显api响应,定位敏感信息、敏感文件、敏感接口。支持批量模式。支持需认证接口自动尝试bypass。
https://github.com/ttstormxx/jjjjjjjjjjjjjs