Hello there, ('ω')ノ
SSRFをOSコマンドインジェクションに変えた未知のLinuxシークレットを。
脆弱性:
SSRF
コマンドインジェクション
記事:
SSRF:
SSRFは、Server-Side RequestForgeryの略で。
SSRFは、Webアプリケーションの脆弱性で。
これを使用すると攻撃者は、サーバ側でHTTPリクエストを実行できて。
攻撃者はサーバにそれ自体への接続を確立させる可能性があって。
また、組織のインフラ内でWebベースのサービスと対話することもできて。
コマンドインジェクション:
OSコマンドインジェクションは、Webセキュリティの脆弱性で。
これにより、攻撃者はサーバ上で任意のOSコマンドを実行できて。
通常、アプリケーションとそのすべてのデータを完全に侵害して。
問題の見つけかた:
テスト中にAPIエンドポイントが「url」パラメータ値に基づいて。
PDFファイルを生成するのを見つけて。
URLを値として取るパラメータを見つけるたびにSSRFの脆弱性を直接探して。
https://www.example.com/api/v03/create_pdf?
url=http://testsite.com&cookies=a&server=web
collaborator interactionで探索:
「url」パラメータ値を<burp-collaborator-link>に置き換えて。
パラメータ検証がサーバ側で行われるかどうかを確認して。
1分後、Burp CollaboratorでのDNS、HTTPの相互作用をいくつか見つけて。
https://www.example.com/api/v03/create_pdf?
url=http://
インラインコマンド実行を試行:
HTTPインタラクションがBurpCollaboratorで発生した場合は。
次に、インラインOSコマンドインジェクションを使用して。
下の画像を注意深く見ると。
whoamiペイロードを<burp-collaborator-link>に追加してから。
エンドポイントをリクエストして。
コラボレータのダッシュボードで「whoami」コマンドの実行が確認できて。
問題の影響を証明するために、「/etc/passwd」を表示する必要があって。
cat /etc/passwdを実行すると。
サーバ側では、スペース文字がバリデーションチェックで要求は拒否されて。
SSRFからOSへのコマンドインジェクション
「スペース」をバイパスする秘訣として。
下記が、Linux環境でスペース文字をバイパスするためペイロードで。
cat</etc/passwd
{cat,/etc/passwd}
cat$IFS/etc/passwd
しかし、上記のペイロードは機能しなくて。
数回の試行錯誤の後、下記のペイロードでコマンドを実行することができて。
cat${IFS}/etc/passwd
SSRFからOSへのコマンドインジェクション
参照:
https://speakerdeck.com/aditya45/hunting-headers-for-ssrf
https://docs.google.com/presentation/d/1JdIjHHPsFSgLbaJcHmMkE904jmwPM4xdhEuwhy2ebvo/htmlpresent
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Command%20Injection
Best regards, (^^ゞ