LFI2RCE via phpinfo()
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)
あなたのウェブアプリ、ネットワーク、クラウドに対するハッカーの視点を得る
実際のビジネスに影響を与える重大で悪用可能な脆弱性を見つけて報告します。 20以上のカスタムツールを使用して攻撃面をマッピングし、特権を昇格させるセキュリティ問題を見つけ、自動化されたエクスプロイトを使用して重要な証拠を収集し、あなたの努力を説得力のある報告書に変えます。
この脆弱性を悪用するには、LFI脆弱性、phpinfo()が表示されるページ、"file_uploads = on"、およびサーバーが"/tmp"ディレクトリに書き込むことができる必要があります。
https://www.insomniasec.com/downloads/publications/phpinfolfi.py
チュートリアル HTB: https://www.youtube.com/watch?v=rs4zEwONzzk&t=600s
エクスプロイトを修正する必要があります(**=>を=>**に変更)。そのためには、次のようにできます:
You have to change also the payload at the beginning of the exploit (for a php-rev-shell for example), the REQ1 (this should point to the phpinfo page and should have the padding included, i.e.: REQ1="""POST /install.php?mode=phpinfo&a="""+padding+""" HTTP/1.1), and LFIREQ (this should point to the LFI vulnerability, i.e.: LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r -- Check the double "%" when exploiting null char)
もしPHPでアップロードが許可されていて、ファイルをアップロードしようとすると、このファイルはサーバーがリクエストの処理を終えるまで一時ディレクトリに保存され、その後この一時ファイルは削除されます。
次に、ウェブサーバーにLFI脆弱性が見つかった場合、一時ファイルの名前を推測し、そのファイルにアクセスしてRCEを悪用することができます。
Windowsでは、ファイルは通常C:\Windows\temp\phpに保存されます。
Linuxでは、ファイルの名前はランダムで、/tmpにあります。名前がランダムであるため、一時ファイルの名前をどこかから抽出し、削除される前にアクセスする必要があります。これは、関数"phpconfig()"の内容内で変数$_FILESの値を読み取ることで行うことができます。
phpinfo()
PHPは4096Bのバッファを使用し、バッファが満杯になると、クライアントに送信されます。次に、クライアントは大きなリクエストをたくさん送信(大きなヘッダーを使用)し、phpリバースシェルをアップロードし、phpinfo()の最初の部分が返されるのを待ち(一時ファイルの名前が含まれている場所)、LFI脆弱性を悪用してphpサーバーがファイルを削除する前に一時ファイルにアクセスしようとします。
名前をブルートフォースするためのPythonスクリプト(長さ=6の場合)
あなたのウェブアプリ、ネットワーク、クラウドに対するハッカーの視点を得る
実際のビジネスに影響を与える重大で悪用可能な脆弱性を見つけて報告します。 20以上のカスタムツールを使用して攻撃面をマッピングし、特権を昇格させるセキュリティ問題を見つけ、自動化されたエクスプロイトを使用して重要な証拠を収集し、あなたの努力を説得力のある報告に変えます。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する: HackTricks Training GCP Red Team Expert (GRTE)