# Web API Pentesting {{#include ../../banners/hacktricks-training.md}} ## Resumen de la Metodología de Pentesting de API El pentesting de APIs implica un enfoque estructurado para descubrir vulnerabilidades. Esta guía encapsula una metodología integral, enfatizando técnicas y herramientas prácticas. ### **Comprendiendo los Tipos de API** - **SOAP/XML Web Services**: Utilizan el formato WSDL para la documentación, que se encuentra típicamente 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](http://www.dneonline.com/calculator.asmx). - **REST APIs (JSON)**: La documentación a menudo viene en archivos WADL, sin embargo, herramientas como [Swagger UI](https://swagger.io/tools/swagger-ui/) proporcionan 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 consulta para APIs que ofrece una descripción completa y comprensible de los datos en tu API. ### **Laboratorios Prácticos** - [**VAmPI**](https://github.com/erev0s/VAmPI): Una API deliberadamente vulnerable para práctica práctica, cubriendo las 10 principales vulnerabilidades de API de OWASP. ### **Trucos Efectivos para el Pentesting de API** - **Vulnerabilidades SOAP/XML**: Explora vulnerabilidades XXE, aunque las declaraciones DTD a menudo están restringidas. Las etiquetas CDATA pueden permitir la inserción de payloads si el XML sigue siendo válido. - **Escalación de Privilegios**: Prueba endpoints con diferentes niveles de privilegio para identificar posibilidades de acceso no autorizado. - **Configuraciones Incorrectas de CORS**: Investiga la configuración de CORS para potenciales explotaciones a través de ataques CSRF desde sesiones autenticadas. - **Descubrimiento de Endpoints**: Aprovecha los patrones de API para descubrir endpoints ocultos. Herramientas como fuzzers pueden automatizar este proceso. - **Manipulación de Parámetros**: Experimenta con agregar o reemplazar parámetros en solicitudes para acceder a datos o funcionalidades no autorizadas. - **Pruebas de Métodos HTTP**: Varía los métodos de solicitud (GET, POST, PUT, DELETE, PATCH) para descubrir comportamientos inesperados o divulgaciones de información. - **Manipulación de Content-Type**: Cambia entre diferentes tipos de contenido (x-www-form-urlencoded, application/xml, application/json) para probar problemas de análisis o vulnerabilidades. - **Técnicas Avanzadas de Parámetros**: Prueba con tipos de datos inesperados en payloads JSON o juega con datos XML para inyecciones XXE. También, intenta la contaminación de parámetros y caracteres comodín para pruebas más amplias. - **Pruebas de Versiones**: Las versiones más antiguas de API pueden ser más susceptibles a ataques. Siempre verifica y prueba contra múltiples versiones de API. ### **Herramientas y Recursos para el Pentesting de API** - [**kiterunner**](https://github.com/assetnote/kiterunner): Excelente para descubrir endpoints de API. Úsalo para escanear y forzar rutas y parámetros contra APIs objetivo. ```bash 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**](https://github.com/BishopFox/sj): sj es una herramienta de línea de comandos diseñada para ayudar con la auditoría de **archivos de definición Swagger/OpenAPI expuestos** al verificar los puntos finales de la API asociados 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 personalizadas para pruebas de seguridad de API, que van desde simulación de ataques hasta fuzzing y escaneo de vulnerabilidades. - [**Cherrybomb**](https://github.com/blst-security/cherrybomb): Es una herramienta de seguridad de 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 entender las vulnerabilidades comunes de API ([OWASP Top 10](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf)). - **API Security Checklist**: Una lista de verificación completa para asegurar APIs ([GitHub link](https://github.com/shieldfy/API-Security-Checklist)). - **Logger++ Filters**: Para cazar vulnerabilidades de API, Logger++ ofrece filtros útiles ([GitHub link](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)). - **API Endpoints List**: Una lista curada de posibles puntos finales de API para fines de prueba ([GitHub gist](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)). ## Referencias - [https://github.com/Cyber-Guy1/API-SecurityEmpire](https://github.com/Cyber-Guy1/API-SecurityEmpire) {{#include ../../banners/hacktricks-training.md}}