Tristan-Duin/http-header-fuzzer

GitHub: Tristan-Duin/http-header-fuzzer

通过向目标服务器发送大量畸形和恶意 HTTP 请求头,帮助安全测试人员快速发现解析漏洞、服务崩溃及其他健壮性问题。

Stars: 1 | Forks: 0

# HTTP Header Fuzzer 测试您的 Web 服务器如何处理不良的 HTTP 请求头。跨 60 多个请求头发送恶意和畸形值,并告诉您哪里出现了问题。这是一种简便快捷的方法,用于找出需要重点关注以改进防御性网络安全实践的地方。 ## 安装 ``` python3 -m venv venv source venv/bin/activate pip install -e . ``` ## 运行 ``` httpfuzz --url https://example.com ``` 就是这样。这会对每个默认请求头使用所有策略进行模糊测试,并为您显示任何异常情况。 您也可以使用 `python -m fuzzer --url https://example.com` 来运行它。 ## 选择测试内容 仅对特定的请求头进行模糊测试: ``` httpfuzz -u https://example.com --header-names Host Cookie User-Agent ``` 仅使用特定的策略: ``` httpfuzz -u https://example.com -s sql_injection xss ``` 同时结合两者: ``` httpfuzz -u https://example.com --header-names Cookie -s xss crlf_injection ``` ## 策略 - `overflow` - 长字符串(100 到 100k 字符) - `sql_injection` - SQL 探测字符串 - `xss` - script 标签、事件处理器、模板注入 - `crlf_injection` - 用于请求头拆分的新行注入 - `format_string` - `%s`、`%x`、`%n` 模式 - `null_byte` - 位于不同位置的空字节 - `unicode` - BOM、超长 UTF-8、全角字符、代理项 - `integer` - 边界值、MAX_INT、NaN、Infinity - `command_injection` - Shell 元字符 默认运行所有策略。使用 `-s` 来选择特定的策略。 ## 保存结果 ``` # JSON httpfuzz -u https://example.com --output json -o results.json # CSV httpfuzz -u https://example.com --output csv -o results.csv ``` ## 调优性能 ``` # 50 个并发请求,5 秒超时 httpfuzz -u https://example.com -c 50 -t 5 # 在请求之间添加延迟(秒) httpfuzz -u https://example.com --delay 0.1 ``` ## 使用代理 ``` httpfuzz -u https://example.com --proxy http://127.0.0.1:8080 ``` ## 其他有用的标志 - `--raw` - 使用原始 TCP 套接字而不是 aiohttp(见下文) - `--exploitable` - 仅显示最易被利用的发现(CRIT/HIGH 严重级别,已去重) - `--all` - 显示所有结果,而不仅是感兴趣的 - `--method POST` - 使用不同的 HTTP 方法 - `--headers "Content-Type: application/json"` - 为每个请求添加静态请求头 - `--skip-verify` - 跳过 TLS 证书检查 - `--custom-payloads file.txt` - 添加您自己的 payload(每行一个) - `--header-wordlist file.txt` - 使用您自己的请求头名称列表 - `--retries N` - 重试失败的请求(默认:2) ## Raw 套接字模式 默认情况下,模糊测试器使用 `aiohttp`,它会在包含换行符和空字节的 payload 离开您的机器之前将其拦截。使用 `--raw` 可以绕过此限制,并通过原始 TCP 发送所有内容: ``` httpfuzz -u http://example.com --raw ``` 这实际上会将 CRLF 注入、空字节和其他畸形数据发送到服务器,而不是让它们在客户端被拒绝。当您想测试服务器的解析器如何处理真正破损的输入时,请使用此选项。 也支持 HTTPS(原始 TLS 套接字)。不支持 `--proxy`。 ## 过滤至重要内容 在完成全面扫描后,减少干扰信息,仅查看最易被利用的结果: ``` httpfuzz -u https://example.com --exploitable ``` 这将过滤出 CRIT 和 HIGH 严重级别的发现(服务器错误、被反射回的 payload),并按请求头 + 策略进行去重,这样您就只能看到每个组合的最佳命中结果。 适用于所有输出格式: ``` httpfuzz -u https://example.com --exploitable --output json -o top_findings.json ``` ## 工作原理 1. 发送一个正常请求以获取基线(状态码、主体大小、响应时间) 2. 发送相同的请求,但将其中一个请求头设置为恶意值 3. 将每个响应与基线进行比较 4. 标记任何看起来不同的情况 - 状态更改、大小偏移、响应缓慢、payload 被反射回或服务器错误 ## 许可证 MIT
标签:aiohttp, CISA项目, CRLF注入, Fuzzer, HTTP头注入, HTTP模糊测试, Python, Raw TCP, Web安全, XSS, 协议解析测试, 反取证, 合规测试, 命令注入, 安全评估, 无后门, 格式化字符串, 漏洞情报, 畸形数据包, 网络安全, 蓝队分析, 计算机取证, 逆向工具, 隐私保护, 鲁棒性测试