hacktricks/pentesting-web/file-inclusion/lfi2rce-via-temp-file-uploads.md

44 lines
4.2 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
2022-04-28 16:01:33 +00:00
HackTricksをサポートする他の方法
2022-04-28 16:01:33 +00:00
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する
- **ハッキングテクニックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
2022-04-28 16:01:33 +00:00
</details>
2022-04-28 16:01:33 +00:00
**このテクニックの詳細は[https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf)で確認してください**
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
## **PHPファイルのアップロード**
2022-04-21 00:07:27 +00:00
**PHP**エンジンがRFC 1867に従った形式でファイルを含む**POSTリクエスト**を受信すると、アップロードされたデータを保存するための一時ファイルが生成されます。これらのファイルは、PHPスクリプトでのファイルのアップロード処理に不可欠です。永続的なストレージがスクリプトの実行を超えて必要な場合は、これらの一時ファイルを所望の場所に移動するために`move_uploaded_file`関数を使用する必要があります。実行後、PHPは残っている一時ファイルを自動的に削除します。
2022-04-21 00:07:27 +00:00
{% hint style="info" %}
**セキュリティ警告:** 攻撃者は、一時ファイルの場所を把握している場合、アップロード中にファイルにアクセスしてコードを実行するためにローカルファイルインクルージョンの脆弱性を悪用する可能性があります。
2022-04-21 00:07:27 +00:00
{% endhint %}
未承認のアクセスの課題は、意図的にランダム化された一時ファイルの名前を予測することにあります。
2022-04-21 00:07:27 +00:00
#### Windowsシステムでの悪用
2022-04-21 00:07:27 +00:00
Windowsでは、PHPは`GetTempFileName`関数を使用して一時ファイル名を生成し、`<path>\<pre><uuuu>.TMP`というパターンが生成されます。特に:
2022-04-21 00:07:27 +00:00
- デフォルトのパスは通常`C:\Windows\Temp`です。
- 接頭辞は通常「php」です。
- `<uuuu>`は一意の16進数値を表します。関数の制限により、下位16ビットのみが使用されるため、一定のパスと接頭辞で最大65,535個の一意な名前が可能であり、ブルートフォースが実行可能です。
2022-04-21 00:07:27 +00:00
さらに、Windowsシステムでは悪用プロセスが簡略化されます。`FindFirstFile`関数の特異性により、ローカルファイルインクルージョンLFIパスでワイルドカードを使用できます。これにより、次のようなインクルードパスを作成して一時ファイルを特定できます。
2022-04-21 00:07:27 +00:00
```
http://site/vuln.php?inc=c:\windows\temp\php<<
```
特定の状況では、より具体的なマスク(例:`php1<<`または`phpA<<`)が必要になることがあります。これらのマスクをシステマティックに試すことで、アップロードされた一時ファイルを発見できます。
2022-04-21 00:07:27 +00:00
#### GNU/Linuxシステムでの悪用
2022-04-21 00:07:27 +00:00
GNU/Linuxシステムでは、一時ファイルの命名におけるランダム性が強固であり、その名前は予測可能でもブルートフォース攻撃にも弱くありません。詳細は参照文書に記載されています。