Hello there, ('ω')ノ
🧨 XXEとSSRFの連携とは?
XML External Entity(XXE)脆弱性を利用して、サーバー側で任意のHTTPリクエストを発生させることができます。これが Server-Side Request Forgery(SSRF) 攻撃です。
🎯 攻撃の目的
- アプリケーションがアクセスできる 内部ネットワーク や 管理用システム に対して、攻撃者が強制的にリクエストを送らせることが可能になります。
- レスポンス内容が表示される場合:双方向SSRF
- 表示されないがリクエストが送られる場合:ブラインドSSRF
🛠 XXEを使ったSSRF例
以下のように外部エンティティを定義し、サーバー内の別システムにアクセスさせます:
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://internal.vulnerable-website.com/"> ]>
このエンティティを、アプリケーションがレスポンスとして返す任意のXMLノードに挿入します:
<request> <target>&xxe;</target> </request>
📦 成功例(レスポンス表示型)
HTTP/1.1 200 OK Content-Type: application/xml <response> <target>Welcome to internal system!</target> </response>
このように、内部ホストのレスポンス内容が取得できます。
👁 ブラインドSSRF
- レスポンス内容は表示されないが、ログや副作用(例えばWebフック、メール通知等)によってリクエストが確認されることがあります。
- 自分が管理する外部サーバーを使って、外部へのデータ流出や内部アクセスの検出を行うことも可能です。
💡 実践上のポイント
ポイント | 説明 |
---|---|
SYSTEM "http://..." |
XXEでアクセスしたい内部リソースのURLを指定 |
レスポンスに挿入 | エンティティを必ず表示されるノードに挿入すること |
内部ホスト調査 | http://127.0.0.1/ や http://localhost/admin などを試す |
🧠 SSRFは内部ネットワークのスキャン、クラウドメタデータへのアクセス、構成情報の抽出などに悪用される危険性があり、特にクラウド環境では非常に高いリスクを伴います。
Best regards, (^^ゞ