谈高效漏洞挖掘之Fuzzing的艺术
字数 1616 2025-08-18 11:39:11
Fuzzing技术在漏洞挖掘中的艺术与实践
一、Fuzzing技术概述
Fuzzing(模糊测试)是一种自动化或半自动化的漏洞挖掘技术,通过向目标系统输入大量非预期的、畸形的或随机的数据,观察系统反应来发现潜在漏洞。本文将从实战角度详细解析Fuzzing技术在各类漏洞挖掘中的应用。
二、登录系统的Fuzzing测试
1. 验证码相关漏洞
图片验证码漏洞
- 拒绝服务攻击:当验证码生成参数(height、width、length)可控时,可构造超大尺寸验证码请求导致资源耗尽
- 参数删除绕过:尝试删除验证码参数,观察是否能绕过验证
手机验证码漏洞
- 爆破攻击:对验证码进行暴力破解尝试
- 短信轰炸:利用接口无限制发送短信验证码
2. 用户名枚举
- 观察不同用户名输入时的回显差异:
- 错误提示内容不同
- 返回状态码不同
- 响应时间差异
3. 弱口令测试
- 使用常见弱口令字典进行尝试
- 结合用户名枚举结果进行定向爆破
三、逻辑漏洞的Fuzzing技术
1. 敏感信息泄露
- 接口参数Fuzzing:对已知接口进行参数爆破
- 驼峰命名法:尝试常见驼峰式参数名(如userName、orderId等)
- 示例方法:
POST /sale/appOrder/+paramFuzzing HTTP/1.1 Host: xxx.com Origin: http://xxx.com Cookie: ...
2. 越权漏洞
参数值替换
- 替换用户标识参数(login、userid等)为其他用户信息
参数值枚举
- 使用Intruder等工具对ID类参数进行暴力枚举
IDOR(不安全的直接对象引用)
- 参数数值删除:删除关键认证参数(token/user_hash)
- HTTP参数污染(HPP):发送多个同名不同值的参数混淆后端解析
- 示例:
userid=123&userid=456
- 示例:
- 字段替换:替换与个人信息相关的其他字段
3. 回显伪造(本地验证绕过)
- 获取验证码后输入错误验证码
- 拦截返回包,修改错误响应为正确响应
- 放行修改后的包完成绕过
4. 未授权访问
- 对管理接口参数进行Fuzzing:
https://xxx/?m=index → 尝试修改m参数值为admin、manage等 - 使用参数字典进行系统化测试
5. JS信息接口Fuzzing
- 分析前端JS代码寻找隐藏接口和域名
- 常见发现:
- 敏感接口(可能存在越权)
- 隐藏测试域名(可能包含未加固的后台)
四、XXE注入Fuzzing
测试场景
- 任何XML解析场景:
- 数据提交包含XML结构
- 文件上传指定Excel/Word类型
测试方法
- 构造恶意XML实体:
<?xml version='1.0' encoding='utf-8' ?> <!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <data>&xxe;</data> - 尝试不同协议(file://, http://, gopher://等)
五、CSRF漏洞Fuzzing
1. JSONP劫持
<script>
function jsonp(data){alert(JSON.stringify(data));}
</script>
<script src="http://vul.com/user/center?callback=jsonp"></script>
2. CORS跨域问题
- 检查响应头包含:
Access-Control-Allow-Origin: * - 或允许任意来源:
Access-Control-Allow-Origin: http://attacker.com
3. Flash跨域
- 检查crossdomain.xml配置:
<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*"/> </cross-domain-policy>
六、SSRF与URL跳转Fuzzing
1. SSRF测试
- 基本测试:
http://target.com/vul.php?url=http://127.0.0.1:8080 - 协议利用:
dict://127.0.0.1:port/infogopher://127.0.0.1:2333/_testfile:///etc/passwd
2. URL跳转测试
- 直接修改跳转参数:
http://target.com/redirect?url=http://evil.com
3. CRLF注入
- 基本原理:注入回车(%0d)换行(%0a)控制响应头
- 测试方法:
http://target.com/api?url=http://evil.com%0d%0aSet-Cookie:malicious=payload - 进阶利用:
- CRLF + XSS:
http://target.com/redirect=http://evil.com%0d%0aContent-Type:text/html%0d%0a%0d%0a<script>alert(1)</script>
- CRLF + XSS:
七、黑盒测试中的漏洞利用链
组合漏洞利用
-
文件上传+路径遍历:
- 严格限制的文件上传功能可能返回上传路径
- 结合其他功能的路径参数实现RCE
-
信息泄露+越权:
- 通过信息泄露获取敏感接口
- 对接口进行越权测试
Fuzzing策略
- 保持对每个参数和漏洞点的深度挖掘
- 注意功能组件间的关联性
- 尝试非常规的测试思路和角度
八、总结
Fuzzing技术在漏洞挖掘中具有不可替代的作用,通过系统化的测试方法和创造性的测试思路,可以发现在常规测试中难以发现的深层漏洞。关键在于:
- 对每个输入点保持怀疑态度
- 系统化地尝试各种变异方法
- 深入理解业务逻辑和技术实现
- 善于组合不同的测试技术和漏洞点
通过持续的实践和经验积累,Fuzzing技术将成为安全测试人员手中最强大的武器之一。