一、课程概述与核心概念
1.1 前后端架构本质差异
表格
| 维度 | 后端渲染应用(PHP/Java/Python/.NET) | 前端JS架构应用(Vue/React/Angular) |
|---|---|---|
| 代码可见性 | 服务端执行,浏览器不可见源码 | 浏览器完全可见源码,与服务器一致 |
| 数据传输 | 服务端脚本处理,返回HTML | JS代码处理核心业务逻辑与数据传输 |
| 渗透测试策略 | CMS识别→源码泄露→代码审计 | JS分析→接口提取→未授权测试→敏感信息挖掘 |
1.2 JS打点核心价值
由于前端代码完全暴露,攻击者可从JS文件中发现:
-
更多URL地址/隐藏接口:通过代码逻辑发现未在页面直接展示的API端点
-
敏感配置信息:阿里云/腾讯云Key、数据库连接配置、测试账号密码
-
加密与验证逻辑:分析密码加密算法(如MD5实现)、验证码刷新机制、Token生成逻辑
-
未授权访问路径:通过分析路由发现无需鉴权的后台接口
注意:JS架构≠不安全,安全性取决于代码质量和权限控制,但确实增加了信息泄露面。
二、JS架构识别方法
2.1 浏览器插件识别(Wappalyzer)
-
操作:安装Wappalyzer插件访问目标站点
-
判定标准:
-
若显示"Vue.js"、"React"、"Angular"等JS框架 → 纯前端架构
-
若仅显示"jQuery"或具体JS库,但编程语言显示PHP/Java → 后端为主,JS为辅(非本课重点)
-
2.2 源码特征识别
-
页面源码中包含大量
<script src="*.js"></script>引用 -
存在
chunk-vendors.js、app.js等打包后的JS文件 -
查看JS文件名可推测功能:
login.js、admin.js、md5.js等
三、三层测试方法论
3.1 手工分析模式(精准但耗时)
步骤1:筛选关键JS文件
-
打开浏览器开发者工具(F12)→ Network → 筛选JS文件
-
优先级排序 :根据文件名判断(
admin*.js、login*.js、config*.js> 其他)
步骤2:全局搜索关键词 在Sources面板中使用 Ctrl+Shift+F 全局搜索以下关键词提取路径:
JavaScript
复制
// 提取URL/路径相关
src=
path=
api/
get|post|put|delete
ajax
url:
// 提取敏感信息相关
password
secret
key
token
accessKey
secretId
技巧 :搜索结果中若发现拼接路径(如 server + "/api/user"),需跟踪代码逻辑换算完整路径。
步骤3:代码逻辑跟踪
-
分析JS代码中的路由配置(Vue Router等)
-
关注
axios、fetch等HTTP请求库的调用点 -
寻找硬编码的测试账号、加密密钥
3.2 半自动分析模式(Burp Suite + 插件)
方案A:Burp Suite自带功能
-
设置代理拦截目标站点流量
-
Target → 右键目标域名 → Find scripts
-
查看自动提取的JS文件路径与调用关系
方案B:HAE插件(Highlighter and Extractor)
-
功能:对包含敏感信息的数据包进行高亮显示
-
配置:
-
安装HAE插件(BApp Store或本地JAR加载)
-
导入规则文件(配置GitHub官方规则库更新)
-
自定义匹配规则:邮箱、手机号、身份证号、API Key等
-
-
效果:HTTP历史记录中自动标记包含敏感字段的请求(如阿里云AccessKey、Windows路径泄露)
方案C:FindSomething插件(浏览器/Proxy双版本)
-
功能:自动提取JS中的URL、域名、IP、手机号、Secret等
-
使用:访问目标站点后点击插件图标,自动展示提取结果
-
分类:路径地址、域名、敏感字段(password、token等)
3.3 全自动扫描模式(工具链)
工具1:JSFinder(老牌工具)
bash
复制
# 基础使用:提取页面中的JS链接与URL
python JSFinder.py -u http://target.com
# 深度爬取(递归分析发现的JS)
python JSFinder.py -u http://target.com -d
特点:简单直接,但功能较基础,易产生误报。
工具2:URLFinder(推荐升级版)
-
优势:Windows直接运行(无需Python环境)、结果带颜色区分、信息量大
-
使用:
bash
复制
URLFinder.exe -u http://target.com
输出分析:
-
状态码200:存在的接口,重点测试未授权访问
-
外部域名:发现第三方接口(可能存在SSRF或CORS问题)
-
敏感路径 :如
/upload.action、/admin/等
工具3:FFUF(FUZZ爆破未知JS文件)
原理 :通过字典爆破猜测未在页面引用但实际存在的JS文件(如config.js.bak、test.js等)。
操作流程:
-
准备字典 :下载SecLists中的JS字典(
URL-shortcuts.txt或swagger.txt等) -
执行爆破:
bash
复制
ffuf -u http://target.com/FUZZ -w js_dict.txt -mc 200 -t 200
-
-mc 200:仅显示状态码200的结果(存在的文件) -
-t 200:200线程加速
- 联动分析:将FFUF发现的JS文件列表导入URLFinder/JSFinder进行深度分析。
工具4:Packer Fuzzer(Webpack打包器专项)
适用场景 :目标使用Webpack打包(可通过Wappalyzer识别Webpack标签)。
原理 :Webpack打包后的app.js等文件包含完整源码映射,可通过反编译提取原始代码。
使用:
bash
复制
python PackerFuzzer.py -u http://target.com
输出:自动生成报告,标记敏感信息泄露、未授权访问等风险。
四、敏感信息提取清单
4.1 高价值目标字段
表格
| 信息类型 | 关键字示例 | 利用方式 |
|---|---|---|
| 云服务商密钥 | aliyun_access_key, oss_bucket, secretId |
直接接管云存储/服务器 |
| 数据库配置 | jdbc:, database_host, redis://, mongodb:// |
内网数据库直连 |
| API接口文档 | swagger-ui, api-docs, /v2/api-docs |
发现全部接口定义 |
| 测试/默认账号 | test_user, admin/123456, debug_mode |
未授权登录 |
| 内部路径 | C:\Users\, /home/www/, .git/ |
信息泄露、进一步渗透 |
| 加密密钥 | AES_key, jwt_secret, salt |
伪造Token、解密数据 |
4.2 未授权访问测试流程
-
从JS中提取所有路径(如
/api/user/info,/admin/config) -
使用Burp Intruder或手工访问,重点关注:
-
返回JSON数据而非HTML的接口(RESTful API特征)
-
不包含
auth、login、token校验的端点
-
-
绕过技巧:
-
尝试将
GET改为POST/PUT(权限控制不严格) -
添加特定Header(如
X-Requested-With: XMLHttpRequest) -
修改返回包中的
{"code": 401}为200
-
五、本章核心考点总结(SRC/CTF适用)
5.1 面试高频问题
Q1:为什么前端JS架构更容易进行信息收集?
答:后端语言(PHP/Java等)源码在服务端执行,浏览器仅接收渲染后的HTML;而JS架构(Vue/React)的源代码完全下发至浏览器,攻击者可直接审计代码,发现隐藏接口、硬编码密钥、业务逻辑漏洞等。
Q2:如何从JS文件中挖掘未授权访问漏洞?
答 :首先通过手工(搜索
api/、path=等)或工具(URLFinder)提取JS中的URL路径;然后筛选出不涉及鉴权校验的接口(如/api/admin/user);最后直接访问测试是否返回敏感数据。注意关注状态码200但业务逻辑未校验的接口。
Q3:FFUF在JS打点中的作用是什么?
答 :FFUF用于FUZZ爆破未知的JS文件。页面加载的JS只是部分暴露,通过字典爆破(如
config.js、backup.js)可发现更多未引用的JS文件,扩大攻击面,获取更多敏感接口。
Q4:发现Webpack打包标志后应如何操作?
答 :使用PackerFuzzer或手动分析
*.js.map源码映射文件,反编译获取原始前端代码,从中提取API接口、加密逻辑、测试凭证等敏感信息。
5.2 实战速查表
表格
| 阶段 | 推荐工具/方法 | 关键参数/配置 |
|---|---|---|
| 框架识别 | Wappalyzer | 识别Vue/React/Webpack标签 |
| 接口提取 | URLFinder + FindSomething | 关注200状态码的接口 |
| 未知JS发现 | FFUF | -w js.txt -mc 200 |
| 敏感信息高亮 | Burp+HAE | 配置云Key、手机号正则 |
| 打包器分析 | PackerFuzzer | 针对Webpack站点 |
5.3 防御建议(反向考点)
-
代码层面:使用Webpack混淆压缩,删除console.log与注释;避免硬编码密钥,使用环境变量+服务端中转
-
架构层面:敏感API增加Token/Session鉴权,避免仅依赖前端路由隐藏
-
部署层面 :删除
*.js.map源码映射文件,禁止目录遍历
总结 :JS架构信息打点的核心逻辑是**"从已知JS扩大至未知JS,从JS代码提取至接口与密钥"**,通过手工审计+工具自动化+FUZZ爆破的组合,最大化挖掘前端代码暴露的攻击面。
