
Prime クロスサイトリクエストフォージェリ(CSRF)監査・悪用ツールキット
XSRFProbe は、高度なクロスサイトリクエストフォージェリ(CSRF/XSRF)監査・エクスプロイトツールキットです。強力なクローリングエンジンと多数の系統的なチェックを備えており、CSRF脆弱性の大半のケースとそのバイパスを検出し、見つかった脆弱性ごとに悪用可能な概念実証(PoC)を生成できます。XSRFProbeの動作の詳細については、wikiのXSRFProbe内部構造を参照してください。
XSRFProbe Wiki • はじめに • 一般的な使い方 • 高度な使い方 • XSRFProbe内部構造 • ギャラリー
Origin: null)と、メソッドオーバーライドやContent-Typeバイパスを用いて調査します。--max-urls、--max-depth、--crawl-timeoutで設定可能)。XSRFProbeが実行する各チェックには一意の識別子があります。このIDはコンソール出力に表示され(例 [T6] VULNERABLE: ...)、JSONレポートの各発見項目の test_id フィールド(severity と、該当する場合は details の下の exploitability 注釈とともに)として保存されるため、各発見はそれを生成した正確なテストにマッピングされます。
S*チェックにはオプションのヘッドレスブラウザ統合(--browser)が必要です。T*/M*/R*/O*は、応答差分/ベンチマークエンジンによって制御されるHTTPレベルのチェックです。
XSRFProbeの実際のシナリオを見てみましょう:
XSRFProbeは単一のコマンドで簡単にインストールできます:
pip install xsrfprobe
pip install .
xsrfprobe --help
--browser、--auto-validate-poc)では、さらにgeckodriverがPATHに存在する(または--geckodriver-pathで指定する)必要があります。xsrfprobe-outputという出力フォルダが作成されます。このフォルダ内で、スキャン中に収集された詳細なログと情報を確認できます(--jsonを渡すと機械可読なレポートが生成されます)。XSRFProbeは現在v3.0.0であり、この作業はGNU General Public License (GPLv3)の下でライセンスされています。
本ツールを実際のサイトで使用しないでください!
このツールはあらゆる種類のフォーム送信を自動的に実行するように設計されており、サイトに損害を与える可能性があるためです。データベースを台無しにしたり、サイトに対してDoSを引き起こす可能性が最も高いです。
使い捨て/ダミーのセットアップ/サイトでテストしてください。
事前の相互同意なしにWebサイトのテストにXSRFProbeを使用することは、違法行為と見なされる可能性があります。すべての該当する地域、州、連邦法を遵守するのは最終的なユーザーの責任です。作者は一切の責任を負わず、このプログラムの誤用や損害についても責任を負いません。
このプロジェクトは、クロスサイトリクエストフォージェリ攻撃に関する私自身の研究とWebアプリケーションでの経験に完全に基づいています。ソースコードを調べて、このツールキットがどのように構築されたかを理解するのに役立ててください。有用なプルリクエスト、アイデアや問題を大歓迎します。XSRFProbeの開発状況を確認したい場合は、開発ボードをご覧ください。
♡をもって @0xInfection により作成されました。
| ID | カテゴリ | チェック |
|---|
D1 | トークンの存在 | Anti-CSRFトークンなし(汎用リクエストフォージェリ) |
D2 | トークンの存在 | ログインフォームにCSRFトークンがない(ログインCSRF) |
T2 | トークン改ざん | 検証がリクエストメソッドに依存(GET ↔ POST切り替え) |
T3 | トークン改ざん | トークンを完全に省略可能 |
T4 | トークン改ざん | トークンがユーザーセッションに紐づいていない(クロスセッションリプレイ) |
T5 | トークン改ざん | トークンが非セッションクッキー(例 csrfKey)に紐づいている |
T6 | トークン改ざん | 単純なダブルサブミットクッキー(cookie == body、バインドなし) |
T7 | トークン改ざん | 空のトークン値が許容される |
T8 | トークン改ざん | カスタムヘッダートークンを省略または偽装可能 |
M1 | メソッド / Content-Type | _method パラメータによるHTTPメソッドオーバーライド |
M2 | メソッド / Content-Type | X-HTTP-Method-Override ヘッダーによるHTTPメソッドオーバーライド |
M4 | メソッド / Content-Type | 代替 Content-Type による検証バイパス |
R0 | Referer | フォーム送信時にRefererヘッダーが検証されていない |
R1 | Referer | ヘッダーを省略することによるReferer検証バイパス |
R2a | Referer | Referer正規表現バイパス — 攻撃者のサブドメインとしてターゲット |
R2b | Referer | Referer正規表現バイパス — クエリ文字列内のターゲット |
R2c | Referer | Referer正規表現バイパス — パス内のターゲット |
O1 | Origin | Origin: null によるOrigin検証バイパス |
O2 | Origin | サブドメイントリックによるOrigin検証バイパス |
O3 | Origin | ヘッダーを省略することによるOrigin検証バイパス |
S2 | SameSite(ブラウザ) | クライアントサイドリダイレクトガジェットによる SameSite=Strict バイパス |
S3 | SameSite(ブラウザ) | 兄弟サブドメイン上のXSSによる SameSite=Strict バイパス |
S4 | SameSite(ブラウザ) | クッキーリフレッシュ / OAuthフローによる SameSite=Lax バイパス |
C1 | クッキー状態 | クッキー SameSite 属性の分析(None/Lax/Strict) |
C2 | クッキー状態 | クッキーに SameSite 属性が設定されていない |
E1 | トークン強度 | トークンが弱い/構造化されたハッシュエンコーディングを使用 |
A1 | トークン強度 | スキャン後のトークンの予測可能性/偽造可能性の分析 |