NOTA IMPORTANTE: El delito informático está severamente castigado por la ley. Esta página no promueve el delito informático, es divulgativa y muestra los mecanismos que utilizan los cibercriminales para poder identificar el ataque si has sido victima de uno de ellos. En el caso de que hayas sido victima de un ataque te recomendamos que busques recursos legales en la sección Cibercrime Law o en la página del Instituto Nacional de Ciberseguridad: https://www.incibe.es/

BlogWonderHowTo

Guía para principiantes de la tienda de jugos OWASP, su práctica de piratería para las 10 vulnerabilidades de aplicaciones web más comunes

Las vulnerabilidades de las aplicaciones web son uno de los puntos más importantes a considerar en cualquier prueba de penetración o evaluación de seguridad. Si bien algunas áreas de seguridad requieren una red doméstica o una computadora para realizar las pruebas, la creación de un sitio web de prueba para aprender la seguridad de las aplicaciones web requiere un enfoque ligeramente diferente. Para un entorno seguro para aprender sobre la piratería de aplicaciones web, OWASP Juice Shop puede ayudar.

La profundidad y variedad de tecnologías web proporcionan una superficie de ataque grande y compleja. Hay una variedad de lenguajes de marcado que forman componentes gráficos de sitios web, lenguajes de scripting que manejan la interacción del frontend del sitio web, lenguajes de backend que manipulan datos, sistemas de administración de bases de datos que administran estos datos y tecnologías de servidor que mantienen los sitios web en línea. Cada uno de estos tiene sus propias vulnerabilidades y cada una de estas vulnerabilidades puede explotarse.

OWASP Juice Shop es una aplicación web intencionalmente vulnerable para capacitación en seguridad escrita en JavaScript. Está lleno de desafíos de piratería de todos los niveles de dificultad diferentes destinados al usuario a explotar y es una manera fantástica de comenzar a aprender sobre la seguridad de las aplicaciones web.

Haciendo referencia al Top 10 de OWASP

El Proyecto OWASP Top 10 es un documento del Proyecto de seguridad de aplicaciones web abiertas. Su objetivo es enumerar y archivar las fallas más comunes presentes en las aplicaciones web. A partir del Versión 2017, los elementos de la lista son los siguientes.

  • inyección
  • autenticación rota
  • exposición de datos sensibles
  • Entidades externas XML (XXE)
  • control de acceso roto
  • mala configuración de seguridad
  • secuencias de comandos entre sitios (XSS)
  • deserialización insegura
  • utilizando componentes con vulnerabilidades conocidas
  • registro y seguimiento insuficientes

Cada una de estas vulnerabilidades puede estar presente en todo tipo de sitios web diferentes y, a menudo, conducen a abusos como phishing, exfiltración de bases de datos, spam, distribución de malware y otras violaciones de la privacidad y la seguridad. Como desarrollador web, es fundamental poder reconocer y comprender estos ataques para prevenirlos. Para un probador de penetración, comprender estas categorías de vulnerabilidad puede permitirle mejorar sus propias habilidades de piratería de aplicaciones web.

Para comenzar a practicar estos ataques, se puede comenzar instalando OWASP Juice Shop, que incluye vulnerabilidades de todas las categorías Top 10 de OWASP.

Paso 1: instalar Docker

Según el sitio web del proyecto, Estibador proporciona “una forma de ejecutar aplicaciones aisladas de forma segura en un contenedor, empaquetadas con todas sus dependencias y bibliotecas”. Esto significa que para una herramienta como OWASP Juice Shop, se puede empaquetar y distribuir fácilmente una pila completa similar a un servidor artificial.

Mientras que OWASP Juice Shop ofrece un pocas opciones de instalación, incluidos Node.js y Vagrant, he descubierto que en Linux y macOS, la opción más sencilla es Docker.

Si tiene problemas con la instalación de Docker o su sistema operativo no es compatible con Docker, es posible que Node.js también sea una opción conveniente. Las instrucciones de instalación para otras plataformas también las proporciona el Documentación de la tienda de jugos.

Docker es compatible con Windows, macOS y Linux, con descargas de paquetes disponibles en el Página de instalación de Docker. Las instrucciones de instalación varían según la plataforma, pero para este ejemplo, analizaremos la instalación de Docker en un sistema basado en Debian como Ubuntu o Kali.

Para comenzar la instalación, primero, instale los paquetes de requisitos previos para permitir apt-get para usar un repositorio sobre HTTPS ejecutando el siguiente comando en un emulador de terminal.

sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

A continuación, agregue la clave GPG de Docker, que permitirá verificar la integridad de los paquetes.

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Ahora, puede agregar el repositorio de Docker a su sistema. Si el siguiente comando falla, también puede usar el editor de texto de su elección para editar el archivo /etc/apt/sources.list manualmente. Este archivo es la lista de repositorios en los sistemas que utilizan el administrador de paquetes APT. Simplemente agregue el componente del comando a continuación que está entre comillas a una nueva línea en este archivo, reemplazando “$ (lsb_release -cs)” con la salida del lsb_release -cs comando cuando se ejecuta en su sistema. De lo contrario, simplemente ejecutar este comando solo debería ser suficiente para actualizar su lista de repositorios.

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

Con este repositorio agregado, puede instalar Docker actualizando primero sus repositorios y luego usando apt-get install para instalar la herramienta. Esto se puede hacer ejecutando el siguiente comando.

sudo apt-get update && sudo apt-get install docker-ce

Si está utilizando un sistema basado en Systemd, ahora puede iniciar el servicio Docker con el siguiente comando.

sudo systemctl start docker

Paso 2: Instale la tienda de jugos OWASP

Una vez que Docker esté instalado y ejecutándose, lo primero que usaremos será una copia de los archivos de OWASP Juice Shop localmente. Para hacer esto, ejecute el siguiente comando.

docker pull bkimminich/juice-shop

A continuación, podemos iniciar Juice Shop ejecutando el siguiente comando, vinculando el servicio al puerto 3000.

docker run --rm -p 3000:3000 bkimminich/juice-shop

Cuando la línea de comandos de Docker imprime “servidor escuchando en el puerto 3000”, el servicio debería estar listo para usarse.

root@navi ~# systemctl start docker
root@navi ~# docker pull bkimminich/juice-shop
Using default tag: latest
latest: Pulling from bkimminich/juice-shop
Digest: sha256: 056aa33f600adb143a1128e2ae42f4021f15d726347155ae4bdd37fba4e0c486
Status: Image is up to date for bkimminich/juice-shop:latest
root@navi ~# docker run --rm -p 3000:3000 bkimminich/juice-shop

> juice-shop@7.2.1 start /juice-shop
> node app

Server listening on port 3000

Una vez que esto se esté ejecutando, Juice Shop se puede abrir en un navegador web, como cualquier otro sitio web. En Linux, la tienda se encuentra en http: // localhost: 3000. En macOS y Windows, puede estar ubicado en http://192.168.99.100:3000.

Si la página se abre en su navegador web y se muestra correctamente, ¡Juice Shop está lista para ser pirateada!

Paso 3: analizar el código HTML de la tienda de jugos

Una de las formas más sencillas de comenzar a analizar una aplicación web es mirar el HTML de una página determinada. Para hacerlo, simplemente use la función “Ver código fuente de la página” de su navegador web, generalmente disponible en la sección “Herramientas para desarrolladores” o en un menú con un nombre similar.

HTML, que significa HyperText Markup Language, no es un lenguaje de programación en el sentido tradicional, sino un lenguaje de marcado como sugiere el acrónimo. A diferencia de un lenguaje de programación, que define comportamientos como procesos y secuencias de instrucciones, el código HTML simple se usa principalmente para encapsular otros elementos de una página web y colocarlos dentro de una página. Si bien HTML5 se ha expandido pasando esta función relativamente limitada y ha agregado algunas capacidades tradicionalmente manejadas por JavaScript y PHP, sigue siendo ampliamente utilizado para la composición.

Debido a que el HTML convencional no sigue los procesos de programación tradicionales, la sintaxis generalmente envuelve otras partes de la página web. Hay etiquetas para designar texto, imágenes, enlaces, barras de menú y otros tipos de contenido multimedia o scripts incrustados. Esto significa que, generalmente, HTML no es posible explotar directamente debido a cualquier tipo de vulnerabilidad, pero puede darnos una pista de lo que está haciendo el sitio web, visible para el usuario o de otra manera.

A continuación se muestra un ejemplo de este tipo de conocimiento. Si bien el código HTML en sí no presenta ninguna oportunidad de ataque, la lista de archivos JavaScript a los que hace referencia la página dentro de las etiquetas “script” alerta a uno sobre algunas de las funciones detrás de escena del sitio web, algunas de las cuales pueden resultar ser un superficie de ataque viable más tarde.

Más adelante en el código, también se pueden notar algunas de las diferentes páginas vinculadas por esta página. Algunos de estos se muestran en el menú de encabezado de la página, pero otros, como la página del “tablero de resultados”, no.

El descubrimiento de un enlace como este puede conducir a una mayor comprensión de la estructura del sitio web, así como a encontrar datos que se pretendía que fueran privados.

Paso 4: use el sistema de tablero de puntuación

Si sigue el enlace descubierto en el paso anterior, se le dirigirá a la página del tablero de puntuación de la tienda de jugos. No es solo un elemento estático del sitio web, este cuadro de indicadores se actualizará a medida que se completen diferentes tareas. De hecho, con solo descubrir la página en sí, se resolverá el primer desafío.

La página le alertará sobre el hecho de que ha logrado resolver un desafío, y también puede notar que la alerta también está presente en el registro de línea de comandos de Juice Shop.

> juice-shop@7.2.1 start /juice-shop
> node app

Server listening on port 3000
Solved challenge Score Board (Find the carefully hidden 'Score Board' page.)

Una vez que tenga acceso al marcador, podrá ver algunos de los otros objetivos de cada sección. En la columna de la derecha, también puede colocar el cursor del mouse sobre el indicador de estado “sin resolver” para obtener una pista o hacer clic en el icono para acceder a la documentación adicional del desafío.

Este mismo formato será continuo durante todo el proceso de ataque a la Juice Shop. Los diferentes desafíos se dividen por nivel de dificultad, y la página del marcador proporciona una guía ideal para completarlos en un orden lógico.

Paso 5: use la consola de JavaScript para analizar el sitio

Otra forma de comenzar a comprender la estructura y función del sitio es utilizar la consola de desarrollo de su navegador web para ver qué scripts se están ejecutando. El depurador también puede notificarle de posibles errores, algunos de los cuales también pueden resultar ser vulnerabilidades de seguridad. Como en el caso que se muestra a continuación, JavaScript a veces también puede llevarnos a descubrir elementos que estaban destinados a ser privados, como el enlace a “Administration.html” en el archivo JavaScript “juice-shop.min.js”.

Si elige seguir este enlace a la página “Administración”, ¡ya habrá resuelto el próximo desafío!

Prestar atención al JavaScript dentro de la tienda de jugos resultará útil a medida que los desafíos aumenten en dificultad, por lo que es posible que desee dejar la consola de su navegador web abierta.

Paso 6: Provoca un error en el sitio web

Uno de los objetivos del marcador es provocar un error que no se maneja adecuadamente. Este tipo de error generalmente es el resultado de un manejo inadecuado de la entrada no estándar. Si bien hay más de unas pocas formas de crear este tipo de error dentro de la tienda de jugos, una forma de hacerlo es utilizando la página de inicio de sesión.

Primero, haga clic en el enlace “Iniciar sesión” en el encabezado del sitio web. A continuación, inicie sesión usando el formulario, pero en lugar de usar un nombre de usuario normal, simplemente inserte un apóstrofo. Puede usar lo que elija como contraseña. Una vez que se complete el formulario, haga clic en el botón de inicio de sesión.

Verá que este error está lejos de ser legible por humanos, pero proporciona información sobre el backend del sitio web. Después de que se muestra este error, se completa otro desafío, “Provocar un error que no se maneja con mucha elegancia”, y se muestra en el marcador.

Paso 7: use XSS básico

El último truco que intentaremos en la tienda de jugos es un simple ataque XSS reflectante. Similar al error causado anteriormente por entradas no estándar, si los formularios no se están validando, a veces incluso se puede inyectar y ejecutar código. Para probar esto, usaremos la cadena de JavaScript simple que se muestra a continuación.

<script>alert("XSS")</script>

Este breve script simplemente abrirá un pequeño cuadro de alerta con el texto “XSS” si se ejecuta. Sin embargo, a diferencia de la página de inicio de sesión, buscaremos un tipo de formulario diferente. Específicamente, puede ser ideal buscar un formulario que esté destinado a devolver contenido a un usuario o uno que envíe contenido al sitio web directamente.

Una forma simple en la que podemos probar este ataque es la forma de búsqueda. Simplemente ingrese la cadena corta de JavaScript en el cuadro de texto y presione “Buscar” para ver qué sucede.

Si el guión tiene éxito, ¡habrá completado otra bandera!

Solo hemos comenzado a tocar las banderas y los desafíos incluidos en la tienda de jugos, pero todos los desafíos más difíciles siguen aproximadamente el mismo formato. OWASP Juice Shop es una plataforma ideal para aprender las pruebas de penetración de aplicaciones web con cero riesgos de daños reales. Completar el desafío llevará tiempo, ¡pero le permitirá convertirse en un experto en seguridad de aplicaciones web!

¡Gracias por leer! Si tiene alguna pregunta, puede dejar un comentario a continuación o contactarme en Twitter en @tahkion.

Imagen de portada y capturas de pantalla de Takhion / Null Byte

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar