目录导航
CRLFuzz介绍
CRLFuzz是一款使用Go语言编写的用来扫描网站CRLF注入漏洞的工具,HTTP响应拆分漏洞(HTTP Response Splitting),支持linux,windows环境,支持批量扫描,支持使用代理扫描,支持多种请求方式,支持多线程扫描,可自定义标题 cookie和其他部分
CRLF注入漏洞描述
CRLF注入漏洞,是因为Web应用没有对用户输入做严格验证,导致攻击者可以输入一些恶意字符。攻击者一旦向请求行或首部中的字段注入恶意的CRLF,就能注入一些首部字段或报文主体,并在响应中输出,所以又称为HTTP响应拆分漏洞(HTTP Response Splitting)

CRLFuzz安装方法
安装注意事项
go环境已配备
没有go的,可以在kali linux里面执行如下命令进行go安装
apt install golang-go
二进制安装
安装很容易。您可以从发布页面下载预构建的二进制文件,解压并运行!
或使用如下命令一把梭安装
curl -sSfL https://git.io/crlfuzz | sh -s -- -b /usr/local/bin
从源码安装
如果您安装并配置了 go1.13+ 编译器:
GO111MODULE=on go get -v github.com/dwisiswant0/crlfuzz/cmd/crlfuzz
为了更新工具,您可以-u
在 go get 命令中使用flag。
从GitHub安装
git clone https://github.com/dwisiswant0/crlfuzz cd crlfuzz/cmd/crlfuzz go build . mv crlfuzz /usr/local/bin
直接使用安装包运行
比如,下载 crlfuzz_1.4.1_linux_amd64.tar.gz
解压,
在此文件夹中打开cmd
输入 ./crlfuzz回车即可

CRLFuzz下载地址
①GitHub:
crlfuzz_1.4.1_linux_386.tar.gz2 MB
crlfuzz_1.4.1_linux_amd64.tar.gz2.08 MB
crlfuzz_1.4.1_linux_arm64.tar.gz1.91 MB
crlfuzz_1.4.1_linux_armv6.tar.gz1.96 MB
crlfuzz_1.4.1_macOS_amd64.tar.gz2.2 MB
crlfuzz_1.4.1_windows_386.zip1.94 MB
crlfuzz_1.4.1_windows_amd64.zip2.01 MB
crlfuzz_1.4.1_windows_armv6.zip1.96 MB
②云中转网盘
yunzhongzhuan.com/#sharefile=4LQQxBKn_..
解压密码 www.ddosi.org
CRLFuzz使用方法
基本用法
简单地说,CRLFuzz 可以直接如下运行:
crlfuzz -u "http://www.ddosi.org"
flags
crlfuzz -h

这将显示该工具的帮助。这是它支持的所有开关。
falgs | 描述 |
---|---|
-u, –url | 定义单个 URL 以进行模糊测试 |
-l, –list | 批量指定ulr文件进行扫描 |
-X, –method | 指定要使用的请求方法(默认:GET) |
-o, –output | 保存结果的文件 |
-d, –data | 定义请求数据 |
-H, –header | 将自定义标头传递给目标 |
-x, –proxy | 使用指定的代理进行模糊测试 |
-c, –concurrent | 设置并发级别(默认:25) |
-s, –silent | 静音模式 |
-v, –verbose | 详细模式 |
-V, –version | 显示当前的 CRLFuzz 版本 |
-h, –help | 显示其帮助 |
目标
您可以通过 3 种方式定义目标:
单一网址
crlfuzz -u "http://www.ddosi.org"

列表中的网址
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://www.ddosi.org" -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"
// Generates a potentially CRLF vulnerable URLs
for _, url := range crlfuzz.GenerateURL(target) {
// Scan against target
vuln, err := crlfuzz.Scan(url, method, "", []string{}, "")
if err != nil {
panic(err)
}
if vuln {
fmt.Printf("VULN! %s\n", url)
}
}
}