☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! - Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) - Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com) - **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - **Comparte tus trucos de hacking enviando PRs al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
## **Carga de archivos PHP** El motor **PHP**, al **recibir un paquete POST** con **archivos codificados** según RFC 1867, **crea uno o más archivos temporales** que se utilizan para **almacenar los datos de los archivos cargados**. Se requiere un script PHP que maneje la carga de archivos para usar la función move\_uploaded\_file para mover el archivo temporal cargado a un lugar de su elección (si el script requiere que el archivo exista después de que termine). **Cuando el script termina, el motor PHP elimina todos los archivos temporales** para los archivos que se cargaron (si quedan después de que el script termine). {% hint style="info" %} **Como el atacante generalmente sabrá dónde se encuentran estos archivos temporales, en caso de encontrar una Inclusión de Archivo Local, podría cargar el archivo que se está cargando y obtener RCE.** {% endhint %} El principal problema para acceder al archivo es básicamente **adivinar su nombre (que será "aleatorio")**. ## Explotación en Windows Para generar el nombre **aleatorio en Windows**, PHP utiliza la función **`GetTempFileName`**. Al buscar en la documentación, podemos encontrar la siguiente explicación: La función GetTempFileName crea un nombre de archivo temporal con la siguiente forma: `\
.TMP`

* La ruta es `upload_tmp_dir`, que normalmente es `C:\Windows\Temp`
* El prefijo es generalmente: "php"
* El \ es un valor hexadecimal único. Sin embargo:
  * Solo se utilizan los 16 bits inferiores del parámetro uUnique. Esto limita GetTempFileName a un máximo de 65.535 nombres de archivo únicos si los parámetros lpPathName y lpPrefixString permanecen iguales. **Es posible hacer fuerza bruta.**

Como vimos, es bastante **fácil** encontrar el **archivo temporal en sistemas Windows**. Y va a ser más fácil porque no se necesita fuerza bruta aquí, gracias a una cierta peculiaridad de FindFirstFile que permite **usar máscaras** (<< como \* y > como ?) en las rutas LFI en Windows. Gracias a esto, se puede formar una **ruta de inclusión como esta**:
```
http://site/vuln.php?inc=c:\windows\temp\php<<
```
En algunos casos puede ser necesario un patrón más específico como `php1<<` o `phpA<<`. Puedes realizar un ataque de fuerza bruta con patrones más específicos hasta encontrar el archivo temporal que subiste.

## Explotación en GNU/Linux

El valor aleatorio del nombre del archivo es lo suficientemente bueno como para no ser predecible ni susceptible a ataques de fuerza bruta. Para obtener más información, consulta las referencias.

## Referencias

* [https://gynvael.coldwind.pl/?id=376](https://gynvael.coldwind.pl/?id=376)
* [https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf)


☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 - ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! - Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) - Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) - **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** - **Comparte tus trucos de hacking enviando PR al [repositorio de hacktricks](https://github.com/carlospolop/hacktricks) y al [repositorio de hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.