CRLFuzz – 基於 Go 語言編寫的 Linux CRLF 漏洞掃描工具


在本教程中,我們將探索 CRLFuzz,這是一個用 Go 語言編寫的強大的 Linux 工具,它允許我們掃描和識別 CRLF(回車換行)漏洞。CRLF 漏洞發生在 Web 應用程式錯誤處理換行符時,導致潛在的安全風險,例如 HTTP 響應拆分、跨站點指令碼 (XSS) 和會話劫持。透過使用 CRLFuzz,我們可以有效地掃描這些漏洞並增強 Web 應用程式的安全性。

在本教程中,我們將介紹安裝過程,演示 CRLFuzz 與各種命令列選項的使用,並解釋程式碼片段及其輸出的意義。因此,讓我們深入瞭解並學習如何利用 CRLFuzz 來增強 Web 應用程式的安全性。

安裝和設定

首先,讓我們在 Linux 系統上安裝 CRLFuzz。請按照以下步驟操作:

1. 開啟終端並確保您的系統上已安裝 Go,方法是鍵入以下命令:

go version

2. 如果未安裝 Go,您可以從 Go 官方網站 (https://golang.org.tw/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 應用程式的整體安全性。

更新於:2023年7月26日

169 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告