CRLFuzz – 用 Go 编写的 Linux 扫描 CRLF 漏洞的工具
在本教程中,我们将探索 CRLFuzz,这是一个用 Go 编写的强大 Linux 工具,它允许我们扫描和识别 CRLF(回车换行)漏洞。当 Web 应用程序错误处理行终止字符时,就会出现 CRLF 漏洞,从而导致 HTTP 响应拆分、跨站脚本 (XSS) 和会话劫持等潜在安全风险。通过使用CRLFuzz,我们可以有效地扫描这些漏洞并增强我们的Web应用程序的安全性。
在本教程中,我们将介绍安装过程,演示 CRLFuzz 与各种命令行选项的用法,并解释代码片段及其输出的重要性。因此,让我们深入了解如何利用 CRLFuzz 来增强 Web 应用程序的安全性。
安装和设置
首先,让我们在 Linux 系统上安装 CRLFuzz。请按照以下步骤操作 -
1. 打开终端并输入以下命令来确保您的系统上已安装 Go:−
go version
2. 如果没有安装Go,可以从Go官方网站(https://golang.org/dl/)下载并安装。安装后,再次运行“go version”来验证安装。
3. 接下来,通过执行以下命令从 GitHub 克隆 CRLFuzz 存储库 −
git clone https://github.com/dwisiswant0/crlfuzz.git
4. 将目录更改为克隆的存储库−
cd crlfuzz
5. 使用 `go build` 命令构建 CRLFuzz 二进制文件 −
go build
6. 最后,通过运行 − 确保 CRLFuzz 二进制文件可执行
chmod +x crlfuzz
使用 CRLFuzz
现在我们已经成功安装了 CRLFuzz,让我们探索它的各种命令行选项并学习如何有效地利用它们。
1. 基本扫描
要使用 CRLFuzz 执行基本扫描,只需提供目标 URL 作为参数即可。例如 -
例子
./crlfuzz fuzz --url https://example.com/
在上面的代码片段中,我们执行“crlfuzz fuzz”命令,后跟“--url”选项和目标 URL。 CRLFuzz 将自动注入各种有效负载以识别目标 Web 应用程序中的任何 CRLF 漏洞。
输出
[+] URL: https://example.com/
[+] Payloads: 22
[+] Threads: 100
[+] Timeout: 5s
[+] Proxy:
[+] Delay: 0ms
[+] Concurrency: 100
[+] Wordlist:
[+] User Agent: crlfuzz/1.0
[+] Method: GET
[+] Redirects: true
[+] Quiet: false
200 - OK | Length: 125
- X-Header: CRLF
- User-Agent: CRLF
200 - OK | Length: 125
- X-Header: CRLF
- User-Agent: CRLF
从上面的输出中可以看到,CRLFuzz 显示了 HTTP 响应代码、长度和注入的负载。响应代码 200 表示有效负载未触发任何 CRLF 漏洞,而其他响应代码可能表示潜在的漏洞。
2. 自定义有效负载
CRLFuzz 允许我们使用单词列表指定自定义负载。让我们创建一个自定义单词列表文件并用它执行扫描。
创建一个名为 `wordlist.txt` 的新文件并添加自定义负载,每个负载都占一个新行 −
echo -e "X-Header: CRLF" > wordlist.txt
echo -e "User-Agent: CRLF" >> wordlist.txt
现在,执行以下命令以使用自定义单词列表执行扫描 −
例子
./crlfuzz fuzz --url https://example.com/ --payload wordlist.txt
在上面的代码片段中,我们提供了“--payload”选项,后跟自定义单词列表文件的路径。 CRLFuzz 将从单词列表中注入每个有效负载,并检查目标应用程序中是否存在 CRLF 漏洞。
输出
[+] URL: https://example.com/
[+] Payloads: 2
[+] Threads: 100
[+] Timeout: 5s
[+] Proxy:
[+] Delay: 0ms
[+] Concurrency: 100
[+] Wordlist: wordlist.txt
[+] User Agent: crlfuzz/1.0
[+] Method: GET
[+] Redirects: true
[+] Quiet: false
200 - OK | Length: 125
- X-Header: CRLF
- User-Agent: CRLF
200 - OK | Length: 125
- X-Header: CRLF
- User-Agent: CRLF
从上面的输出中可以看到,CRLFuzz 显示了自定义单词列表中注入的有效负载。如果任何有效负载触发 CRLF 漏洞,它将在输出中突出显示。
CRLFuzz 的高级功能
CRLFuzz 还提供高级功能,可以进一步提高我们的扫描效率。让我们探讨其中两个特性:并发性和时间延迟。
1.并发性
CRLFuzz 允许我们设置并发级别以同时执行扫描。这可以显着加快扫描过程。以下是如何利用此功能−
执行以下命令以并发级别 10 进行扫描 -
例子
./crlfuzz fuzz --url https://example.com/ --concurrency 10
在上面的代码片段中,我们提供了“--concurrency”选项,后跟所需的并发级别(在本例中为 10)。 CRLFuzz 将同时发送多个请求,使扫描过程更快。
输出
[+] URL: https://example.com/
[+] Payloads: 22
[+] Threads: 100
[+] Timeout: 5s
[+] Proxy:
[+] Delay: 0ms
[+] Concurrency: 10
[+] Wordlist:
[+] User Agent: crlfuzz/1.0
[+] Method: GET
[+] Redirects: true
[+] Quiet: false
200 - OK | Length: 125
- X-Header: CRLF
- User-Agent: CRLF
200 - OK | Length: 125
- X-Header: CRLF
- User-Agent: CRLF
从上面的输出可以看出,CRLFuzz 同时处理多个请求,这减少了总体扫描时间。
2. 时间延迟
为了避免过多的请求压垮目标应用程序,我们可以在每个请求之间引入时间延迟。以下是如何整合此功能−
执行以下命令以在请求之间延迟 500 毫秒进行扫描 -
例子
./crlfuzz fuzz --url https://example.com/ --delay 500ms
在上面的代码片段中,我们提供了“--delay”选项,后跟所需的时间延迟值(在本例中为 500 毫秒)。 CRLFuzz 将在每个请求之间引入延迟,使目标应用程序能够更有效地处理流量。
输出
[+] URL: https://example.com/
[+] Payloads: 22
[+] Threads: 100
[+] Timeout: 5s
[+] Proxy:
[+] Delay: 500ms
[+] Concurrency: 100
[+] Wordlist:
[+] User Agent: crlfuzz/1.0
[+] Method: GET
[+] Redirects: true
[+] Quiet: false
200 - OK | Length: 125
- X-Header: CRLF
- User-Agent: CRLF
200 - OK | Length: 125
- X-Header: CRLF
- User-Agent: CRLF
从上面的输出可以看出,CRLFuzz 在每个请求之间引入了 500 毫秒的时间延迟,确保目标应用程序可以毫无问题地处理流量。
结论
在本教程中,我们探索了 CRLFuzz,这是一个用 Go 编写的强大 Linux 工具,它使我们能够扫描 Web 应用程序中的 CRLF 漏洞。我们介绍了安装过程,演示了 CRLFuzz 与各种命令行选项的用法,并解释了代码片段及其输出的重要性。通过利用 CRLFuzz,我们可以主动识别和缓解 CRLF 漏洞,从而增强 Web 应用程序的整体安全性。