webpack打包站点,js文件名批量获取思路
字数 1787 2025-08-20 18:17:53
Webpack打包站点JS文件名批量获取与接口提取技术指南
一、Webpack基础概念
1.1 什么是Webpack
Webpack是一个现代JavaScript应用程序的静态模块打包工具(module bundler)。它主要用于:
- 构建应用程序模块间的依赖关系
- 将多个模块打包成一个或多个bundle文件
- 优化前端资源加载
典型应用场景:
- 原本需要分别引用的index.js、footer.js、banner.js等文件
- 通过Webpack可以打包成一个main.js文件
- HTML只需引用这一个打包后的文件即可
1.2 Webpack的安全风险
主要风险是源代码泄露,原因在于:
- Webpack打包时会生成对应的
.map文件(源映射文件) .map文件包含源代码的映射关系- 如果生产环境未清理
.map文件,攻击者可以:- 还原完整源代码
- 发现敏感接口
- 获取硬编码的密钥信息
- 进行源代码审计发现漏洞
二、Webpack站点识别方法
2.1 自动化识别
- Wappalyzer浏览器插件:可自动识别网站是否使用Webpack
- 浏览器开发者工具:
- 检查"Webpack://"目录
- 查找JS文件中包含
.map文件路径的引用
2.2 手动识别特征
- JS文件命名有特定规律,常见模式:
四位数.八位字符.js(如1234.abcd1234.js)chunk-vendors.八位字符.jsapp.八位字符.js
- 静态资源路径通常包含
/static/js/前缀
三、JS文件路径提取技术
3.1 全局搜索法
适用场景:已知部分JS文件名特征
操作步骤:
- 在页面源代码中全局搜索(Ctrl+Shift+F)已知JS文件片段
- 查找包含文件名生成逻辑的JS代码
- 分析文件名生成规律(如
数字: "哈希值"的映射关系) - 使用正则表达式提取所有可能的文件名组合
示例分析:
- 发现
1267: "5a799c6b"这样的代码片段 - 推断文件名由
1267+5a799c6b组成,即1267.5a799c6b.js - 编写正则提取所有类似模式的映射关系
3.2 断点调试法
适用场景:无法通过搜索确定文件名生成逻辑
操作步骤:
- 在开发者工具中搜索
/static/js/等路径特征 - 找到JS文件路径拼接的代码位置
- 在该行设置断点
- 刷新页面,程序会在断点处暂停
- 单步执行(F10或点击向下箭头),观察变量值变化
- 记录最终拼接完成的完整路径
- 分析路径组成部分的来源和规律
调试技巧:
- 关注路径拼接函数的参数
- 观察变量在每一步执行时的值变化
- 可能需要多次刷新和调试以捕获不同文件的生成逻辑
四、接口提取技术
4.1 自动化工具
- jjjjjjjjjs工具:专门用于Webpack站点的API接口提取
- GitHub仓库:https://github.com/ttstormxx/jjjjjjjjjjjjjs
- FindSomething浏览器插件:可提取敏感信息和API接口
4.2 手动提取流程
- 获取所有JS文件路径后,编写脚本批量访问这些JS文件
- 分析JS文件内容,提取以下内容:
- API端点(通常包含
/api/路径) - 接口参数和请求方法(GET/POST等)
- 可能的认证信息
- API端点(通常包含
- 对提取的接口进行测试:
- 未授权访问测试
- 信息泄露测试
- 参数注入测试
五、安全测试与漏洞挖掘
5.1 源代码分析
- 通过.map文件还原源代码后,重点关注:
- 硬编码的凭证和密钥
- 不安全的直接对象引用
- 未经验证的重定向
- 敏感信息泄露
5.2 接口安全测试
- 未授权访问:
- 直接访问需要认证的接口
- 修改请求方法测试
- 信息泄露:
- 测试接口是否返回过多信息
- 检查接口是否暴露敏感数据
- 注入漏洞:
- SQL注入测试
- XSS测试
- 命令注入测试
六、防御建议
6.1 开发人员建议
- 生产环境禁用或删除
.map文件 - 避免在客户端代码中硬编码敏感信息
- 实施适当的接口访问控制
- 使用环境变量存储配置信息
6.2 运维人员建议
- 定期扫描站点是否存在
.map文件泄露 - 监控异常接口访问行为
- 实施WAF防护常见Web攻击