【小迪安全第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.jsapp.js等打包后的JS文件

  • 查看JS文件名可推测功能:login.jsadmin.jsmd5.js


三、三层测试方法论

3.1 手工分析模式(精准但耗时)

步骤1:筛选关键JS文件

  • 打开浏览器开发者工具(F12)→ Network → 筛选JS文件

  • 优先级排序 :根据文件名判断(admin*.jslogin*.jsconfig*.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等)

  • 关注axiosfetch等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.baktest.js等)。

操作流程

  1. 准备字典 :下载SecLists中的JS字典(URL-shortcuts.txtswagger.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特征)

    • 不包含authlogintoken校验的端点

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

相关推荐
Chockmans2 小时前
春秋云境CVE-2018-3245
安全·web安全·网络安全·春秋云境·cve-2018-3245
特别关注外国供应商2 小时前
Netskope 安全与网络重塑人工智能
网络·人工智能·安全·零信任·访问控制·sase·netskope
Xudde.2 小时前
班级作业笔记报告0x07
笔记·学习·安全·web安全·php
EasyGBS2 小时前
国密GB35114+国标GB28181平台EasyGBS双重加持筑牢雪亮工程坚实安全底座
安全
Mr. G K2 小时前
探测XSS漏洞方法
安全·web安全·xss
KC2702 小时前
制造业企业OpenClaw类AI智能体安全配置手册
人工智能·安全
watersink2 小时前
第11章 安全架构设计理论与实践
安全·安全架构
FreeBuf_2 小时前
谷歌将Axios npm供应链攻击归因于朝鲜APT组织UNC1069
前端·npm·node.js
前端 贾公子2 小时前
解决uni-app 输入框,键盘弹起时页面整体上移问题
前端·vue.js·uni-app