# File Upload Vulnerabilities

Vulnerabilidades al carga archivos ocurre cuando el servidor web permite subir archivos sin la validación suficiente como el nombre,contenido,tipo y tamaño.

Esto puede permitir incluir un archivo que contenga un script que puede habilitar una ejecución remoto de código también conocido como[ RCE](remote-code-execution-rce).

Por ejemplo ,el sitio web puede permitir subir archivos con extensiones `.php` y `.jsp` que puede ser ejecutado el código.Un atacante podría cargar un archivo de código del lado del servidor que funcione como un [Web Shell](web-shell), otorgándole  control total sobre el servidor.

**Técnicas de Evasión:**

* **Cambio de Tipo de Contenido:** Se cambia el valor de "`Content-Type" a "image/jpeg`" en la solicitud HTTP.
* **Extensiones Ejecutables:** Se cambia la extensión del archivo a extensiones de código ejecutable, como: `".php5", ".shtml", ".asa", ".cert", ".jsp", ".jspx", ".aspx", ".asp" o ".phtml"`
* **Mayúsculas y Minúsculas:** Se cambia la capitalización de las extensiones. Por ejemplo, `"archivo.PhP" o "archivo.AspX"`.&#x20;
* **Caracteres Especiales:** Se añaden caracteres especiales al final del nombre del archivo, como espacios, puntos o caracteres nulos. Ejemplos: `"archivo.asp...", "archivo.php;jpg", "archivo.asp%00.jpg" o "1.jpg%00.php"`. El filtro podría detenerse al leer estos caracteres especiales.

**Ejemplos de Vulnerabilidades:**

* **IIS 6:** Si el nombre del archivo es `"archivo.asp;archivo.jpg"`, IIS 6 podría ejecutar el archivo como `"archivo.asp"` e ignorar la extensión `".jpg"`.
* **Nginx:** Si el nombre original del archivo es "`prueba.jpg"`, se podría cambiar a `"prueba.jpg/x.php"`. Una vez subido, Nginx podría ejecutar el archivo como `"x.php"`.

**Archivos Zip:**

* **Rutas Ocultas:** Un archivo zip puede contener un script PHP malicioso con una ruta específica para su descompresión, como `"../../../hacker.php"`. Si el sitio web no valida la ruta de descompresión, el archivo `"hacker.php"` podría terminar en esa ubicación y ejecutarse.
* **Bombas Zip (**[**Zip Bomb**](https://github.com/AbhiAgarwal/notes/wiki/Zip-bomb)**):** Se sube un archivo zip que consume demasiados recursos del servidor, provocando una denegación de servicio (`DoS`).



<mark style="color:red;">**Recursos**</mark>

{% embed url="https://portswigger.net/web-security/file-upload" %}

{% embed url="https://portswigger.net/web-security/learning-paths" %}

{% embed url="https://www.cobalt.io/blog/file-upload-vulnerabilities" %}

{% embed url="https://blog.intigriti.com/hackademy/file-upload-vulnerabilities/" %}

{% embed url="https://owasp.org/www-project-web-security-testing-guide/v41/4-Web_Application_Security_Testing/10-Business_Logic_Testing/09-Test_Upload_of_Malicious_Files" %}

{% embed url="https://book.hacktricks.xyz/pentesting-web/file-upload" %}

{% embed url="https://cheatsheet.haax.fr/web-pentest/files-and-files-inclusions/file_upload/" %}
