Con solo cambiar una parte de la URL, un atacante podría acceder a los archivos más sensibles de tu servidor. Esta vulnerabilidad se conoce como path traversal, una vulnerabilidad tan simple como peligrosa, presente en miles de aplicaciones web.
En este artículo, voy a explicar qué es la vulnerabilidad path traversal, cómo funciona, ejemplos reales y cómo puedes explotarla en un laboratorio práctico.
Primero, es necesario que conozcas qué es el path traversal.
Esta vulnerabilidad ocurre cuando una aplicación permite que los usuarios especifiquen rutas de archivos sin una validación estricta. Utilizando secuencias como ../
, los atacantes pueden navegar hacia directorios superiores desde el punto de inicio. Esto les permite acceder a archivos confidenciales, como los archivos de configuración del servidor o archivos subidos por otros usuarios.
El funcionamiento de esta vulnerabilidad es muy simple: un atacante identifica un punto de entrada en la aplicación que permite especificar un archivo, como un parámetro en una URL:
https://rinku.tech/descargar?archivo=report.pdf
Al manipular el parámetro archivo
, el atacante puede intentar acceder a otros archivos del sistema, tratando de visitar archivos fuera de su alcance:
https://rinku.tech/descargar?archivo=../../../../etc/passwd
Si la aplicación no valida correctamente la ruta, el servidor devolverá el contenido del archivo solicitado. Esto puede incluir contraseñas, configuraciones o claves de acceso.
Básicamente, estamos moviéndonos entre las carpetas superiores gracias a ../
y accediendo al archivo /etc/passwd
, el cual debería estar fuera de nuestro alcance desde un principio.
En ocasiones se suele confundir estas dos vulnerabilidades, LFI y Path Traversal.
Aunque comparten similitudes, path traversal y local file inclusion (LFI) son vulnerabilidades diferentes.
Para que me entiendas:
Además, existen dos tipos de path traversal: el tradicional y el absolute path traversal.
La diferencia clave entre ambas técnicas está en el tipo de ruta utilizada:
../../
para subir directorios./etc/passwd
.Habrá ocasiones en las que no podamos viajar hacia otros directorios con ../
, pero indicando la ruta completa conseguiremos visualizar el contenido que queremos.
Si hablamos del impacto de esta vulnerabilidad, puede ser crítico. Un atacante podría leer archivos de configuración, credenciales, claves privadas o incluso scripts internos del servidor. Esto no solo expone información sensible, sino que además puede abrir la puerta a ataques más graves, como ejecución remota de código o escalada de privilegios.
Si la aplicación se ejecuta con permisos elevados, el acceso podría extenderse a todo el sistema. En entornos compartidos, incluso podría afectar a otros usuarios o aplicaciones alojadas en el mismo servidor. Por esta razón, el Path Traversal está clasificado como una vulnerabilidad de alto riesgo por OWASP.
Prevenir esta vulnerabilidad requiere una combinación de buenas prácticas, configuración segura del servidor y controles de acceso adecuados.
realpath()
en PHP o Path.resolve()
en Node.js para asegurarte de que la ruta resultante esté dentro de un directorio permitido.Estas medidas son generales, y como siempre, todo depende del objetivo y el enfoque que la aplicación necesite.
Ahora que ya conoces cómo funciona la vulnerabilidad path traversal, ¡comenzamos con el laboratorio práctico del path traversal:
Únete a CiberInsider y prepárate para dar el primer paso a conseguir tu empleo en ciberseguridad
Al suscribirte, aceptas la política de privacidad de rinku.tech y recibir noticias, contenidos, comunicaciones relacionados con la web, gratuitos y premium.