「Bug Bounty Remote Code Execution」からRCEを学ぶ

ソース:

medium.com

脆弱性:RCE (Remote Code Execution)

 

訳:

Web サイトにリモート コード実行の欠陥があり、安全でないアクセス ポイントを介してユーザー入力をコードとして評価しました、GETパラメータ。

 

コンテンツの検出中に次のエンドポイントを発見し。

 

https://redacted/grabber/grabber.php?sort=

このエンドポイントは、 sortパラメータで。
ご想像のとおり、これは SQL インジェクションの候補となる可能性があり。
実際、すぐに SQL インジェクションをテストしましたが、何も起こらず。
Burp Suite は、次のコマンド インジェクション手法を使用したときにアプリケーションでタイムアウトを検出し。

 

https://redacted/grabber/grabber.php?sort=%20%7B$%7Bsleep(hexdec(dechex(20)))%7D%7D 

これが PHP コマンド インジェクションの脆弱性である場合、サーバーは 20 秒間スリープする必要があり。
興味深いことに、アプリケーションはタイムアウトし。
タイムアウト脆弱性の存在を証明するものではありませんが、ユーザー入力が何らかの方法で組み込まれていることを示す可能性が高いため、この動作は常に調査する価値があり。

ブラインドテクニックがうまくいかなかったので、切り替えることにしました。
シンプルにして、次のペイロードを使用してphpinfoを実行してみました 、{${phpinfo()}} を。

 

{${phpinfo()}} について:

So, for a simple variable, single {} will work, like "{$foo}", but phpinfo() is a function, when you need to call it, you need two {}, which your example "{${phpinfo()}}", which will call phpinfo() function.

 

https://redacted/grabber/grabber.php?sort=%20%7b$%7bphpinfo()%7d%7d

アプリケーションはコマンドを正常に実行し、phpinfo の内容を表示し。 

 

 

ほなほな