CRLF脆弱性をスキャンする高速なツール(Go製)
インストールは簡単です。リリースページからプリビルドバイナリをダウンロードし、解凍して実行するだけです。または以下のコマンドでも可能です。
▶ 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"
カスタムヘッダーを使用してクッキーや他のヘッダー部分を追加したい場合。
▶ 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("VULN! %s\n", url)
}
}
}
まだ混乱している場合やバグを見つけた場合は、issueを開いてください。すべてのバグ報告は感謝されます。自由な時間が不足しているため、一部の機能はまだテストされていません。
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 | ヘルプを表示 |