Hello there, ('ω')ノ
SSRFをOSコマンドインジェクションに変えた未知のLinuxシークレットを。
脆弱性:
SSRF
コマンドインジェクション
記事:
サーバ側のリクエストフォージェリをエスカレートするための奇妙なアプローチを。
SSRFは、Server-SideRequestForgeryの略で。
SSRFは、一種のWebアプリケーションの脆弱性で。
これを使用すると、攻撃者はサーバ側でHTTPリクエストを実行できて。
一般に、攻撃者はサーバにサーバ自体への接続を確立させる可能性があって。
また、組織のインフラ内でWebベースのサービスと対話することもできて。
OSコマンドインジェクション(シェルインジェクションとも呼ばれます)は。
攻撃者がアプリケーションを実行しているサーバー上で。
任意のオペレーティングシステム(OS)コマンドを実行して。
通常はアプリケーションとそのすべてのデータを完全に侵害することを。
可能にするWebセキュリティの脆弱性で。
問題をどのように見つけたかについては。
テスト中に、APIエンドポイントがその「url」パラメータ値に基づいて。
pdfファイルを生成するのを観察して。
URLを値として取るパラメータを見つけるたびに、SSRFの脆弱性を直接探して。
https://www.example.com/api/v03/create_pdf?url=http://testsite.com&cookies=a&server=web
「url」パラメータ値をBurp Collaboratorリンクに置き換えて。
パラメータ検証がサーバ側で行われるかどうかを確認することに。
1分後、Burp CollaboratorでのDNS、HTTPの相互作用をいくつか観察して。
https://www.example.com/api/v03/create_pdf?url=http://
Burp CollaboratorでHTTPインタラクションが発生した場合は。
インラインOSコマンドインジェクションを使用して。
`whoami`ペイロードをBurpCollaboratorリンクに追加してから。
エンドポイントをリクエストして。
BurpCollaboratorダッシュボードで取得できる「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へのコマンドインジェクションで。
Best regards, (^^ゞ