
GoベースのCLIスキャナで、Webキャッシュポイズニングとデセプションに対応。10種類のポイズニング手法、複数のデセプション方法、内蔵クローラ、JSONレポート、ペネトレーションテスト向けプロキシ統合をサポート。
Web Cache Vulnerability Scanner (WCVS) は、Hackmanit と Maximilian Hildebrand によって開発された、ウェブキャッシュポイズニング およびウェブキャッシュディセプションのための高速で多機能なCLIスキャナーです。
このスキャナーは、多様なウェブキャッシュポイズニングおよびウェブキャッシュディセプション技術をサポートし、テスト対象のURLを特定するクローラーを内蔵し、特定のウェブキャッシュに適応してより効率的なテストを行うことができます。高度にカスタマイズ可能で、既存のCI/CDパイプラインに簡単に統合できます。
WCVSのビルド済みバイナリはリリースページで提供されています。
apt install web-cache-vulnerability-scannerpacman -S wcvsこのリポジトリはGoを使用してインストールできます。
go1.21 以降
go install -v github.com/Hackmanit/Web-Cache-Vulnerability-Scanner@latest
$ docker build .
Sending build context to Docker daemon 29.54MB
Step 1/10 : FROM golang:latest AS builder
---> 05c8f6d2538a
Step 2/10 : WORKDIR /go/src/app
---> Using cache
---> f591f24be8cf
Step 3/10 : COPY . .
---> 38b358dd3472
Step 4/10 : RUN go get -d -v ./...
---> Running in 41f53de436c5
....
Removing intermediate container 9e2e84d14ff3
---> 1668edcf6ee3
Successfully built 1668edcf6ee3
$ docker run -it 1668edcf6ee3 /wcvs --help
https://github.com/Hackmanit/Web-Cache-Vulnerability-Scanner
version 1.0.0
WCVSはフラグを使用して高度にカスタマイズできます。多くのフラグは、直接値を指定するか、ファイルへのパスを指定できます。
必須のフラグはテスト対象のURLを指定する -u/--url だけです。ターゲットURLはさまざまな形式で指定できます。
WCVSは最初の5つの技術をテストするために2つのワードリストを必要とします。1つはヘッダー名、もう1つはパラメータ名のワードリストです。ワードリストはWCVSを実行する同じディレクトリに置くか、--headerwordlist/-hw および --parameterwordlist/-pw フラグで指定できます。
wcvs -u 127.0.0.1
wcvs -u http://127.0.0.1
wcvs -u https://example.com
wcvs -u file:path/to/url_list
wcvs -u https://example.com -hw "file:/home/user/Documents/wordlist-header.txt"
wcvs -u https://example.com -pw "file:/home/user/Documents/wordlist-parameter.txt"
wcvs -u https://example.com -hw "file:/home/user/Documents/wordlist-header.txt" -pw "file:/home/user/Documents/wordlist-parameter.txt"
--cacheheader/-ch キャッシュヒット/ミスを確認するためのカスタムキャッシュヘッダーを指定します。--setcookies/-sc リクエストに追加するクッキーを指定します。--setheaders/-sh リクエストに追加するヘッダーを指定します。--setparameters/-sp リクエストに追加するパラメータを指定します。URLに直接追加することも可能ですが、このフラグを使用すると便利な場合があります。--post/-post HTTPメソッドをGETからPOSTに変更します。--setbody/-sb リクエストに追加するボディを指定します。--contenttype/-ct Content-Typeヘッダーの値を指定します。--useragentchrome/-uac User-Agentを WebCacheVulnerabilityScanner v{バージョン番号} から Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 に変更します。-sh "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) ..." と同様の効果が得られますが、このフラグの方が迅速です。wcvs -u https://example.com -ch "X-Custom-Header-ABC"
wcvs -u https://example.com -sc "PHPSESSID=123"
wcvs -u https://example.com -sc "file:/home/user/Documents/cookies.txt"
wcvs -u https://example.com -sh "Referer: localhost"
wcvs -u https://example.com -sh "file:/home/user/Documents/headers.txt"
wcvs -u https://example.com -sp "admin=true"
wcvs -u https://example.com -sp "file:/home/user/Documents/parameters.txt"
wcvs -u https://example.com -post -sb "admin=true"
wcvs -u https://example.com -post -sb "file:/home/user/Documents/body.txt"
wcvs -u https://example.com -post -sb "{}" -ct "application/json"
wcvs -u https://example.com -uac
wcvs -u https://example.com -ch "X-Custom-Cache-Header"
--generatereport/-gr フラグが設定されている場合、スキャンしたURLごとにJSONレポートが生成され、更新されます。
レポートはログファイルと同様に、WCVSが実行されている同じディレクトリに書き込まれます。すべての出力ファイルのディレクトリを変更するには --generatepath/-gp を使用します。
レポート内でHTML特殊文字をエンコードする場合は、--escapejson/-ej を使用します。
wcvs -u https://example.com -gr
wcvs -u https://example.com -gr -ej
wcvs -u https://example.com -gr -gp /home/user/Documents
wcvs -u https://example.com -gr -gp /home/user/Documents -ej
URLをクロールするには、--recursivity/-r を設定する必要があります。これはクローラーの再帰的な深さを指定します。
デフォルトでは、WCVSは同じドメインのURLのみをクロールします。他のドメインもクロールするには、--recdomains/red を使用します。
特定の文字列を含むURLのみをクロールするには、--recinclude/-rin を使用します。
--reclimit/-rl は各再帰深度でクロールされるURLの数を制限します。
また、クロールしないURLのリストを --recexclude/-rex で指定できます。--generatecompleted/-gc は、例えば、既にテスト済みのすべてのURLのリストを生成するために使用できます。スキャンを繰り返すが、同じURLを再度クロールしてテストしたくない場合、このリストを --recexclude/-rex に使用できます。
wcvs -u https://example.com -r 5
wcvs -u https://example.com -r 5 -red /home/user/Documents/mydomains.txt
wcvs -u https://example.com -r 5 -rl 2
wcvs -u https://example.com -r 5 -rex /home/user/Documents/donttest.txt
プロキシを使用するには、--useproxy/-up を指定します。Burpを使用している場合、"Settings > Network > HTTP > HTTP/2 > Default to HTTP/2 if the server supports it" のチェックを必ず外してください。そうしないと、RFC非準拠のヘッダーに依存する一部の技術が機能しません。
プロキシのデフォルトURLは http://127.0.0.1:8080 です。変更するには --proxyurl/-purl を使用します。
wcvs -u https://example.com -up
wcvs -u https://example.com -up -purl http://127.0.0.1:8081
1秒あたりの最大許可リクエスト数は --reqrate/-rr で設定できます。デフォルトでは制限はありません。
逆に、--threads/-t を使用してWCVSが利用する同時スレッド数を増やすと、1秒あたりのリクエスト数を増加させることができます。デフォルト値は20です。
wcvs -u https://example.com -rr 10
wcvs -u https://example.com -rr 1
wcvs -u https://example.com -rr 0.5
wcvs -u https://example.com -t 50
WCVSは上記以外にも多くのフラグとオプションを提供しています。--help/-h で各フラグの意味と使用方法の一覧を表示できます。
wcvs -h
ウェブキャッシュポイズニングとWCVSに関する詳細な情報を提供するブログ記事シリーズはこちらにあります。
Web Cache Vulnerability Scanner (WCVS) の初版は、Maximilian Hildebrandの学士論文の一部として開発されました。
WCVSは Hackmanit と Maximilian Hildebrand によって開発され、Apache License, Version 2.0 の下でライセンスされています。
--cacheheader/-ch カスタムキャッシュヘッダーを指定します(大文字小文字を区別しません)。