
Descripción
To solve the lab, exploit a hidden API endpoint to buy a Lightweight l33t Leather Jacket. You can log in to your own account using the following credentials: wiener:peter.
Required knowledge
To solve this lab, you’ll need to know:
- How to use error messages to construct a valid request.
- How HTTP methods are used by RESTful APIs.
- How changing the HTTP method can reveal additional functionality.
These points are covered in our API Testing Academy topic.
Finding and exploiting an unused API endpoint writeup
Exploramos la página, iniciamos sesión con el usuario ‘wiener’ y la contraseña ‘peter’ e iniciamos el ‘Logger’ de Burp Suite:

Entramos en el objeto a comprar, lo añadimos al carrito y lo intentamos pagar, dando el mensaje de error de que no tenemos suficientes fondos.

Una vez realizado esto, analizamos todas las peticiones que hay en en logger:

De todas las peticiones, llama la atención esta petición, que obtiene la información de la API del producto. La enviamos al ‘Repeater’ con Ctrl + R y procedemos a manipularla. Entre todos los métodos que podemos emplear para interactuar con una API, intercambiando el método GET por el método OPTION nos devolverá los métodos que acepta:

Ahora sabemos que la API acepta:
- GET: Para obtener la información de un objeto.
- PATCH: Usado para modificar parcialmente la información de un objeto de la API.
- OPTION: Empleado para obtener todos los métodos aceptados por la API.
Con lo cual, usamos el método PATCH para intentar cambiar el precio del producto a 0. Cambiando sólo ‘OPTION’ por ‘PATCH’ no dará resultado, puesto que tenemos que indicar el nuevo para el objeto y que el contenido que proporcionamos es un JSON:
Esto lo conseguimos modificando la petición añadiendo 2 líneas:
Content-Type: application/json
{"price": 0}

Una vez enviada la petición la API nos devolverá que ha sido recibida correctamente, al regresar al navegador y actualizar veremos que el objeto cuesta ahora 0.00:

Pudiendo así pagarlo y completar el laboratorio:
