Snyking in: explotación de una vulnerabilidad de recorrido de directorios en el paquete st
25 de febrero de 2019
0 minutos de lecturaTe damos la bienvenida a la primera edición de una nueva serie sobre exploits que llamamos «Snyking In». Analizaremos distintas vulnerabilidades de seguridad y mostraremos cómo se pueden explotar, además del riesgo potencial que representan para tus datos y sistemas. Nuestros ejemplos siempre incluirán bibliotecas del mundo real que presenten el tipo de vulnerabilidad en al menos una de sus versiones publicadas.
Y no te preocupes, ¡no te dejaremos sin ayuda! También te mostraremos cómo encontrar y corregir vulnerabilidades en tu aplicación. Sin más preámbulos, aquí tienes nuestro primer video sobre un exploit, seguido de más información sobre la vulnerabilidad de recorrido de directorios.
Recorrido de directorios
Un ataque de recorrido de directorios (también conocido como recorrido de rutas) busca acceder a archivos y directorios almacenados fuera de la carpeta prevista. Al manipular archivos con secuencias "punto-punto-barra (../)" y sus variantes, o al usar rutas absolutas de archivos, es posible acceder a archivos y directorios arbitrarios del sistema de archivos, incluido el código fuente de la aplicación, la configuración y otros archivos críticos del sistema.
Las vulnerabilidades de recorrido de directorios suelen dividirse en dos tipos:
Divulgación de información: permite que el atacante obtenga información sobre la estructura de carpetas o lea el contenido de archivos confidenciales del sistema.
Escritura de archivos arbitrarios: permite que el atacante cree archivos o reemplace los existentes. Este tipo de vulnerabilidad también se conoce como Zip Slip.
Recorrido de directorios en st
El módulo st sirve archivos estáticos en páginas web y contiene una vulnerabilidad de este tipo. En nuestro ejemplo, servimos archivos desde la ruta pública.
Si un atacante solicita la siguiente URL a nuestro servidor, este filtrará la información confidencial almacenada en ese equipo. Ten en cuenta que %2e es la versión codificada en URL de . (punto).
Este tipo de recorrido de directorios es una vulnerabilidad de divulgación de información, lo que significa que el atacante puede leer el contenido de archivos confidenciales. El daño se limita a la información a la que el atacante puede acceder en el sistema.
El exploit de st
En el video de arriba, el ataque se realiza desde una ventana de terminal, ya que el navegador normalizaría la entrada. El primer intento de explotar la vulnerabilidad usa la notación punto-punto-barra para salir del directorio público:
Sin embargo, la biblioteca st es bastante cuidadosa con la seguridad. Protege contra el recorrido de directorios mediante punto-punto-barra. Pero, al codificar el punto en la URL, como mencionamos antes, el siguiente comando explota la vulnerabilidad con éxito:
El resultado muestra que ahora tenemos acceso al archivo package-lock.json, entre otros. Esto nos permite ver los otros módulos y las versiones correspondientes que usa la aplicación. También podemos explorar más a fondo el sistema de archivos para buscar información más confidencial, como hacemos en el video, donde exponemos el archivo /etc/passwd.
Para analizar tu aplicación en busca de vulnerabilidades en bibliotecas de terceros, como st, prueba Snyk gratis y obtén resultados al instante.
Empieza con los retos de Capture the Flag
Aprende a resolver retos de Capture the Flag viendo nuestro taller virtual de nivel básico a pedido.
