LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS
Last updated
Last updated
Impara e pratica l'Hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)
Se hai trovato una Inclusione di File Locale anche se non hai una sessione e session.auto_start
è Off
. Se session.upload_progress.enabled
è On
e fornisci il PHP_SESSION_UPLOAD_PROGRESS
nei dati multipart POST, PHP abilita la sessione per te.
Nota che con PHP_SESSION_UPLOAD_PROGRESS
puoi controllare i dati all'interno della sessione, quindi se includi il file della sessione puoi includere una parte che controlli (ad esempio un shellcode php).
Anche se la maggior parte dei tutorial su Internet ti consiglia di impostare session.upload_progress.cleanup
su Off
per scopi di debug, il valore predefinito di session.upload_progress.cleanup
in PHP è ancora On
. Ciò significa che il progresso del caricamento nella sessione verrà eliminato il prima possibile. Quindi si tratta di una Race Condition.
Nel CTF originale in cui questa tecnica è commentata, non è stato sufficiente sfruttare la Race Condition, ma il contenuto caricato doveva iniziare anche con la stringa @<?php
.
A causa dell'impostazione predefinita di session.upload_progress.prefix
, il nostro file SESSION inizierà con un fastidioso prefisso upload_progress_
come ad esempio: upload_progress_controlledcontentbyattacker
Il trucco per rimuovere il prefisso iniziale era codificare in base64 il payload 3 volte e quindi decodificarlo tramite i filtri convert.base64-decode
, questo perché quando decodifica in base64 PHP rimuoverà i caratteri strani, quindi dopo 3 volte solo il payload inviato dall'attaccante rimarrà (e quindi l'attaccante può controllare la parte iniziale).
Maggiori informazioni nel writeup originale https://blog.orange.tw/2018/10/ e nell'exploit finale https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py Un altro writeup in https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/
Impara e pratica l'Hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)