tip
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)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Consulta los detalles completos de esta t茅cnica en https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf
Subidas de archivos PHP
Cuando un motor PHP recibe una solicitud POST que contiene archivos formateados de acuerdo con la RFC 1867, genera archivos temporales para almacenar los datos subidos. Estos archivos son cruciales para el manejo de subidas de archivos en scripts PHP. La funci贸n move_uploaded_file
debe ser utilizada para trasladar estos archivos temporales a una ubicaci贸n deseada si se necesita almacenamiento persistente m谩s all谩 de la ejecuci贸n del script. Despu茅s de la ejecuci贸n, PHP elimina autom谩ticamente cualquier archivo temporal restante.
note
Alerta de seguridad: Los atacantes, conscientes de la ubicaci贸n de los archivos temporales, podr铆an explotar una vulnerabilidad de Inclusi贸n de Archivos Local (LFI) para ejecutar c贸digo accediendo al archivo durante la subida.
El desaf铆o para el acceso no autorizado radica en predecir el nombre del archivo temporal, que se randomiza intencionalmente.
Explotaci贸n en sistemas Windows
En Windows, PHP genera nombres de archivos temporales utilizando la funci贸n GetTempFileName
, resultando en un patr贸n como <path>\<pre><uuuu>.TMP
. Notablemente:
- La ruta predeterminada es t铆picamente
C:\Windows\Temp
. - El prefijo suele ser "php".
- El
<uuuu>
representa un valor hexadecimal 煤nico. Crucialmente, debido a la limitaci贸n de la funci贸n, solo se utilizan los 16 bits inferiores, permitiendo un m谩ximo de 65,535 nombres 煤nicos con ruta y prefijo constantes, lo que hace que el ataque por fuerza bruta sea factible.
Adem谩s, el proceso de explotaci贸n se simplifica en sistemas Windows. Una peculiaridad en la funci贸n FindFirstFile
permite el uso de comodines en las rutas de Inclusi贸n de Archivos Local (LFI). Esto permite crear una ruta de inclusi贸n como la siguiente para localizar el archivo temporal:
http://site/vuln.php?inc=c:\windows\temp\php<<
En ciertas situaciones, puede ser necesaria una m谩scara m谩s espec铆fica (como php1<<
o phpA<<
). Se pueden probar sistem谩ticamente estas m谩scaras para descubrir el archivo temporal subido.
Explotaci贸n en sistemas GNU/Linux
Para sistemas GNU/Linux, la aleatoriedad en la nomenclatura de archivos temporales es robusta, lo que hace que los nombres no sean predecibles ni susceptibles a ataques de fuerza bruta. Se pueden encontrar m谩s detalles en la documentaci贸n referenciada.
tip
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)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripci贸n!
- 脷nete al 馃挰 grupo de Discord o al grupo de telegram o s铆guenos en Twitter 馃惁 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.