LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Osnovne informacije

Ako ste pronašli Lokalno uključivanje fajlova (LFI) čak i ako nemate sesiju i session.auto_start je Off. Ako je session.upload_progress.enabled On i pružite PHP_SESSION_UPLOAD_PROGRESS u multipart POST podacima, PHP će omogućiti sesiju za vas.

$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange'
$ ls -a /var/lib/php/sessions/
. ..
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -d 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah'
$ ls -a /var/lib/php/sessions/
. ..
$ curl http://127.0.0.1/ -H 'Cookie: PHPSESSID=iamorange' -F 'PHP_SESSION_UPLOAD_PROGRESS=blahblahblah'  -F 'file=@/etc/passwd'
$ ls -a /var/lib/php/sessions/
. .. sess_iamorange

In the last example the session will contain the string blahblahblah

Napomena je da sa PHP_SESSION_UPLOAD_PROGRESS možete kontrolisati podatke unutar sesije, tako da ako uključite svoj sesijski fajl, možete uključiti deo koji kontrolišete (na primer, php shellcode).

Iako većina tutorijala na internetu preporučuje da postavite session.upload_progress.cleanup na Off u svrhu debagovanja, podrazumevana vrednost session.upload_progress.cleanup u PHP-u je i dalje On. To znači da će se vaš napredak pri otpremanju u sesiji očistiti što je pre moguće. Dakle, ovo će biti trka stanja.

CTF

U originalnom CTF-u gde je ova tehnika komentarisana, nije bilo dovoljno iskoristiti trku stanja, već je učitani sadržaj takođe trebao da počne sa stringom @<?php.

Zbog podrazumevane postavke session.upload_progress.prefix, naš SESIJSKI fajl će početi sa dosadnim prefiksom upload_progress_ kao što je: upload_progress_controlledcontentbyattacker

Trika za uklanjanje početnog prefiksa bila je base64 enkodiranje payloada 3 puta i zatim dekodiranje putem filtera convert.base64-decode, to je zato što će PHP prilikom base64 dekodiranja ukloniti čudne karaktere, tako da će posle 3 puta samo payload poslat od strane napadača ostati (a zatim napadač može kontrolisati početni deo).

Više informacija u originalnom writeup-u https://blog.orange.tw/2018/10/ i konačni exploit https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py Još jedan writeup na https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini da podržite HackTricks:

Last updated