Saltar al contenido
Portada » Blog – Laprovittera Carlos » TryHackMe CompTIA Pentest+ Owasp juice shop

TryHackMe CompTIA Pentest+ Owasp juice shop

Hola hacketones! Bienvenidos a un nuevo CTF hoy veremos: TryHackMe CompTIA Pentest+ Owasp juice shop

En esta sala, analizaremos  las 10 principales vulnerabilidades de OWASP  en aplicaciones web. Estas vulnerabilidades se encuentran en todo tipo de aplicaciones web. Pero hoy analizaremos Juice Shop, la creación de OWASP .

¡Se recomiendan las habitaciones Burpsuite GRATUITAS ‘ Burpsuite Basics ‘ y ‘ Burpsuite Repeater

‘ antes de completar esta habitación! ~

Juice Shop es una aplicación grande, por lo que no cubriremos todos los temas de los 10 principales.

Sin embargo, cubriremos los siguientes temas que le recomendamos que consulte a medida que avance en esta sala.

<————————————————->

Inyección

Autenticación rota

Exposición de datos confidenciales

Control de acceso roto

Secuencias de comandos entre sitios XSS

<————————————————->

¡TENGA EN CUENTA!

A partir de la [Tarea 3] se requerirá una bandera, que se mostrará al finalizar la tarea.

Solución de problemas

La aplicación web tarda entre 2 y 5 minutos en cargarse, ¡así que ten paciencia!

Desactiva temporalmente Burp en la configuración de proxy de tu navegador actual. Actualiza la página y se mostrará la bandera. 

(Este no es un problema con la aplicación, sino un problema con Burp que impide que se muestre la bandera ) .

Si estás realizando tareas XSS y no funcionan, borra las cookies y los datos del sitio, ya que esto a veces puede ser un problema. 

Si está seguro de haber completado la tarea, pero aún no funciona, vaya a la  [Tarea 8] para comprobar su finalización.

Créditos a  OWASP  y  Bjorn Kimminich

Responda las preguntas a continuación

¡Vamos a la aventura!

Antes de empezar con el hacking, conviene echar un vistazo. En Burp, desactiva el modo Interceptar y explora el sitio. Esto permite que Burp registre diferentes solicitudes del servidor que pueden ser útiles más adelante. 

Esto se llama recorrer la aplicación, ¡lo cual también es una forma de reconocimiento !

Responda las preguntas a continuación

Pregunta n.° 1: ¿Cuál es la dirección de correo electrónico del administrador?

Las reseñas muestran el correo electrónico de cada usuario. Al hacer clic en el producto Apple Juice, se muestra el correo electrónico del administrador.

admin@juice-sh.op

Pregunta n°2: ¿Qué parámetro se utiliza para la búsqueda? 

Haga clic en la lupa en la parte superior derecha de la aplicación y aparecerá una barra de búsqueda.

Luego podemos ingresar algún texto y al presionar Enter buscaremos el texto que acabamos de ingresar.

Ahora preste atención a la URL que se actualizará con el texto que acabamos de ingresar.

Ahora podemos ver el parámetro de búsqueda después de /#/search? la letra q

q

Pregunta n°3: ¿A qué programa hace referencia Jim en su reseña? 

Jim hizo una reseña del producto Green Smoothie. Vemos que menciona un replicador. 

Si buscamos en Google » replicador » obtendremos los resultados indicando que es de un programa de televisión llamado Star Trek.

Star Trek

Inyectar el jugo

Esta tarea se centrará en las vulnerabilidades de inyección. Estas vulnerabilidades son muy peligrosas para una empresa, ya que pueden causar tiempo de inactividad o pérdida de datos. Identificar los puntos de inyección dentro de una aplicación web suele ser bastante sencillo, ya que la mayoría de ellos devolverán un error. Existen muchos tipos de ataques de inyección, algunos de ellos son:

Inyección SQLLa inyección SQL se produce cuando un atacante introduce una consulta maliciosa o malformada para recuperar o manipular datos de una base de datos. Y, en algunos casos, acceder a cuentas.
Inyección de comandosLa inyección de comandos ocurre cuando las aplicaciones web toman datos de entrada o controlados por el usuario y los ejecutan como comandos del sistema. Un atacante puede manipular estos datos para ejecutar sus propios comandos del sistema. Esto se observa en aplicaciones que realizan pruebas de ping mal configuradas. 
Inyección de correo electrónicoLa inyección de correo electrónico es una vulnerabilidad de seguridad que permite a usuarios maliciosos enviar mensajes de correo electrónico sin autorización previa del servidor. Esto ocurre cuando el atacante añade datos adicionales a los campos, que el servidor no interpreta correctamente. 

Pero en nuestro caso, utilizaremos inyección SQL .

Para más información:  Inyección

Responda las preguntas a continuación

Pregunta n.° 1: ¡Inicie sesión en la cuenta de administrador!

Después de navegar a la página de inicio de sesión, ingrese algunos datos en los campos de correo electrónico y contraseña.

 Antes de  hacer clic en enviar, asegúrese de que  el modo Interceptar esté  activado .

¡Esto nos permitirá ver los datos enviados al servidor!

Ahora cambiaremos la » a » al lado del correo electrónico a:  ‘ o 1=1–  y lo reenviaremos al servidor.

¿Por qué funciona esto?

  1. El carácter  cerrará los corchetes en la consulta SQL
  2. La instrucción » OR » en una sentencia SQL devolverá verdadero si cualquiera de sus lados es verdadero. Como  1=1 siempre es verdadero , toda la sentencia es verdadera. Por lo tanto, le indicará al servidor que el correo electrónico es válido y nos permitirá iniciar sesión con  el ID de usuario 0 , que corresponde a la cuenta de administrador.
  3. El  carácter   se usa en SQL para comentar datos. Cualquier restricción al inicio de sesión dejará de funcionar, ya que se interpreta como un comentario. Es similar a los  comentarios  y  //  en Python y JavaScript, respectivamente.

La explicacion de THM es una mierda y no funciona para resolverlo hagan esto: solo pongan en el mail

admin@juice-sh.op’– y en pass: a

690fa3247a99d651e0b26f947baf0b79b4f404a9

Pregunta n.° 2: ¡Inicie sesión en la cuenta de Bender!

Al igual que hicimos en  la pregunta n.° 1 , ahora iniciaremos sesión en la cuenta de Bender. Capturaremos la solicitud de inicio de sesión de nuevo, pero esta vez usaremos  bender@juice-sh.op’–  como correo electrónico. 

5ff5052e879e6fef64124e64c82c84ebc809c6c4

¡Ahora, envía esto al servidor!

Pero ¿por qué no ponemos el  1=1 ?

Como la dirección de correo electrónico es válida (lo que devolverá  «true» ), no necesitamos forzar su validez  . Por lo tanto, podemos usar  «–« para omitir el sistema de inicio de sesión. Tenga en cuenta que » 1=1″ se puede usar cuando el correo electrónico o el nombre de usuario son desconocidos o no son válidos.

¿¡Quién rompió mi cerradura!?

En esta tarea, analizaremos cómo explotar la autenticación mediante diferentes vulnerabilidades. Al hablar de vulnerabilidades de autenticación, incluimos mecanismos vulnerables a la manipulación. Estos mecanismos, que se enumeran a continuación, son los que explotaremos. 

Contraseñas débiles en cuentas con altos privilegios

Páginas de contraseña olvidada

 Más información:  Autenticación rota

Responda las preguntas a continuación

Pregunta n.° 1: ¡Forzar la contraseña de la cuenta de administrador!

Usamos inyección SQL para iniciar sesión en la cuenta de administrador, pero aún desconocemos la contraseña. ¡Intentemos un ataque de fuerza bruta! Capturaremos de nuevo una solicitud de inicio de sesión, pero en lugar de enviarla a través del proxy, la enviaremos a Intruder.

Vaya a Posiciones y seleccione el  botón Borrar §  . En el campo de contraseña, escriba dos § entre comillas. Para aclarar,  § no representa dos entradas separadas, sino la implementación de Burp de las comillas, por ejemplo, «» .  La solicitud debería verse como la imagen de abajo.  

Para la carga útil, usaremos el  archivo best1050.txt de Seclists (que se puede instalar con apt-get install seclists ) .

Puede cargar la lista desde:  /usr/share/wordlists/SecLists/Passwords/Common-Credentials/best1050.txt

Una vez cargado el archivo en Burp, inicie el ataque. Deberá filtrar la solicitud por estado.

Una  solicitud fallida  recibirá un  error 401 No autorizado.   

Mientras que una  solicitud exitosa  devolverá un  200 OK . 

Una vez completado, inicie sesión en la cuenta con la contraseña.

Ff4aebffe31b0ffdea9bdd0207a16a3c01ac6c56

Admin123

Pregunta n.° 2:  ¡Restablecer la contraseña de Jim!

Aunque no lo creas, ¡el mecanismo de restablecimiento de contraseña también puede ser explotado! Al ingresar la contraseña en el campo de correo electrónico de la página «¿Olvidaste tu contraseña?», la pregunta de seguridad de Jim aparece como  «¿El segundo nombre de tu hermano mayor?» .

En la Tarea 2, descubrimos que Jim podría tener algo que ver con  Star Trek . Al buscar en Google «Jim Star Trek», encontramos una página wiki de  James T. Kirk,  de Star Trek. 

Mirando la página wiki encontramos que tiene un hermano.

Parece que el segundo nombre de su hermano es Samuel.

Al ingresar esto en la página ¿Olvidó su contraseña? podrá cambiar su contraseña exitosamente.

¡Puedes cambiarlo a lo que quieras!

3c3e2d6ef99b733b947e92f8e2a9ed08bf57ea63

¡Ah! ¡No mires!

Una aplicación web debe almacenar y transmitir datos confidenciales de forma segura. Sin embargo, en algunos casos, el desarrollador podría no proteger adecuadamente sus datos confidenciales, haciéndolos vulnerables.

La mayoría de las veces, la protección de datos no se aplica de forma uniforme en toda la aplicación web, lo que hace que ciertas páginas sean accesibles al público. En otras ocasiones, la información se filtra al público sin el conocimiento del desarrollador, lo que hace que la aplicación web sea vulnerable a ataques. 

Más información:  Exposición de datos confidenciales

Responda las preguntas a continuación

Pregunta #1:  ¡Acceda al documento confidencial!

Vaya a la  página Acerca de nosotros  y pase el cursor sobre  «Consulte nuestros términos de uso» .

Verá que enlaza a  http://10.10.64.1/ftp/legal.md . Al navegar a ese directorio /ftp/, se revela que está expuesto al público. 

Descargaremos el  archivo acquisitions.md  y lo guardaremos. Parece que también hay otros archivos de interés.

¡Después de descargarlo, navega a la página de inicio para recibir la bandera!

8d2072c6b0a455608ca1a293dc0c9579883fc6a5

Pregunta n.° 2:  ¡Inicie sesión en la cuenta de MC SafeSearch!

Después de ver el vídeo hay ciertas partes de la canción que destacan.

Señala que su contraseña es » Mr. Noodles » pero ha reemplazado algunas » vocales por ceros «, lo que significa que simplemente reemplazó las o por 0.

Ahora sabemos que la contraseña de la  cuenta mc.safesearch@juice-sh.op  es » Mr. N00dles «.

bb105418e73708ceccf1a7b2491f434b8f5230e4

Pregunta n.° 3:  ¡Descargue el archivo de respaldo!

Ahora regresaremos a la  carpeta http://10.10.64.1 /ftp/ e intentaremos descargar  package.json.bak . Sin embargo, parece que nos encontramos con un error 403 que indica que solo se pueden descargar archivos .md y .pdf.  

Para solucionar esto, usaremos un bypass de caracteres llamado » Byte Nulo Poison «. Un  Byte Nulo Poison tiene este aspecto:  %00 . 

Nota: como podemos descargarlo usando la URL , necesitaremos codificarlo en un formato codificado de URL.

El  byte nulo de veneno ahora se verá así:  %2500 .  Agregar esto y luego un .md  al final evitará el error 403.

¿Por qué funciona esto? 

Un  byte nulo de veneno es en realidad un  terminador nulo . Al colocar un carácter nulo en la cadena en un byte determinado, esta indica al servidor que termine en ese punto, anulando el resto de la cadena. 

cfdeea14e8f01b4952722fd0e4a77f1928593c9a

Tarea 6  ¿Quién está volando esta cosa?

Los sistemas modernos permiten que varios usuarios accedan a diferentes páginas. Los administradores suelen usar una página de administración para editar, añadir y eliminar elementos de un sitio web.  Puedes usarla al crear un sitio web con programas como Weebly o Wix.  

Cuando se encuentran vulnerabilidades o errores de control de acceso roto, se clasificarán en uno de dos tipos :

Escalada horizontal de privilegiosSe produce cuando un usuario puede realizar una acción o acceder a los datos de otro usuario con el mismo nivel de permisos.
Escalada vertical de privilegiosSe produce cuando un usuario puede realizar una acción o acceder a datos de otro usuario con un  nivel superior de permisos.

Créditos: Packetlabs.net

Más información:  Control de acceso roto

Responda las preguntas a continuación

Pregunta #1:  ¡Acceda a la página de administración!

Primero, vamos a abrir el depurador en  Firefox . 

(O fuentes  en Chrome ).

Esto se puede hacer navegando hasta él en el menú Desarrolladores web. 

Luego actualizaremos la página y buscaremos un archivo javascript para  main-es2015.js

Luego iremos a esa página en  : http://10.10.64.1/main-es2015.js

Para obtener esto en un formato que podamos leer, haga clic en el botón { } en la parte inferior  

Ahora busque el término «admin» 

Encontrarás un par de palabras diferentes que contienen «admin», pero la que estamos buscando es «path: administration».

Esto lleva a una página llamada » /#/administration «, como se puede ver en la ruta «acerca de » un par de líneas más abajo, pero ir allí sin haber iniciado sesión no funciona. 

Como esta es una página de administrador, tiene sentido que necesitemos estar en la cuenta de administrador para poder verla.

Una buena manera de evitar que los usuarios accedan a esto es cargar únicamente las partes de la aplicación que necesiten usar. Esto evita que se filtre o vea información confidencial, como una página de administración.

71aeb3b0bf01cc6e488f0207bb62f79b41454a87

Pregunta n°2:  ¡Ver el carrito de compras de otro usuario!

Inicia sesión en tu cuenta de administrador y haz clic en «Tu cesta». Asegúrate de que Burp esté activo para poder capturar la solicitud.

Reenvíe cada solicitud hasta que vea:  GET /rest/basket/1 HTTP/1.1

Ahora, vamos a cambiar el número 1 después de /basket/ a 2

Ahora te mostrará la cesta del UserID 2. ¡Puedes hacer lo mismo para otros UserID, siempre que tengan uno!

e6982b34b6734ceadd28e5019b251f929a80b815

Pregunta n.° 3: ¡Elimine todas las reseñas de 5 estrellas!

Navega nuevamente a la  página http://10.10.64.1/#/administration y  haz clic en el ícono de la papelera junto a la reseña con 5 estrellas. 

78231b75c0b2180b7e964dcbb1ab3c3f58639f2e

¿De dónde salió eso?

XSS o Cross-site scripting es una vulnerabilidad que permite a los atacantes ejecutar JavaScript en aplicaciones web. Se trata de uno de los errores más frecuentes en aplicaciones web. Su complejidad varía de fácil a extremadamente difícil, ya que cada aplicación web analiza las consultas de forma diferente. 

Hay tres tipos principales de ataques XSS :

DOM (Especial)DOM XSS  (Document Object Model-based Cross-Site Scripting)  utiliza el entorno HTML para ejecutar JavaScript malicioso. Este tipo de ataque suele usar la  etiqueta HTML <script></script>  .
Persistente (del lado del servidor)Los XSS persistentes  son archivos JavaScript que se ejecutan cuando el servidor carga la página que los contiene. Esto puede ocurrir cuando el servidor no depura los datos del usuario al subirlos a una página. Suelen encontrarse en entradas de blog. 
Reflejado (lado del cliente)Los XSS reflejados  son JavaScript que se ejecutan en el lado del cliente de la aplicación web. Suelen encontrarse cuando el servidor no depura los datos de búsqueda . 

Más información:  Cross-Site Scripting XSS

Responda las preguntas a continuación

Pregunta n.° 1:  ¡Realice un DOM XSS!

Utilizaremos el elemento iframe con una etiqueta de alerta de JavaScript: 

<iframe src=»javascript:alert(`xss`)»> 

Al ingresar esto en la barra de búsqueda se activará la alerta.

Tenga en cuenta que estamos utilizando iframe , que es un elemento HTML común que se encuentra en muchas aplicaciones web, hay otros que también producen el mismo resultado. 

Este tipo de XSS, también llamado XFS (Cross-Frame Scripting), es una de las formas más comunes de detectar XSS dentro de aplicaciones web.

Los sitios web que permiten al usuario modificar el iframe u otros elementos DOM probablemente serán vulnerables a XSS.   

¿Por qué funciona esto?

Es habitual que la barra de búsqueda envíe una solicitud al servidor, que a su vez devolverá la información relacionada, pero aquí reside la falla. Sin una correcta limpieza de la entrada, podemos realizar un ataque XSS contra la barra de búsqueda. 

4a31a4fe0954199566e360a873802bf64d0d0a84

Pregunta n.° 2:  ¡Realice un XSS persistente!

Primero, inicie sesión en la cuenta de administrador .

Vamos a navegar a la página » Última IP de inicio de sesión » para este ataque.

Debería decir que la última dirección IP es 0.0.0.0 o 10.xxx 

Como registra la IP de inicio de sesión «última», ahora cerraremos la sesión para que registre la IP «nueva».

Asegúrese de que la intercepción de Burp esté activada , de modo que detecte la solicitud de cierre de sesión.

Luego nos dirigiremos a la pestaña Encabezados donde agregaremos un nuevo encabezado:

Dirección IP del cliente verdadero<iframe src=»javascript:alert(`xss`)»>

¡Luego reenvíe la solicitud al servidor!

Al volver a iniciar sesión en la cuenta de administrador y navegar a la página de la última IP de inicio de sesión, veremos la alerta XSS.

¿Por qué tenemos que enviar este encabezado?

El  encabezado True-Client-IP   es similar al  encabezado X-Forwarded-For  ; ambos indican al servidor o proxy la IP del cliente. Al no haber saneamiento en el encabezado, podemos realizar un ataque XSS. 

c37da14686b69a220fd9febd09bb9593e7d0539f

Pregunta n.° 3:  ¡Realice un XSS reflejado!

Primero, ¡tendremos que estar en la página correcta para realizar el XSS reflejado!

Inicie sesión en la cuenta de administrador y navegue a la página » Historial de pedidos «. 

Allí verás el icono de un » Camión «. Al hacer clic en él, accederás a la página de resultados de la pista. También verás un ID asociado al pedido.   

Usaremos el iframe XSS,  <iframe src=»javascript:alert(`xss`)»>,  en lugar del  5267-f73dcd000abcc353

Después de enviar la URL, actualice la página y recibirá una alerta que dice ¡XSS!

¿Por qué funciona esto?

El servidor tendrá una tabla de búsqueda o base de datos (según el tipo de servidor) para cada ID de seguimiento. Dado que el parámetro «id» no se desinfecta antes de enviarse al servidor, podemos realizar un ataque XSS.  

305021787d3e9cd9cebc057a021c2504550bb3b6

¡Exploración!

Si quieres afrontar algunos de los desafíos más difíciles que no se abordaron en esta sala, consulta la sección /#/score-board/ en Juice-shop. Aquí podrás ver tus tareas completadas, así como otras tareas de diferente dificultad.

2614339936e8282e2f820f023d4d998a1f95e02a

Sigan entrenando, Hacketones, Nos vemos en el próximo lab

Deja una respuesta

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