
33の段階的に難易度が上がるチャレンジを備えた、インタラクティブなセルフホスト型XSSトレーニングプラットフォーム
💸 このプロジェクトが役に立ったら、継続的な成長を支えるために10ドルの寄付を検討してください。リンク:https://rzp.io/rzp/zgkC6h5B
ハッカー、ペネトレーションテスター、開発者を対象とした、段階的に難易度が上がる33のチャレンジを備えたインタラクティブな自己ホスト型XSSトレーニングプラットフォームです。クロスサイトスクリプティングを基礎から実世界の悪用まで習得できます。
⚡ 攻撃者のために構築
⚡ 学習のために設計
⚡ シンプルさのために開発
基本的な反射から高度な実世界の悪用まで、33の段階的なXSSチャレンジ。
| # | 名前 | 説明 |
|---|
| 1 | こんにちは、反射型XSS | フィルターもエンコーディングもなし。入力がそのままページに反映されます。 |
| 2 | 保存型XSSゲストブック | 入力が保存され、すべての訪問者にレンダリングされます。古典的な持続型XSS。 |
| # | 名前 | 説明 |
|---|---|---|
| 3 | scriptタグ遮断 | サーバーは <script> タグを除去します。別の方法でJavaScriptを実行してください。 |
| 4 | 属性インジェクション | 入力はHTML属性の中に挿入されます。属性から抜け出してコードを実行してください。 |
| 5 | JavaScriptコンテキスト | 入力はJavaScriptの文字列変数内に配置されます。エスケープして注入してください。 |
| 28 | Markdownインジェクション | 素朴なMarkdownレンダラーが投稿をHTMLに変換します。JavaScriptを実行させてください。 |
| 32 | ファイル名インジェクション | ファイルをアップロードします。ファイル名がサニタイズなしでUIに反映されます。 |
| # | 名前 | 説明 |
|---|---|---|
| 6 | イベントハンドラーブロックリスト | 一般的なイベントハンドラーはブロックされます。フィルターが漏らしたマイナーなものを見つけてください。 |
| 7 | 大文字小文字&キーワードフィルター | 攻撃的なシングルパスフィルター。ネストしたキーワードを使用し、除去後に再構築してください。 |
| 8 | DOMベースXSS | 脆弱性はURLを読み取るクライアントサイドJavaScriptに完全に存在します。 |
| 25 | オープンリダイレクト→XSS | オープンリダイレクトとmeta-refreshタグを連鎖させてXSSを達成します。 |
| 27 | localStorage DOM XSS | localStorageに保存されたデータが、再読み込み時にサニタイズなしでレンダリングされます。 |
| # | 名前 | 説明 |
|---|---|---|
| 9 | フィルター付きhrefインジェクション | 入力は複数のフィルターが適用されたアンカー href に挿入されます。 |
| 10 | JSONPによるCSPバイパス | 同一オリジンのJSONPエンドポイントを使用してContent Security Policyをバイパスします。 |
| 11 | 二重エンコーディングバイパス | WAFとアプリケーション間の二重デコード動作を悪用します。 |
| 12 | クライアントサイドテンプレートインジェクション | テンプレートエンジンが {{expressions}} を eval で評価します。 |
| 13 | postMessage XSS | オリジン検証のない安全でないクロスウィンドウメッセージングを悪用します。 |
| 14 | SVGアップロードXSS | SVGファイルをアップロードし、SVG固有の機能を使用してペイロードを実行します。 |
| 15 | ミューテーションXSS | ブラウザのDOMミューテーション動作を利用してサニタイズをバイパスします。 |
| 16 | 再帰的キーワードフィルター | フィルターは再帰的にループします — 代替の実行コンテキストを使用してください。 |
| 17 | ポリグロット | ペイロードはHTML、属性、JSの各コンテキストで実行される必要があります。 |
| 18 | DOMクロバリング | 細工したHTML要素を使用してグローバル変数を上書きします。 |
| 19 | プロトタイプ汚染→XSS | プロトタイプチェーンを汚染し、直接のHTMLインジェクションなしでXSSを達成します。 |
| 20 | ベースタグインジェクション | <base> を注入してリソース読み込みを操作し、CSPをバイパスします。 |
| 21 | ダングリングマークアップインジェクション | HTMLインジェクションのみ(JSなし)で機密データを外部送信します。 |
| 22 | scriptブロック内のJSONインジェクション | nonce付きscriptブロック内のJSONコンテキストからエスケープします。 |
| 23 | URLスキームバイパス | エンコーディングのトリックで javascript: をブロックするフィルターをバイパスします。 |
| 24 | CSSインジェクションによる情報窃取 | JavaScriptなしでCSSを使用して機密データを抽出します。 |
| 26 | CRLF→レスポンススプリッティング | ヘッダーを注入してHTTPレスポンスを分割し、HTMLを注入します。 |
| 29 | iframeサンドボックスエスケープ | 安全でないiframeサンドボックス設定から脱出します。 |
| 30 | AngularJSサンドボックスエスケープ | AngularJSの式サンドボックスバイパステクニックを悪用します。 |
| 31 | Webコンポーネントスロットインジェクション | スロットベースのレンダリングを介してShadow DOMに注入します。 |
| 33 | ブラインドXSS(アウトオブバンド) | 目に見えない管理者パネルでペイロードの実行を引き起こします。 |
git clone https://github.com/The-Cyber-Ledger/TCL-xss-labs.git
cd TCL-xss-labs
npm install
npm start
ブラウザで開く: http://localhost:3000
1つのコマンドで全33ラボを即座に実行:
docker pull shadowpacket/tcl-xss-labs
docker run -p 3000:3000 shadowpacket/tcl-xss-labs
ブラウザで開く: http://localhost:3000
alert() を発火させる、または現実的な悪用(データ外部送信、管理者乗っ取りなど)を実行する。このプロジェクトは、意図的に脆弱性を含むトレーニング環境です。ローカルまたは管理された環境でのみ使用してください。許可なくシステムを標的にしないでください。教育目的のみで使用してください。
ほとんどの人はラボを解くことでXSSを学びます。このプロジェクトは、実際の攻撃者のように悪用を理解するのに役立ちます。