🧤Laboratorio: Explotación de una vulnerabilidad de asignación masiva


Por aqui vemos cosas interesantes:

Hey todo gracias a discover content:

Con base en ello tomaremos en cuenta ambos que obtuvimos de la API:
//Chosen Discount:
{
"description": String, // defaults to: null
"discount_id": String, // defaults to: null
"percentage": Integer // defaults to: 0
}
//Chosen Product:
{
"product_id": String,
"name": String, // defaults to: null
"quantity": Integer,
"item_price": Integer // defaults to: 0
}
Veo que el endpoint POST
para comprar la chaqueta dandole a place order, tiene en su request el JSON que analizaba arriba de la doc de la api, asi:

Tiene una estructura muy similar al JSON chosen Product
Con base en esto mi pensamiento hacker es, “Le podemos entonces añadir uno de los valores de chosen product a la request?” ¿en este caso cual es el valor que me beneficia? EXACTO: “item_price”, entonces va a quedar así:
{
"chosen_products":[
{
"product_id":"1",
"quantity":1,
"item_price": Integer //le voy a poner 0
}
]
}

Dos cosas pasaron:
No acepta strings.
Hubo un problema por mas que le ponia valores enteros a item_price, me seguía dando que fondos insuficientes:

Asi que me puse a ver los metodos http permitidos con OPTIONS y encontré que realmente solo aceptaba POST Y GET, bien hasta ahí todo bien pero que pasa, en la request GET me devolvió un JSON con todo la estructura tanto de chosen products como de chosen discount así:

{
"chosen_discount":{
"percentage":0
},
"chosen_products":[
]
}
//Con esto presente, decidí crear todo y enviarlo junto con discount pero con un percentage de 100 claro :)
Así: cambiando de GET
a POST
(Claro)
GET
a POST
(Claro)
Y obtuvimos:

Efectivamente así solucioné y pude comprar la chaqueta con 100% de descuento je 🙂


Eso es todo, gracias por verme, por leerme, por analizarme, por entenderme, hasta la proxima.
Last updated