LFI2RCE via PHP_SESSION_UPLOAD_PROGRESS
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Si encuentras una Inclusión de Archivos Locales incluso si no tienes una sesión y session.auto_start
está en Off
. Si session.upload_progress.enabled
está en On
y proporcionas el PHP_SESSION_UPLOAD_PROGRESS
en los datos de POST multipart, PHP habilitará la sesión por ti.
Ten en cuenta que con PHP_SESSION_UPLOAD_PROGRESS
puedes controlar los datos dentro de la sesión, por lo que si incluyes tu archivo de sesión puedes incluir una parte que controles (por ejemplo, un shellcode php).
Aunque la mayoría de los tutoriales en Internet recomiendan establecer session.upload_progress.cleanup
en Off
con fines de depuración, el valor predeterminado de session.upload_progress.cleanup
en PHP sigue siendo On
. Esto significa que tu progreso de carga en la sesión se limpiará lo antes posible. Por lo tanto, esto será una Condición de Carrera.
En el CTF original donde se comenta esta técnica, no fue suficiente explotar la Condición de Carrera, sino que el contenido cargado también necesitaba comenzar con la cadena @<?php
.
Debido a la configuración predeterminada de session.upload_progress.prefix
, nuestro archivo de SESIÓN comenzará con un molesto prefijo upload_progress_
como por ejemplo: upload_progress_controlledcontentbyattacker
El truco para eliminar el prefijo inicial fue codificar en base64 la carga útil 3 veces y luego decodificarla mediante filtros convert.base64-decode
, esto se debe a que al decodificar en base64 PHP eliminará los caracteres extraños, por lo que después de 3 veces solo la carga útil enviada por el atacante permanecerá (y luego el atacante puede controlar la parte inicial).
Más información en el informe original https://blog.orange.tw/2018/10/ y en la explotación final https://github.com/orangetw/My-CTF-Web-Challenges/blob/master/hitcon-ctf-2018/one-line-php-challenge/exp_for_php.py Otro informe en https://spyclub.tech/2018/12/21/one-line-and-return-of-one-line-php-writeup/
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)