Explotación de APIs: Explicación y PoC (2/2)

    Como estuvimos viendo el la primera parte la explotación de APIs conlleva un gran peligro a nivel de seguridad tanto empresaria como de usuario:

Explotación de APIs: Explicación y Poc (1/2)

PoC 3: Cambio de contraseña a usuarios

    
    En este caso vamos a intentar cambiar la contraseña a un usuario (nosotros), pero aplicaria a cualquier usuario;


    En nuestro correo vemos que necesitamos un OTP, por lo tanto ya vemos que el OTP es un número entre 0000 y 9999;


    La solicitud a sido tramitada por POST a un endpoint llamado "check-out";

    Y en el cuerpo de la solicitud nos indica la estructura, así que podemos hacer fuerza bruta para obtener el OTP;


    Lo añadimos a postman de la misma manera que hemos hecho anteriormente, si lo enviamos vemos que obviamente el OTP es incorrecto;


    Pero con FUFF podríamos hacer fuerza bruta, indicamos que el Content-Type es en JSON para que se pueda tramitar bien y que nos muestre solo códigos de estado "200"


    Pero vemos que tiene una limitación de peticiones llegando a dar error;


    En el endpoint inicial vimos que la versión de la API que utilizaba era v3, pero en anteriores solicitudes que añadimos eran v2, de eso lo bueno de enumerar todos los endpoints posibles en postman, así que cambiamos la versión con el fin de que carezca de limitaciones de intentos;


    Como vemos no tenemos limitación de intentos así que ahora si podríamos hacer fuerza bruta

    En esta caso lo vamos a hacer con FFUF pero lo podríamos hacer mediante burpsuite con un ataque "snipper"


    Obtenemos el OTP y conseguimos cambiar la contraseña del usuario, esto nos indica que se han dejado una versión de la API antigua. De la misma manera lo podríamos hacer con cualquier otro usuario.

PoC 4 : Obtención de cupones

    
    Vamos a intentar añadir cupones, si enviamos un numero aleatorio tenemos la petición por POST al endpoint "validate-coupon";


    Lo añadimos a a postman y añadimos la cuerpo de estructura, de primeras vemos que el cuerpo esta fallando puesto que el cupón es erróneo. Vamos a inspiramos en una colección de cargas útiles de inyección NoSQL disponibles en GitHub en PayloadsAllTheThings 


 Apoyándonos con el uso de la inyección NoSQL, indicamos que el código de cupón no es igual a 1;


    Y nos responde con un cupón, el cual lo podemos validad correctamente; 




PoC 5: Obtención de información de usuarios


    En este caso tenemos un vehículo, y nos indica la localización del vehículo, si le damos a refrescar localización, vemos que envía una petición por GET al endopoint "locatión" junto con el identificador del vehículo


    Vemos que en el cuerpo donde nos indica el nombre del propietario, localización y el id del vehículo;


     Así que lo añadimos a postman indicando el cuerpo y el endpoint;


 Si enumeramos la web encontramos con mas usuarios, el cual al seleccionar a uno de ellos, la API en la respuesta nos da la información de el:  id del vehículo, localización, etc...;


 Si cambiaos el identificado en la url, vemos que hemos sido capaz de enumerar la localización y más detalles del usuario 




No hay comentarios:

Publicar un comentario