
Un taller paso a paso para explotar diversas vulnerabilidades en aplicaciones Node.js y Java
En este taller paso a paso aprenderás cómo explotar varias vulnerabilidades del mundo real que existen en versiones vulnerables de paquetes en una aplicación Node.js y Java.
Puedes realizar este taller de 2 formas diferentes
O
Este taller te guiará a través de la instalación y explotación de varias aplicaciones intencionalmente vulnerables. Las aplicaciones utilizarán paquetes del mundo real con vulnerabilidades conocidas, que incluyen:
Estas vulnerabilidades existen en varias aplicaciones, la mayoría de las cuales necesitarás instalar localmente o en una instancia en la nube. Las instrucciones a continuación te guiarán a través de las instalaciones locales, pero también puedes probarlas en instancias remotas en la nube.
Para cada sección de vulnerabilidad en este taller, recibirás información sobre la vulnerabilidad y el paquete en el que existe. Se te anima a intentar hackear la aplicación mediante prueba y error sin leer ninguna pista al principio. Intenta pensar cómo podrías engañar la sanitización de la aplicación y ponte en la mentalidad de un hacker. Las pistas están ahí para cuando te atasques, así que léelas en orden según necesites ayuda. Si puedes completar el hack sin pistas, ¡genial! Sin embargo, puede ser bueno leer las pistas después para asegurarte de que entraste de la misma manera que nosotros. Además, puede haber pequeños consejos que aprender también.
Dependiendo de tu elección, elige el manual de instalación adecuado
Desde tu navegador favorito, navega a http://localhost:3001 y deberías ver la siguiente página.

Tómate unos minutos explorando el sitio y, en particular, crea algunos elementos de la lista de tareas, usando texto normal "Comprar leche" así como usando markdown "Comprar **mucha** leche". También navega a la modesta página "Acerca de" enlazada desde la parte inferior de la página de inicio. Disfruta del CSS utilizado para crear esta página. Nota: las PRs enviadas para mejorar esta página no serán fusionadas ;o)

Primero, veámoslo desde el lado azul (defensivo). Haz un fork de la aplicación goof a tu propia cuenta de GitHub. La aplicación se encuentra en GitHub aquí: https://github.com/snyk/goof. Necesitamos escanear nuestra aplicación para entender las dependencias directas e indirectas que existen en la aplicación, así como las vulnerabilidades en cada biblioteca. Para hacer esto, navega a https://snyk.io y haz clic en "Registrarse" o "Iniciar sesión" (si ya eres usuario), en la parte superior derecha del sitio:

Haz clic en el botón "Iniciar sesión con tu GitHub":

A continuación, importa el proyecto goof que acabas de clonar. Selecciona goof de tu lista de repositorios de GitHub y haz clic en el botón "Importar proyectos" en la parte superior derecha de la ventana.

Cuando el proyecto haya sido escaneado, lo verás en tu panel de control:

Haz clic en el enlace package.json para ver la página del proyecto, que incluye la lista completa de vulnerabilidades de seguridad:

Puedes hacer clic en las pestañas de problemas y dependencias para ver más información sobre las vulnerabilidades y su remediación, así como dónde están siendo introducidas por tu aplicación. Notarás hacia el final de la lista de vulnerabilidades una vulnerabilidad de directory traversal en el paquete st. Veamos esto con más detalle.

Un ataque de Directory Traversal (también conocido como path traversal) tiene como objetivo acceder a archivos y directorios que están almacenados fuera de la carpeta prevista. Manipulando archivos con secuencias "punto-punto-barra" (../) y sus variaciones, o usando rutas de archivo absolutas, es posible acceder a archivos y directorios arbitrarios almacenados en el sistema de archivos, incluyendo código fuente de la aplicación, configuración y otros archivos críticos del sistema.
Las vulnerabilidades de Directory Traversal se pueden dividir generalmente en dos tipos:
El paquete en la aplicación goof que contiene una vulnerabilidad de directory traversal que explotaremos es el paquete st. Echa un vistazo a la documentación de st y familiarízate con la biblioteca.
Ahora deberías saber qué es directory traversal, qué hace el paquete st y puedes proceder a hackear la aplicación — ¡estás de vuelta en el equipo rojo! Busca en la aplicación dónde podría usarse el paquete st e intenta navegar a un directorio al que no deberías tener acceso.
Aquí hay algunas pistas para darte pistas si te atas — trata de no mirarlas hasta que ya hayas intentado por tu cuenta.
Haz clic para ver Pista 1.
Haz clic para ver Pista 2.
Haz clic para ver Pista 3.
Haz clic para ver Pista 4.
Haz clic para ver Pista 5.
Haz clic para ver Pista 6.
Haz clic para ver Pista 7.
Haz clic para ver Pista 8.
Haz clic para ver Pista 9.