Unirme a CiberInsider

Path Traversal: Vulnerabilidad, ejemplos reales y cómo explotarla

Índice

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.

¿Qué es Path Traversal o Directory Path Traversal?

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.

Cómo funciona un ataque de Path Traversal

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.

Directory traversal vs local file inclusion (LFI)

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.

  • LFI permite a un atacante incluir archivos locales dentro de la salida de una página, lo que a menudo lleva a la ejecución de código malicioso.
  • path traversal, en cambio, se limita a leer archivos fuera del directorio autorizado.

Para que me entiendas:

  • La vulnerabilidad LFI permite ejecutar archivos del sistema.
  • path traversal únicamente te muestra el contenido del archivo fuera del directorio en el que estás; no lo ejecuta.

Diferencias entre path traversal y absolute path traversal

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:

  • Path traversal tradicional emplea rutas relativas como ../../ para subir directorios.
  • Absolute path traversal utiliza rutas absolutas desde la raíz del sistema, como /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.

Impacto de la vulnerabilidad Path traversal

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.

Cómo prevenir un ataque de path traversal

Prevenir esta vulnerabilidad requiere una combinación de buenas prácticas, configuración segura del servidor y controles de acceso adecuados.

  1. Validación estricta de entradas: Nunca concatenes rutas con entradas del usuario sin verificarlas previamente. Usa listas blancas de archivos permitidos.
  2. Normalización de rutas: Utiliza funciones seguras como realpath() en PHP o Path.resolve() en Node.js para asegurarte de que la ruta resultante esté dentro de un directorio permitido.
  3. Restricción de acceso: Limita los permisos del servidor y de las aplicaciones para que solo puedan acceder a directorios específicos. Siempre ejecuta procesos con el menor privilegio posible.
  4. Manejo de errores seguro: Evita mostrar rutas absolutas o detalles del sistema en los mensajes de error. Esto puede dar pistas innecesarias al atacante.

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.

Clase gratuita ciberseguridad
CLASE GRATUITA
Descubre cómo conseguir tu primer trabajo en ciberseguridad para asegurar tu futuro profesional en un sector en pleno crecimiento y con muy buen salario