一个用Go编写的快速扫描CRLF漏洞的工具
安装很简单。你可以从发布页面下载预构建的二进制文件,解压后即可运行,或者使用以下命令:
▶ curl -sSfL https://git.io/crlfuzz | sh -s -- -b /usr/local/bin
如果你已经安装并配置了 go1.13+ 编译器:
▶ GO111MODULE=on go install github.com/dwisiswant0/crlfuzz/cmd/crlfuzz@latest
要更新工具,可以在 go get 命令中使用 -u 标志。
▶ git clone https://github.com/dwisiswant0/crlfuzz
▶ cd crlfuzz/cmd/crlfuzz
▶ go build .
▶ mv crlfuzz /usr/local/bin
简单来说,CRLFuzz 可以这样运行:
▶ crlfuzz -u "http://target"
▶ crlfuzz -h
这将显示工具的帮助信息。以下是它支持的所有开关。
你可以通过3种方式定义目标:
▶ crlfuzz -u "http://target"
▶ crlfuzz -l /path/to/urls.txt
用于与其他工具链式使用时。
▶ subfinder -d target -silent | httpx -silent | crlfuzz
默认情况下,CRLFuzz 使用 GET 方法发出请求。如果你想改变,可以使用 -X 标志。
▶ crlfuzz -u "http://target" -X "GET"
你也可以使用 -o 标志将模糊测试结果保存到文件。
▶ crlfuzz -l /path/to/urls.txt -o /path/to/results.txt
如果你想使用POST、DELETE、PATCH等方法发送数据请求,只需使用 -d 标志。
▶ crlfuzz -u "http://target" -X "POST" -d "data=body"
你可能需要添加自定义请求头,例如添加Cookie或其他头部信息。
▶ crlfuzz -u "http://target" -H "Cookie: ..." -H "User-Agent: ..."
使用代理时,可以在代理字符串前加上 protocol:// 前缀来指定其他代理协议。
▶ crlfuzz -u "http://target" -x http://127.0.0.1:8080
并发数表示同时进行模糊测试的数量。CRLFuzz 提供的默认值是 25,你可以使用 -c 标志修改。
▶ crlfuzz -l /path/to/urls.txt -c 50
如果你使用 -s 标志激活静默模式,只会显示存在漏洞的目标。
▶ crlfuzz -l /path/to/urls.txt -s | tee vuln-urls.txt
与静默模式不同,使用 -v 标志时如果出现错误,会显示错误详情。
▶ crlfuzz -l /path/to/urls.txt -v
使用 -V 标志显示当前CRLFuzz的版本。
▶ crlfuzz -V
你可以将CRLFuzz作为库使用。
package main
import (
"fmt"
"github.com/dwisiswant0/crlfuzz/pkg/crlfuzz"
)
func main() {
target := "http://target"
method := "GET"
// 生成可能存在CRLF漏洞的URL
for _, url := range crlfuzz.GenerateURL(target) {
// 对目标进行扫描
vuln, err := crlfuzz.Scan(url, method, "", []string{}, "")
if err != nil {
panic(err)
}
if vuln {
fmt.Printf("漏洞! %s\n", url)
}
}
}
如果你仍然感到困惑或者发现了Bug,请提交问题。我们欢迎所有Bug报告,但由于时间有限,某些功能尚未经过充分测试。
CRLFuzz 以MIT许可证发布。详见LICENSE文件。
当前版本为1.4.0,仍在开发中。
| 标志 | 描述 |
|---|
| -u, --url | 定义要模糊测试的单一URL |
| -l, --list | 对文件中的URL进行模糊测试 |
| -X, --method | 指定要使用的请求方法 (默认:GET) |
| -o, --output | 保存结果的文件 |
| -d, --data | 定义请求数据 |
| -H, --header | 为目标传递自定义请求头 |
| -x, --proxy | 使用指定的代理进行模糊测试 |
| -c, --concurrent | 设置并发级别 (默认:25) |
| -s, --silent | 静默模式 |
| -v, --verbose | 详细模式 |
| -V, --version | 显示当前CRLFuzz版本 |
| -h, --help | 显示帮助信息 |