AIFuzzing 是一款基于代理的被动式 Web 安全扫描工具,专注于检测未授权访问和越权漏洞。它通过拦截和分析应用程序流量,自动发现潜在的安全问题,帮助开发人员和安全研究人员提前识别并修复漏洞。
核心功能
- 被动式漏洞扫描:无需主动发起扫描,通过代理服务器捕获真实流量进行分析
- 未授权访问检测:自动移除授权头部并重放请求,检测缺乏访问控制的 API 接口
- 越权漏洞检测:识别并替换请求中的敏感参数,检测水平和垂直越权问题
- 敏感数据识别:使用正则表达式识别响应中的敏感信息(手机号、邮箱、身份证等)
- 智能置信度评分:多维度评估漏洞可能性,减少误报
- 流式响应处理:高效处理大型响应体,确保扫描性能
- Web UI 界面:实时查看扫描结果,支持结果筛选和报告导出
- AI 辅助分析:利用大语言模型分析复杂场景,提高检测准确性
人工规则+AI检测
1、AI 开启模式下,会先基于内置规则,对请求进行未授权/越权测试,若内置规则已发现漏洞,则不调用AI,减少token消耗。
2、AI 模式未开启状态下,使用内置规则进行测试,内置规则先测试未授权【融合了Xia Yue】,若测试出未授权漏洞且包含敏感数据,跳出不再进行后续检测;若未检测出漏洞,或者存在未授权但是响应不包含敏感数据,会下发给越权模块检测,越权模块基于相似度+敏感数据匹配多维度去关联是否存在越权漏洞。
安装指南
github:https://github.com/darkfiv/AIFuzzing
直接从 Releases 页面下载对应平台的二进制文件:
- Windows:
AIFuzzing_windows_amd64.zip
- macOS:
AIFuzzing_macos_arm64.zip
(Apple Silicon) /AIFuzzing_macos_amd64.zip
(Intel) - Linux:
AIFuzzing_linux_amd64.zip
下载后解压,包含以下文件:
- 可执行文件 (
AIFuzzing
或AIFuzzing.exe
) - 配置文件 (
config.json
) - Web界面文件 (
index.html
)
快速开始
- 启动代理服务
# Windows AIFuzzing.exe # macOS/Linux ./AIFuzzing
默认使用配置文件 config.json
,也可指定配置文件:
./AIFuzzing -config my-config.json
- 配置浏览器或应用程序代理
设置代理地址为 127.0.0.1:9080
(默认端口)
- 安装 HTTPS 证书
首次使用时需安装 HTTPS 证书: 怎么安装mitmproxy证书大家自行百度吧,教程太多不细说了。
对于 macOS 用户,可执行以下命令信任证书:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.mitmproxy/mitmproxy-ca-cert.pem
- 访问 Web 界面查看结果
浏览器访问 http://127.0.0.1:8222
查看实时扫描结果
配置详解
AIFuzzing 使用 JSON 格式的配置文件,主要配置项如下:
代理配置
"proxy": { "port": 9080, "streamLargeBodies": 102400 }
port
: 代理服务器监听端口streamLargeBodies
: 以字节为单位的大响应体阈值,超过此值使用流式处理(默认 100KB)
未授权访问扫描配置
"unauthorizedScan": { "enabled": true, "removeHeaders": [ "Authorization", "Cookie", "Token", "Jwt", "X-Auth-Token", "X-Csrf-Token", "Sectoken", "X-Api-Key" ], "similarityThreshold": 0.5, "excludePatterns": [ "/static/", "/login", "/logout" ], "sensitiveDataPatterns": { "enabled": true, "jsonPatterns": [ { "name": "phone", "pattern": "(?:[^\\w]|^)((?:(?:\\+|00)86)?1(?:(?:3[\\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\\d])|(?:9[189]))\\d{8})(?:[^\\w]|$)", "description": "中国手机号码" } ] }, "useConfidenceScore": true, "highConfidenceScore": 60, "mediumConfidenceScore": 45, "lowConfidenceScore": 35 }
enabled
: 是否启用未授权访问扫描removeHeaders
: 重放请求时要移除的鉴权头部列表similarityThreshold
: 响应相似度阈值,用于比较原始响应和未授权响应excludePatterns
: 排除的 URL 路径模式列表sensitiveDataPatterns
: 敏感数据检测配置,包含 JSON 响应中的敏感数据模式useConfidenceScore
: 是否启用置信度评分系统highConfidenceScore
: 高置信度分数阈值(≥此值视为高可能性漏洞)mediumConfidenceScore
: 中置信度分数阈值lowConfidenceScore
: 低置信度分数阈值
若要退出程序,ctrl+c即可
越权漏洞扫描配置
"privilegeEscalationScan": { "enabled": true, "similarityThreshold": 0.6, "paramPatterns": [ "id=\\d+", "userId=\\d+", "user_id=\\d+", "accountId=\\d+", "memberId=\\d+" ] }
enabled
: 是否启用越权漏洞扫描similarityThreshold
: 响应相似度阈值paramPatterns
: 用于识别可能触发越权漏洞的参数模式列表
AI 辅助分析配置
"AI": "deepseek", "apiKeys": { "deepseek": "sk-xxx", "kimi": "sk-xxx", "qianwen": "sk-xxx", "hunyuan": "sk-xxx", "glm": "sk-xxx", "gpt": "sk-xxx" }
AI
: 默认使用的 AI 模型apiKeys
: 各 AI 模型的 API 密钥配置
大响应处理机制
AIFuzzing 内置了高效的大响应处理机制:
- 通过
proxy.streamLargeBodies
设置大响应流式处理阈值(默认 100KB) - 使用 go-mitmproxy 提供的流式处理能力,避免一次性加载整个响应体
- 敏感数据检测时,对于超过 10MB 的响应体会进行截断处理以保护性能
- 在比较响应相似度时,仅处理合理长度的数据段
这些机制确保了工具在处理大型响应时的性能和稳定性。
Web 界面使用
访问 http://127.0.0.1:8222
可使用 Web 界面:
- 实时结果查看:查看检测到的漏洞详情
- 结果筛选:按漏洞类型、检测结果进行筛选
- 统计概览:查看漏洞统计数据
- 报告生成:生成并下载安全报告
命令行参数
Usage: AIFuzzing [options]
Options:
-config string
配置文件路径 (默认 "config.json")
-disableWebUI
禁用Web界面
-log string
日志级别:debug, info, warning, error (默认 使用配置文件设置)
-logFile
启用文件日志
-port int
代理服务器端口 (默认 使用配置文件设置)
结果解读
漏洞严重程度
- 高危险:置信度分数 ≥ 60,极有可能存在漏洞
- 中危险:置信度分数 45-59,可能存在漏洞
- 低危险:置信度分数 35-44,存在潜在风险
- 信息:置信度分数 < 35, 可能是误报
置信度评分规则
评分由以下规则组成:
- 包含敏感数据:+65 分(例如手机号、身份证等)
- 成功状态码:+10 分(状态码为 2xx)
- JSON 响应:+5 分(响应为有效的 JSON 格式)
- 相似响应长度:+10 分(与原始响应长度相近)
- API 端点:+10 分(URL 为典型的 API 端点)
常见问题
无法截获 HTTPS 请求
- 确认已正确安装并信任 HTTPS 证书
- 对于 macOS,确保在钥匙串中将证书设置为"始终信任"
- 对于 iOS/Android 设备,确保已在设备设置中信任该证书
响应体过大导致内存问题
- 调整配置文件中的
proxy.streamLargeBodies
值 - 默认配置为 100KB,可根据系统内存适当调整
误报太多
- 调整
unauthorizedScan.highConfidenceScore
提高置信度要求 - 编辑
unauthorizedScan.sensitiveDataPatterns
优化敏感数据识别规则 - 将关键字添加到
unauthorizedScan.excludePatterns
中进行过滤,采用模糊匹配方式过滤,包含关键字的api均过滤
检测不到敏感数据
- 检查
sensitiveDataPatterns
配置,确保模式匹配目标敏感数据 - 使用更准确的正则表达式模式
- 对于大响应,检查是否启用了流式处理和适当的截断策略
结果页面数据展示不全、无法导出
- 有时候因网络原因导致js外部链接未成功加载,可以先下挂vpn再去刷新页面查看结果,导出结果
Burpsuite/Yakit+AIFuzzing报错:“此为代理服务器,不能直接发起请求”
- 可以先确认下待测试应用是否为内网环境,若内网环境,建议直接在浏览器配置上游代理为:http://127.0.0.1:9080,不经过Burpsuite/yakit转发