CRLFuzz:一款基于Go的CRLF漏洞快速扫描工具

CRLFuzz

CRLFuzz是一款功能强大的CRLF漏洞扫描工具,该工具基于Go语言开发,可以帮助广大研究人员以非常快的速度完成CRLF漏洞的扫描工作。

工具安装

源码安装

该工具的安装非常简单,广大研究人员可以直接从该项目的Release页面下载预编译的源码,下载完成后解压即可运行,或者直接使用下列命令安装:

▶ curl -sSfL https://git.io/crlfuzz | sh -s -- -b /usr/local/bin

源安装

如果你在你的本地设备上安装好了Go v1.13+环境,可以通过下列命令进行工具的安装和配置:

▶ GO111MODULE=on go get -v github.com/dwisiswant0/crlfuzz/cmd/crlfuzz

如需更新工具,你可以使用-u参数来运行go get命令。

GitHub安装

除此之外,广大研究及人员还可以使用下列命令从GitHub来安装并配置该工具:

▶ git clone https://github.com/dwisiswant0/crlfuzz

▶ cd crlfuzz/cmd/crlfuzz

▶ go build .

▶ mv crlfuzz /usr/local/bin

工具使用

基础使用

该工具的使用也非常简单,我们可以直接运行下列工具来扫描CRLF漏洞:

▶ crlfuzz -u "http://target"

参数选项

▶ crlfuzz -h

上述命令将会显示工具的帮助命令,下面是该工具支持的所有参数选项:

目标选择

我们可以通过下列三种方式来定义待扫描的目标:

单一URL:

▶ crlfuzz -u "http://target"

URL列表:

▶ crlfuzz -l /path/to/urls.txt

Stdin输入(支持其他工具获取输入):

▶ 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"

添加Header

我们可以使用下列方法来使用自定义Header来添加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

Verbose模式

跟静默模式不同,该模式将显示详细的扫描信息,该模式使用-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)

}

}

}

工具运行截图

许可证协议

CRLFuzz项目的开发与发布遵循MIT开源许可证协议。

项目地址

CRLFuzz:【GitHub传送门


发表评论 取消回复

电子邮件地址不会被公开。 必填项已用*标注