ssrf-hunting について
ssrf-huntingは、サーバーサイドリクエストフォージェリのリスクを体系的に調査するセキュリティスキルです。URL取得箇所の特定、回避やブラインドSSRFのテスト、修正事項の整理を支援します。
主な機能
- 01サーバー側のURL取得箇所の特定
- 02ループバックと内部ホストのテスト
- 03フィルター回避とリダイレクトの確認
- 04クラウドメタデータとブラインドSSRFのテスト
- 05対応記録と修正案の整理
活用シーン
- 01WebhookやインポーターのURL取得を監査
- 02プレビューサービスやプロキシ端点をテスト
- 03SSRF対策とクラウドメタデータ露出を評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ securityskills/ skills --skill ssrf-huntingインストール後、Claude Code で/ssrf-huntingを入力して読み込まれたか確認します。
詳細
SSRF の調査
サーバーが、制御可能な URL を取得する箇所をすべて特定し、計画的にテストします。
調査する箇所
- Webhook やコールバック URL(決済、連携、アラート)
- インポーター:URL からのアバター取得、URL からのインポート、RSS フィードリーダー
- プレビュー生成機能:リンクの展開、PDF/画像のレンダラー、スクリーンショットサービス
- 外部エンティティや参照を解決するファイルパーサー(XInclude、XSLT、SVG)
url=パラメーターを受け取るプロキシ/リダイレクトエンドポイント
テストマトリックス
基本
- 内部サービス向けの
http://127.0.0.1:PORT(レスポンスの差異から稼働中のポートを特定します) http://localhost、http://[::1]、http://2130706433(整数形式の IP)、http://0x7f000001- 内部ホスト名:
http://inventory、http://kubernetes.default.svc
フィルターの回避
- ループバックに解決される DNS 名:カスタムレコード、
localtest.me、nip.io のパターン - リダイレクト:公開 URL から内部の宛先へ 302 リダイレクト(リダイレクトが追跡されるかをテストします)
- 単一解決のフィルターに対する DNS リバインディング(rebind.network のツール)
- スキームの悪用:パーサーが許容する場合は
file:///etc/passwd、gopher://、dict://
クラウドメタデータ(影響大)
- AWS IMDSv1:
http://169.254.169.254/latest/meta-data/iam/security-credentials/ - AWS IMDSv2 ではトークンが必要です。302 リダイレクト経由でホップ制限を回避できるか試します
- GCP:
Metadata-Flavor: Googleを指定したhttp://metadata.google.internal/computeMetadata/v1/ - Azure:
Metadata: trueを指定したhttp://169.254.169.254/metadata/instance?api-version=2021-02-01
ブラインド SSRF
- 帯域外の DNS/HTTP コールバック(interactsh 形式)を使い、目に見えるレスポンスなしで取得を確認します
- オープンポートとフィルターされたポートに対するレスポンス時間の差
- エラーメッセージからの情報漏えい:接続拒否とタイムアウト、HTTP エラーコード
ルール
- 認証情報を返すメタデータを読み取る場合は、最小限の証拠(ロール名、キーのプレフィックス)を記録して、すぐに報告します。認可なしに認証情報を使ってピボットしてはいけません
- SSRF を通じて実際のユーザーデータを外部に持ち出してはいけません
修正に関する注意事項
宛先を許可リストで制限する、ネットワーク層でリンクローカル/ループバックをブロックする、リダイレクトの追跡を無効にする、IMDSv2 を使用する、送信トラフィックを制御する隔離されたワーカーから取得するようにします。
コメント
Markdown 対応