Vulnerabilidad File upload

www.onlinetis.com
 

Vulnerabilidades de subida de archivos son fallos de seguridad en aplicaciones web que permiten a un atacante subir archivos maliciosos a un servidor. Si no se implementan las medidas de seguridad adecuadas, estos archivos pueden usarse para ejecutar código en el servidor, robar información, o incluso tomar el control total del sistema. 😈


Cómo un atacante explota esta vulnerabilidad

Un ataque exitoso que explota una vulnerabilidad de subida de archivos generalmente sigue estos pasos:

  1. Elige un archivo malicioso: El atacante crea un archivo con un código malicioso. A menudo, este archivo es una shell web, que es un script (como PHP, ASP o JSP) que permite al atacante ejecutar comandos del sistema a través de una interfaz web.

  2. Sube el archivo: El atacante utiliza la función de subida de archivos de la aplicación para cargar su archivo malicioso al servidor. La aplicación, debido a una validación insuficiente, acepta el archivo y lo guarda en una ubicación accesible públicamente.

  3. Ejecuta el archivo: El atacante navega a la URL donde se guardó el archivo y lo ejecuta, activando el código malicioso. Esto puede permitirle navegar por el sistema de archivos del servidor, ejecutar comandos o interactuar con la base de datos.


Tipos comunes de vulnerabilidades

Las vulnerabilidades de subida de archivos surgen de una validación de entrada insuficiente. Estas son las formas más comunes en las que una aplicación puede fallar:

  • Validación de extensión de archivo inadecuada: La aplicación permite la subida de archivos con extensiones que pueden ser ejecutables en el servidor (ej: .php, .asp, .jsp). Un atacante simplemente cambia la extensión de su archivo malicioso para que parezca inofensivo (ej: malicious_file.jpg.php).

  • Verificación de tipo de contenido MIME (Multipurpose Internet Mail Extensions) insuficiente: El tipo MIME de un archivo, como image/jpeg o text/plain, a menudo se confía en la información proporcionada por el cliente. Un atacante puede manipular fácilmente este encabezado en la solicitud HTTP para hacer que un archivo PHP parezca una imagen.

  • Carga de archivos en directorios ejecutables: Incluso si el archivo malicioso se sube, no puede ejecutarse a menos que se guarde en un directorio que permita la ejecución de scripts. Si la aplicación guarda archivos subidos en un directorio como /uploads/ que no está configurado correctamente para denegar la ejecución de scripts, la vulnerabilidad se vuelve explotable.


Cómo prevenir estas vulnerabilidades

Para protegerse de las vulnerabilidades de subida de archivos, se deben implementar múltiples capas de defensa.

  • Validar la extensión del archivo en la lista blanca: En lugar de bloquear extensiones peligrosas (lista negra), se debe permitir solo un conjunto de extensiones seguras (lista blanca), como .jpg, .png, o .pdf. 🛡️

  • Revisar el tipo de contenido MIME del archivo en el lado del servidor: Nunca confíes en el encabezado Content-Type de la solicitud HTTP. En su lugar, usa funciones del servidor para verificar el tipo de archivo real y validar que coincida con la extensión esperada.

  • Renombrar los archivos subidos: Se debe generar un nombre de archivo único y aleatorio para cada archivo subido. Esto evita que un atacante adivine la ubicación del archivo.

  • Almacenar los archivos fuera del directorio raíz de la web: Si es posible, los archivos subidos deben guardarse en un directorio que no sea accesible desde la web. Luego, se pueden servir a los usuarios a través de un script que controle la descarga.

  • Configurar el directorio de subidas: Asegúrate de que los directorios donde se guardan los archivos subidos no tengan permisos de ejecución de scripts. Por ejemplo, en un servidor Apache, esto se puede hacer con la directiva Options -Indexes.

Entradas populares de este blog

Ciberseguridad y hacking con Whatweb

Como robar contraseñas haciendo un phishing web

Arsenal software hacking NFC