LFI2RCE putem PHP_SESSION_UPLOAD_PROGRESS

Reading time: 3 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Osnovne informacije

Ako ste pronašli Local File Inclusion čak i ako nemate sesiju i session.auto_start je Isključeno. Ako je session.upload_progress.enabled Uključeno i pružite PHP_SESSION_UPLOAD_PROGRESS u multipart POST podacima, PHP će omogućiti sesiju za vas.

bash
$ 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 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).

napomena

Iako većina tutorijala na Internetu preporučuje da postavite session.upload_progress.cleanup na Off u svrhu debagovanja. Podrazumevano session.upload_progress.cleanup u PHP-u je i dalje On. To znači da će vaš napredak u uploadu u sesiji biti očišćen što je pre moguće. Dakle, ovo će biti Race Condition.

CTF

U originalnom CTF gde je ova tehnika komentarisana, nije bilo dovoljno iskoristiti Race Condition, već je sadržaj koji se učitava morao da počne i sa stringom @<?php.

Zbog podrazumevanog podešavanja session.upload_progress.prefix, naš SESSION fajl će početi sa dosadnim prefiksom upload_progress_ Kao što je: upload_progress_controlledcontentbyattacker

Trik da uklonite inicijalni prefiks bio je da base64 kodirate payload 3 puta i zatim ga dekodirate putem convert.base64-decode filtera, to je zato što kada base64 dekodirate PHP će ukloniti čudne karaktere, tako da nakon 3 puta samo payload poslat od strane napadača će ostati (i tada napadač može kontrolisati inicijalni deo).

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

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks