【小迪安全第14天:前端JS架构信息打点与API接口枚举】

一、课程概述与核心概念

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自带功能

  1. 设置代理拦截目标站点流量

  2. Target → 右键目标域名 → Find scripts

  3. 查看自动提取的JS文件路径与调用关系

方案B:HAE插件(Highlighter and Extractor)

  • 功能:对包含敏感信息的数据包进行高亮显示

  • 配置:

    1. 安装HAE插件(BApp Store或本地JAR加载)

    2. 导入规则文件(配置GitHub官方规则库更新)

    3. 自定义匹配规则:邮箱、手机号、身份证号、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等)。

操作流程:

  1. 准备字典 :下载SecLists中的JS字典(URL-shortcuts.txt或swagger.txt等)

  2. 执行爆破:

bash

复制

复制代码
ffuf -u http://target.com/FUZZ -w js_dict.txt -mc 200 -t 200
  • -mc 200:仅显示状态码200的结果(存在的文件)

  • -t 200:200线程加速

  1. 联动分析:将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 未授权访问测试流程

  1. 从JS中提取所有路径(如/api/user/info, /admin/config)

  2. 使用Burp Intruder或手工访问,重点关注:

    • 返回JSON数据而非HTML的接口(RESTful API特征)

    • 不包含auth、login、token校验的端点

  3. 绕过技巧:

    • 尝试将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爆破的组合,最大化挖掘前端代码暴露的攻击面。

相关推荐
蜗牛攻城狮2 小时前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
她说可以呀4 小时前
Vue插槽
前端·javascript·vue.js
qq_448011164 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
aixingpan4 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
2601_958352905 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块
志尊宝5 小时前
AI原生前端开发(039):AI辅助的Nuxt 4全栈开发
前端·vue.js·ai-native
长不大的杨瑞杰5 小时前
OpenCode v2 会话可靠性实战:Snapshots、Compaction、Instructions 与 Formatters
人工智能·安全·云计算·软件工程·devops
FRing036 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
excel6 小时前
双 Token 与前端使用 Crypto 公私钥鉴权换 Token,哪种方案更好?
前端·后端
外收内放6 小时前
Python基础语法练习题(73)
java·前端·python