Hello there, ('ω')ノ
🎯 1. XSSとは?
XSS(Cross-Site Scripting)は、Webアプリケーションに悪意のあるスクリプトを注入し、
それが他のユーザのブラウザ上で実行される脆弱性です。
主な影響:
- Cookieの窃取(セッションハイジャック)
- 偽フォームによる情報搾取
- ページの見た目改ざん
- 管理者アカウント奪取(XSS→CSRF連携)
🧭 2. チェックすべき機能・画面
| 機能・ページ |
注入箇所の候補 |
備考 |
| 🔍 検索フォーム |
検索語がページに表示される場所 |
|
| 📝 コメント投稿 |
投稿内容が他ユーザに表示される |
|
| 📄 プロフィール編集 |
自己紹介欄などのHTMLが表示される |
|
| 📥 お問い合わせ |
メール内容の確認ページなど |
|
| 📤 URLパラメータ出力 |
?name=aaa → Hello aaa! のような構造 |
|
🧪 3. XSSの分類と診断手法
✅ 反射型(Reflected XSS)
- 入力したスクリプトが即時にレスポンス内で反映される
- URLや検索ワードに注入
テスト例:
https://example.com/search?q=<script>alert(1)</script>
✅ 永続型(Stored XSS)
- 投稿などに含めたスクリプトが、他のユーザにも表示される
- コメント欄、掲示板、プロフィールなど
テスト内容:
コメント欄に以下を投稿し、表示されるか確認:
<script>alert('XSS');</script>
✅ DOMベースXSS
- JavaScriptがURLや要素をもとに動的にHTMLを書き換える処理で発生
- 開発者ツールで
innerHTML, document.writeなどを調べる
🔧 4. 基本のペイロード集(初級)
| 目的 |
ペイロード |
| アラート表示 |
<script>alert(1)</script> |
| イベント属性利用 |
<img src=x onerror=alert(1)> |
| HTML属性の中 |
" onmouseover="alert(1) |
| タグの中途挿入 |
<svg/onload=alert(1)> |
📄 5. テスト方法(手順)
- 対象ページで、入力 → 表示される場所を探す
- 表示に使われるタグ属性・構造を観察
- 適切なペイロードを選んで挿入
- 実際にスクリプトが実行されるか確認(alertが出るか)
🧰 6. 補助ツール
- Burp Suite(Repeater + XSS auditor)
- XSStrike(XSS検出自動化ツール)
- XSS Hunter / Hunter Pro(OOB型XSS検知)
- ブラウザの開発者ツール(F12)
⚠️ 7. 注意点・見抜くコツ
| ポイント |
内容 |
| HTMLエスケープが不十分 |
> や " などがそのまま使える |
| イベント属性が有効 |
onload, onerror, onclick など |
<script> タグが使える場合は高確率で脆弱性あり |
|
DOMベースはURL断片や location.href に注目 |
|
✅ 8. 診断成功のサイン
- 入力したスクリプトが実際に実行される(アラートやDOM改変)
- JSのエラーが出る(例:Uncaught SyntaxError)
- HTML構造が崩れる(タグ未閉じ)
🛡️ 9. サーバ側の防御方法(診断時のチェック)
| 対策 |
説明 |
| 出力時にHTMLエスケープ |
< → <、" → " など |
| WAFや入力フィルタ |
攻撃っぽいパターンを除去(ただし過信は禁物) |
| Content Security Policy (CSP) |
script-src 'self' で外部スクリプト実行を制限 |
| JavaScriptテンプレート利用時の注意 |
DOM操作関数に直接出力していないか確認 |
🔎 10. 見つけやすいヒント
- URLパラメータやフォーム送信内容がレスポンス内に含まれる
innerHTML, document.write, eval() を使っているJSコード
- コメントやプロフィールなど、他人に表示される投稿可能な要素
🎁 11. おすすめペイロード(応用)
| シーン |
ペイロード |
<input value="..."> の中 |
" autofocus onfocus=alert(1) |
href="..."> の中 |
javascript:alert(1) |
| CSS内(少数例) |
<style>@import 'javascript:alert(1)'</style> |
Best regards, (^^ゞ