web-dev-qa-db-ja.com

サーバーサイドリクエストフォージェリ(SSRF)の説明

SSRFの脆弱性をよりよく理解したいと思っています。私はグーグルでYouTubeチュートリアルを視聴しましたが、すべて理解しにくい高度なテクニックを示しています。

Localhostサーバーを使用してWebサイトに接続する方法に興味があります。接続したら、ローカルホストからそのWebサイトのディレクトリを読み取る方法を知りたいです。

Windows 7を使用している場合、SSRFの脆弱性をテストできますか?

2
Rifat Shommo

サーバー側リクエストフォージェリは、サーバーが攻撃者によって提供された任意のホストに接続する脆弱性です。

テストするときは、サーバーが接続できるインターネット上でホストを使用できると便利です。これは、ファイアウォールまたはNATの背後にあるため、通常は自宅または職場のPCでは機能しません。サーバーがIPアドレスに接続すると、ルーターが接続をブロックします。理想的には、ホスティングプロバイダーを備えたVPSなど、パブリックIPアドレスを備えたサーバーが必要です。または、ルーターでポート転送を構成することもできます。

別の方法は、サードパーティのサービスを使用することです。たとえば、 Burp Collaborator は、サーバーとのやり取りを通知するサーバーです。

リモートサーバーがサーバーに接続する場合、これは必ずしも脆弱性ではないことに注意してください。この脆弱性は、サーバーがローカルネットワークから情報を公開する場合に起こります。SSRFの「サーバー側」を利用して、通常は到達できないネットワークをナビゲートできます。

2
Sjoerd

Webアプリケーションをホストしているインターネットから到達可能なサーバー(server-a)があるとします。

このWebアプリケーションは、ユーザーのブラウザーから送信された一部のxmlを解析するxmlパーサーを使用します。 xmlパーサーが XXE脆弱性 に対して脆弱であると仮定しましょう。

Server-aはローカルネットワークの一部でもあり、プライベートサーバー(private-server-b)が存在します。プライベートサービス(secret-service-b)をホストしており、ローカルのユーザーからのみアクセスできるようになっています。外部からではなくネットワーク。

攻撃者がこのxmlをwebappに送信すると、パーサーは含まれている指示に従い、アクセスを試みます http:// private-server-b/secret-service-b?ssrf

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE roottag PUBLIC "-//VSR//PENTEST//EN" "http://private-server-b/secret-service-b?ssrf">
<roottag>ssrf attack!</roottag>

その結果、攻撃者はサーバー側の観点からリクエストを実行できます。 Seもこれ 良いドキュメント

0
nicolimo86