API Attacks
Credenciales: htbpentester@hackthebox.com:HTBPentester
Escenario
Después de informar de todas las vulnerabilidades en las versiones v0 y v1 de Inlanefreight E-Commerce Marketplace, el administrador intentó corregirlas todas en la v2.
Sin embargo, los nuevos desarrolladores junior han implementado funcionalidades adicionales en la v2, y al administrador le preocupa que puedan haber introducido nuevas vulnerabilidades. Evalúa la seguridad de la nueva versión de la API web y aplica todo lo que has aprendido a lo largo del módulo para comprometerla.
Pregunta 1: Envía el contenido de la bandera a "/flag.txt".
Se accede con las credenciales cómo en el resto de laboratorios de este módulo y se copia el JWT que proporciona el endpoint para autorizar al usuario:

Se muestran los roles del usuario:

Con estos roles se puede mostrar el listado de suppliers:

En la información de los suppliers, se identifican dos campos que pueden ser vulnerables ya que indica que son definidos o subidos por el usuario:

Se guarda todo el listado de suppliers para hacer un filtrado sobre los que tienen estos campos con información:


Con el siguiente script se comprueba que suppliers tienen la pregunta de seguridad definida:
Al ejecutar el script aparecerá el listado de suppliers que tienen la pregunta de seguridad definida:

Se utilizará el endpoint de reseteo de contraseña para capturar la request con Burp y hacer un ataque de fuerza bruta contra la pregunta de seguridad de los usuarios:


Haciendo click en el botón "Execute" del endpoint, se captura la request en el Proxy de BurpSuite y se enviará al Intruder:

En el Intruder se escoge el tipo de ataque Cluster bomb attack y se definen los payloads:

Para el SupplierEmail se define el listado de los correos de los usuarios que se han encontrado con el script y para el SecurityQuestionAnswer cómo la respuesta tiene que ser un color, en mi caso he generado una lista de 100 colores con IA porque no he encontrado ningún listado que me sirviera:


IMPORTANTE: Antes de lanzar el ataque desactivar la opción de URL-encode:

Cuando se ejecute el ataque, habrá una respuesta con una longitud distinta que dará un
successStatus: trueindicando que se ha encontrado la respuesta a la pregunta de seguridad para ese email de usuario:

Se resetea la contraseña del usuario en el endpoint correspondiente:

Se realiza la autenticación con el usuario al que se ha reseteado la contraseña y se copia el JWT para hacer la autorización:

Al mostrar los roles del usuario se ve que no tiene ninguno asignado:

Se muestra la información del usuario actual, hay un campo que no ha proporcionado todavía el usuario:

Este será el principal vector de ataque, se utilizará el endpoint para actualizar los datos del supplier indicando el archivo que se quiere obtener en el campo del CV:

Se ejecuta el endpoint que muestra el CV del supplier en base64:


Se decodifica el base64 por ejemplo con CyberChef y se obtiene la flag:

Última actualización