mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-27 07:01:09 +00:00
70 lines
5.9 KiB
Markdown
70 lines
5.9 KiB
Markdown
|
<details>
|
||
|
|
||
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/metodologia-pentesting"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
|
||
|
- ¿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)**.
|
||
|
|
||
|
</details>
|
||
|
|
||
|
|
||
|
## **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:
|
||
|
|
||
|
`<path>\<pre><uuuu>.TMP`
|
||
|
|
||
|
* La ruta es `upload_tmp_dir`, que normalmente es `C:\Windows\Temp`
|
||
|
* El prefijo es generalmente: "php"
|
||
|
* El \<uuuu> 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)
|
||
|
|
||
|
|
||
|
<details>
|
||
|
|
||
|
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
|
||
|
|
||
|
- ¿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)**.
|
||
|
|
||
|
</details>
|