tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

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 seg煤n 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 aleatoriza 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

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks