【JS渗透】JS架构&框架识别&API接口枚举&FUZZ爬虫

引言

        上一篇所介绍源码信息收集,主要针对目标站点不可见的后端源码进行收集,往往能收集到的概率小但危害较大。而本篇则介绍针对前后端分离&前端Web的JS的信息收集,由于源码本身可见,因此收集重点从源码转为源码中的敏感信息。

目录

一、什么是JS渗透测试?

二、JS常见安全问题

三、常见JS框架&判定JS开发

四、测试方式

4.1手动测试

4.2、半自动

4.2.1burpsuitepro官方插件

4.2.2 第三方插件

4.3自动化工具


一、什么是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 源码。接着,它会从提取到的 HTMLJS 源码中,通过正则匹配的方式寻找其中的敏感信息,并将匹配到的结果进行展示。

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值