An exciting journey to find SSRF , Bypass Cloudflare , and extract AWS metadata ! から学ぶ

ソース:

medium.com

脆弱性:SSRF

 

訳:

ssrfとは何ですか?

ほとんどの読者は ssrf とは何かを知っていると思いますが、簡単に説明するために、portswigger を見てみましょう。

 

サーバー側リクエスト フォージェリ (SSRF とも呼ばれる) は Web セキュリティの脆弱性であり、攻撃者がサーバー側アプリケーションに、攻撃者が選択した任意のドメインへの HTTP リクエストを実行させることを可能にします。 

 

私はプログラムに取り組んでいましたが、ターゲットの名前を公開する権限がないので、それを redacted.com と呼びましょう。

このプログラムを少しいじった後、次のようなエンドポイントに到達しました ~> https://redacted.com/api/download-pdf?url= http://SomeThing.com

 

私はすぐにBurp コラボレーターを起動し、デフォルトの URL を自分の URL に置き換えました。
幸いなことに、Burpコラボレーターは HTTP リクエストと DNS リクエストを受信し、それに応答してげっぷページを受け取りました。

 

 

その後、最初に頭に浮かんだのは、 http://localhostをそこに配置してみようということでした。

しかし、私は得ました:

 

悲しい:(


これには保護策がありましたが、私はあきらめず、ローカルホストの制限をバイパスするためにすべての方法を実行し、これらのペイロードをすべて試しました。 

 

http://127.0.0.1:80

http://127.0.0.1:443

http://127.0.0.1:22

http://127.1:80

http://0

http://0.0.0.0:80

http://localhost:80

http://[::]:80/

http://[::]:25/SMTP

http://[::]:3128/Squid

http://[0000::1]:80/

http://[0:0:0:0:0:ffff:127.0.0.1]/thefile

 

その他にも、https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery で見つけることができるものがたくさんあります。

「file:///」、「sftp://」、「gopher://」などの他のプロトコルも試しました。

どれも機能しません! :(

 

しばらくすると、AWS メタデータ インスタンスを取得するために「http://169.254.169.254/」を試してみてはいかがでしょうか?ということが頭に浮かびました。

それで私はそれをしました、そして私は得ました:

 

 

サーバーが SSRFの元のリクエストをフィルタリングしているが、そのリクエストへのリダイレクトレスポンスはフィルタリングしてしていない可能性があります
たとえば、サーバーは次のような方法で SSRF に対して脆弱になります。 url=https://www.google.com/。そのサーバーはURL param をフィルタリングしている可能性があります
ただし、Python サーバーを使用して リダイレクト先の場所に302 で応答すると、127.0.0.1 などのフィルタリングされた IP アドレスもしくはフィルタリングされたプロトコルgopherなど、にアクセスできる可能性があります。

 

そこで私は Django サーバーを起動し、このコードをサーバーに挿入しました。 

 

サーバーへの接続には ngrok を使用しました

このリクエストを送信し、製品を取得しました。それから、「http://169.254.169.254/latest/meta-data/iam/security-credentials/ YOUR-PROD-HERE」Django サーバーに置きました。

 

そして最後に私は次のものを手に入れました:

 

 

ほなほな。