Travesia de Ruta
Rutas de archivos construidas con input de usuario sin validar permiten a los atacantes leer o escribir archivos arbitrarios en el servidor usando secuencias ../.
Cómo Funciona
La travesia de ruta ocurre cuando una aplicacion usa input del usuario para construir rutas de archivos sin validacion adecuada. Un atacante puede inyectar secuencias ../ (dot-dot-slash) para navegar fuera del directorio esperado. Por ejemplo, solicitar /files?name=../../../etc/passwd lee el archivo de passwords del sistema. En Windows, ..\..\..\windows\system32\config\sam logra resultados similares. Esta vulnerabilidad permite a los atacantes leer archivos de configuracion, codigo fuente, variables de entorno y cualquier archivo al que el proceso del servidor pueda acceder. Cuando se combina con operaciones de escritura, los atacantes pueden sobrescribir archivos de la aplicacion o inyectar codigo malicioso.
const path = require('path');
app.get('/files/:name', (req, res) => {
const filePath = path.join(__dirname, 'uploads', req.params.name);
res.sendFile(filePath);
});const path = require('path');
app.get('/files/:name', (req, res) => {
const uploadsDir = path.resolve(__dirname, 'uploads');
const filePath = path.resolve(uploadsDir, req.params.name);
if (!filePath.startsWith(uploadsDir)) {
return res.status(403).json({ error: 'Access denied' });
}
res.sendFile(filePath);
});Ejemplo Real
En 2021, una vulnerabilidad de travesia de ruta en Apache HTTP Server (CVE-2021-41773) permitio a los atacantes acceder a archivos fuera del document root. Combinada con CGI, habilito ejecucion remota de codigo. La vulnerabilidad fue explotada activamente en pocas horas tras su divulgacion.
Cómo Prevenirlo
- Resuelve la ruta completa y verifica que comience con el directorio base esperado
- Usa path.resolve() y compara con startsWith() para prevenir escape de directorio
- Nunca pases input del usuario directamente a operaciones del sistema de archivos
- Usa un sistema de nombres basado en UUID en vez de nombres proporcionados por el usuario
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Carga de Archivo sin Validacion
highAceptar cargas de archivos sin verificar tipo, tamano o contenido permite a los atacantes subir ejecutables maliciosos, web shells o archivos sobredimensionados que crashean el servidor.
SVG con JavaScript
mediumAceptar cargas de SVG sin sanitizacion permite a los atacantes embeber JavaScript en archivos SVG, habilitando ataques XSS cuando el SVG se renderiza en un navegador.
EXIF No Eliminado
lowImagenes servidas sin eliminar metadatos EXIF pueden filtrar coordenadas GPS, informacion del dispositivo, timestamps y otros datos sensibles de la persona que tomo la foto.
Inyeccion en Generacion de PDF
mediumInyectar HTML o JavaScript en templates de generacion de PDF permite a los atacantes leer archivos del servidor, hacer requests a la red interna o ejecutar scripts en el visor de PDF.