Subir una imagen de perfil parece una acción inofensiva, pero cuando una función de file upload carece de validaciones adecuadas, un atacante puede cargar código malicioso y tomar control visual —e incluso total— de un servidor web. Comprender cómo se produce un defacement a través de esta vulnerabilidad es fundamental para cualquier profesional de ciberseguridad que quiera proteger aplicaciones en producción.
¿Qué es un defacement y por qué debería importarte?
Un defacement es la modificación no autorizada de la apariencia de un sitio web. El atacante reemplaza el contenido original —generalmente el archivo index.php o index.html— por una página personalizada que puede contener mensajes, imágenes o incluso propaganda. Más allá del daño visual, un defacement revela que el servidor ha sido comprometido, lo que implica riesgos mucho mayores como robo de datos o escalamiento de privilegios.
Para practicar este escenario de forma segura se utiliza Metasploitable 2, una máquina virtual diseñada con vulnerabilidades intencionales. Dentro de ella se encuentra DVWA (Damn Vulnerable Web Application), que ofrece distintos módulos para probar fallos de seguridad, entre ellos el de file upload [01:00].
¿Cómo se explota un file upload sin protección?
El proceso comienza accediendo al módulo de file upload de DVWA con las credenciales por defecto (admin / password). La función permite subir archivos al servidor, algo común en cualquier aplicación que acepte fotos de perfil o documentos. El problema aparece cuando no existe ningún filtro que restrinja el tipo de archivo aceptado [01:30].
¿Qué es una web shell y cómo se utiliza?
Una web shell es una herramienta que funciona como una línea de comandos, pero a través de una interfaz web. En lugar de conectarte por SSH, accedes desde el navegador y ejecutas comandos directamente en el servidor. En la práctica se utilizó una web shell llamada Danush, un archivo PHP que, una vez subido, proporciona:
- Navegación completa por el sistema de archivos del servidor.
- Visualización de permisos, propietarios y grupos de cada archivo.
- Opciones para renombrar, descargar o eliminar archivos.
- Herramientas integradas para crackeo de contraseñas, envío de correos y ataques de denegación de servicio.
- Conexión reversa mediante NetCat para obtener una shell interactiva [03:15].
Al subir el archivo danush.php, el sistema no bloqueó la carga. El mensaje confirmó que el archivo se almacenó dos carpetas atrás, dentro de la ruta hackable/uploads/ [02:20]. Accediendo a esa ruta desde el navegador, la web shell se ejecutó mostrando un panel de inicio de sesión.
¿Cómo se realiza el defacement desde la web shell?
Danush detecta automáticamente archivos index.php o index.html y habilita un botón llamado "Deface It". Al hacer clic sobre el index.php de la carpeta upload, el contenido original fue reemplazado por una página personalizada con imágenes y texto del atacante [05:00]. Al recargar la página de file upload en DVWA, el defacement ya era visible.
¿Por qué esta vulnerabilidad es tan peligrosa?
El defacement es solo la superficie del problema. Una vez que un atacante tiene una web shell funcionando en el servidor, las posibilidades se amplían considerablemente:
- Conexión con frameworks ofensivos: se puede vincular la web shell con herramientas como Metasploit para automatizar ataques.
- Escalamiento de privilegios: subir un exploit de tipo local permite pasar de un usuario web limitado a control total del sistema operativo.
- Persistencia: el atacante puede crear accesos permanentes que sobrevivan a reinicios del servidor.
Aunque en este ejercicio no había filtros de seguridad, en entornos reales muchos sistemas implementan protecciones parciales que pueden ser evadidas mediante técnicas de bypass. Cambiar extensiones, manipular cabeceras MIME o usar doble extensión son métodos frecuentes para saltarse estas restricciones [06:45].
Existen diversas web shells además de Danush. Una muy conocida históricamente es C99.php, y también hay variantes para tecnologías como ASP, por lo que la elección depende de la plataforma del servidor objetivo.
La mejor defensa es implementar validación estricta en el servidor: verificar la extensión real del archivo, su contenido binario y limitar los tipos permitidos exclusivamente a lo necesario. Si solo se necesitan imágenes, el sistema debe aceptar únicamente formatos de imagen verificados.
¿Te gustaría aprender cómo evadir filtros de seguridad más avanzados en funciones de file upload? Compártelo en los comentarios.