LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Basiese Inligting

As jy 'n Local File Inclusion gevind het, selfs as jy nie 'n sessie het nie en session.auto_start is Off. As session.upload_progress.enabled On is en jy die PHP_SESSION_UPLOAD_PROGRESS in multipart POST-data verskaf, sal PHP die sessie vir jou aktiveer.

$ 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

Let wel dat met PHP_SESSION_UPLOAD_PROGRESS jy data binne die sessie kan beheer, so as jy jou sessie lêer insluit, kan jy 'n deel insluit wat jy beheer (byvoorbeeld 'n PHP shellcode).

Alhoewel die meeste tutoriale op die internet aanbeveel dat jy session.upload_progress.cleanup op Off stel vir die doel van foutopsporing, is die verstekwaarde van session.upload_progress.cleanup in PHP steeds On. Dit beteken dat jou oplaai-vordering in die sessie so gou as moontlik skoongemaak sal word. Dit sal dus 'n Race Condition wees.

Die CTF

In die oorspronklike CTF waar hierdie tegniek bespreek word, was dit nie genoeg om die Race Condition uit te buit nie, maar die gelaai inhoud moes ook begin met die string @<?php.

As gevolg van die verstekinstelling van session.upload_progress.prefix, sal ons SESSIE-lêer begin met 'n hinderlike voorvoegsel upload_progress_ Soos: upload_progress_controlledcontentbyattacker

Die truuk om die aanvanklike voorvoegsel te verwyder was om die payload 3 keer te base64encode en dit dan te dekodeer via die convert.base64-decode filters. Dit is omdat wanneer PHP base64 dekodeer, sal dit die vreemde karakters verwyder, so na 3 keer sal slegs die payload wat deur die aanvaller gestuur is, oorbly (en dan kan die aanvaller die aanvanklike deel beheer).

Meer inligting in die oorspronklike writeup https://blog.orange.tw/2018/10/ en finale uitbuiting https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py 'n Ander writeup in https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/

Leer AWS-hacking van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated