LFI2RCE Via compress.zlib + PHP_STREAM_PREFER_STUDIO + Path Disclosure
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
compress.zlib://
と PHP_STREAM_PREFER_STDIO
PHP_STREAM_PREFER_STDIO
フラグを使用して compress.zlib://
プロトコルで開かれたファイルは、後で接続に到着するデータを書き続けることができます。
これは、次のような呼び出しを意味します:
http://attacker.com/fileを要求するリクエストを送信します。すると、サーバーは有効なHTTPレスポンスでリクエストに応答し、接続を維持し、後でファイルに書き込まれる追加データを送信する可能性があります。
この情報は、php-srcコードのmain/streams/cast.cのこの部分で確認できます。
このCTFは前述のトリックを使用して解決されました。
攻撃者は被害者サーバーが攻撃者のサーバーからファイルを読み取る接続を開くようにします。これは**compress.zlib
**プロトコルを使用します。
接続が存在している間、攻撃者は作成された一時ファイルのパスを外部に流出させます(サーバーによって漏洩されます)。
接続がまだ開いている間、攻撃者は自分が制御する一時ファイルを読み込むLFIを悪用します。
しかし、ウェブサーバーには**<?
を含むファイルの読み込みを防ぐチェックがあります。したがって、攻撃者はレースコンディションを悪用します。まだ開いている接続の中で、攻撃者はウェブサーバーがファイルに禁止された文字が含まれているかをチェックした後にPHPペイロードを送信しますが、その内容を読み込む前に行います。
詳細については、https://balsn.tw/ctf_writeup/20191228-hxp36c3ctf/#includerのレースコンディションとCTFの説明を確認してください。
AWSハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、練習する:HackTricks Training GCP Red Team Expert (GRTE)