LFI2RCE via phpinfo()
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:
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)
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)
Last updated