记录某一天安服仔的漏洞挖掘过程
字数 1292 2025-08-06 01:23:31
Web漏洞挖掘实战教学文档
一、前期信息收集
1. 端口扫描
- 使用工具如Nmap对目标进行端口扫描,识别开放服务
- 常见Web服务端口:80/443/8080等
2. 目录扫描
- 使用工具如Dirbuster、御剑等扫描常见目录
- 重点关注管理后台、API接口、上传目录等
- 案例中发现:
- net版本的ueditor(可能存在上传漏洞)
- wap目录(移动端入口)
- 绝对路径泄露(可写低危报告)
3. 搜索引擎信息收集
- 使用Google/Baidu等搜索目标相关信息
- GitHub搜索可能泄露的源码、配置文件等
- 案例中未找到有用信息
二、Webpack源码分析
1. 识别Webpack打包
- 浏览器开发者工具中查看"Sources" → "webpack://"
- 可直接查看或还原前端JavaScript代码
2. 还原Webpack代码方法
方法一:使用SourceDetector插件
- GitHub项目:https://github.com/SunHuawei/SourceDetector
- 需要自行编译安装
方法二:使用reverse-sourcemap工具
- 安装工具:
npm install --global reverse-sourcemap
- 下载.js.map文件:
- 查看页面源代码,找到引用的JS文件
- 在JS文件URL后添加.map后缀
- 使用curl下载:
curl -O https://example.com/path/to/file.js.map
- 还原源代码:
reverse-sourcemap --output-dir ./output file.js.map
三、漏洞挖掘实战
1. 未授权访问漏洞
- 通过分析JS代码发现API接口
- 构造请求验证接口是否存在未授权访问
- 案例中发现通行码二维码生成接口未授权
2. 信息泄露漏洞
- 发现用户搜索接口
- 构造请求获取了3568条员工信息
- 关键点:接口无权限验证、返回敏感数据
3. SQL注入漏洞
第一个注入点:
- 参数:area
- 验证方法:常规SQL注入测试
- 特点:无WAF防护
第二个注入点:
- 参数:ProcLnstID
- 验证方法:
- ProcLnstID=1/1 → 返回正常
- ProcLnstID=1/0 → 返回错误(除零错误)
- 原理:通过运算表达式触发SQL错误
4. 任意文件读取漏洞
- 发现文件上传功能
- 通过修改上传请求绕过限制:
- 在BurpSuite中右键请求
- 选择"Change body encoding"
- 从POST转换为form-data
- 在Content-Disposition中添加name="file"
- 通过图片查看功能构造SSRF测试失败
- 修改请求读取服务器文件成功
四、漏洞挖掘流程总结
- 目标获取
- 端口扫描
- 目录扫描
- 发现Webpack打包
- 分析JavaScript代码
- 构造请求验证
- 发现并验证漏洞
五、关键工具与技术
- 端口扫描工具:Nmap
- 目录扫描工具:Dirbuster、御剑
- Webpack分析工具:
- SourceDetector浏览器插件
- reverse-sourcemap
- 请求构造工具:BurpSuite
- 漏洞验证技术:
- SQL注入验证
- 未授权访问验证
- 文件读取验证
六、防御建议
- 对敏感接口添加权限验证
- 对用户输入进行严格过滤
- 生产环境关闭源码映射(.map文件)
- 实施WAF防护
- 文件上传功能限制文件类型和内容
- 错误信息处理,避免泄露敏感信息