Path Traversal via Avatar Upload
Foro de seguridad donde el nombre de archivo del avatar se preserva sin sanitizar, permitiendo leer archivos del sistema como /etc/passwd via path traversal.
Aprende a encontrar este bug
Un reporte real de bug bounty, reproducido para que lo practiques.
Crea tu cuenta y practica bugs reales que se pagaron. Descarga el entorno, encuéntralo y aprende la técnica exacta — tu camino a tu primer bounty.
- hunters entrenando
- 650
- labs de reportes reales
- 50
- completaciones
- 380
- en bounties practicados
- $200.000
hunters entrenando
labs de reportes reales
completaciones
en bounties practicados
Acceso a todos los labs · sin permanencia · cancela cuando quieras
Hunters que lo han resuelto· 8
Objetivos
Logro que recibirás
Cuando resuelvas este lab desbloqueas este logro compartible
Path Traversal via Avatar Upload
Writeups de la comunidad
Credenciales
| Usuario | Contrasena | Rol |
|---|---|---|
| (registrar cuenta propia) | user |
Despliegue
# Opcion 1: autodeploy
./autodeploy.sh
# Opcion 2: manual
docker compose up --build
# Acceder
http://localhost:1300
Compatible con macOS, Linux y Windows (Docker Desktop / WSL).
Para parar:
./autodeploy.sh destroy
# o: docker compose down -v
Contenido del Lab
La aplicacion
ZeroDay Forum es un foro de seguridad informatica con perfiles de usuario y subida de avatares.
La vulnerabilidad
El endpoint de avatar preserva el filename del upload en la ruta del archivo sin sanitizar. GET /api/profile/avatar/:userId construye la ruta usando el filename almacenado, permitiendo traversal con ../../../../etc/passwd.
Cadena de ataque
1. Registrarse en el foro
2. Subir avatar con filename: ../../../../etc/passwd
3. Visitar /api/profile/avatar/:userId
4. Obtener contenido de /etc/passwd
Solucion interactiva
Accede a /writeup dentro de la aplicacion para una guia paso a paso con botones interactivos.
Flag
(contenido de /etc/passwd)
Remediacion
- Sanitizar filenames: eliminar ../ y caracteres especiales
- Usar path.basename() para extraer solo el nombre
- Almacenar archivos con nombres generados (UUID)
- Verificar que la ruta final esta dentro del directorio permitido