* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Usa [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** con las herramientas comunitarias más avanzadas del mundo.\
* Un ejemplo de esta documentación se puede encontrar en [http://www.dneonline.com/calculator.asmx](http://www.dneonline.com/calculator.asmx) (documento WSDL en [http://www.dneonline.com/calculator.asmx?wsdl](http://www.dneonline.com/calculator.asmx?wsdl)) y puedes ver una solicitud de ejemplo llamando al método `Add` en [http://www.dneonline.com/calculator.asmx?op=Add](http://www.dneonline.com/calculator.asmx?op=Add)
* Para analizar estos archivos y crear solicitudes de ejemplo, puedes usar la herramienta **SOAPUI** o la extensión **WSDLer** de Burp Suite.
* **APIs REST (JSON)**
* La documentación estándar es el archivo WADL. Encuentra un ejemplo aquí: [https://www.w3.org/Submission/wadl/](https://www.w3.org/Submission/wadl/). Sin embargo, existen otros motores de representación de API más amigables para los desarrolladores, como [https://swagger.io/tools/swagger-ui/](https://swagger.io/tools/swagger-ui/) (consulta la demostración en la página)
* Para analizar estos archivos y crear solicitudes de ejemplo, puedes usar la herramienta **Postman**
* [**GraphQL**](graphql.md)
## Laboratorios
* [**VAmPI**](https://github.com/erev0s/VAmPI)**:** VAmPI es una API vulnerable hecha con Flask e incluye vulnerabilidades de las 10 principales vulnerabilidades de la OWASP para APIs.
## Trucos
### SOAP/XML
Este tipo de APIs pueden ser [**vulnerables a XXE**](../../pentesting-web/xxe-xee-xml-external-entity.md), pero generalmente las **Declaraciones DTD** están **deshabilitadas** en la entrada del usuario.
También puedes intentar usar etiquetas CDATA para insertar payloads (siempre que el XML sea válido)
![](<../../.gitbook/assets/image(534).png>)
### Verificar acceso
Por lo general, algunos puntos finales de la API requerirán más privilegios que otros. Siempre intenta acceder a los puntos finales más privilegiados desde cuentas menos privilegiadas (no autorizadas) para ver si es posible.
### CORS
Siempre verifica la configuración de [**CORS**](../../pentesting-web/cors-bypass.md) de la API, ya que si permite finalizar la solicitud con las credenciales del dominio del atacante, se puede causar mucho daño a través de [**CSRF**](../../pentesting-web/csrf-cross-site-request-forgery.md) en víctimas autenticadas.
### Patrones
Busca patrones de API dentro de la API y trata de usarlos para descubrir más.\
Si encuentras _/api/albums/**\<album\_id>**/photos/**\<photo\_id>**_\*\* \*\* también podrías probar cosas como _/api/**posts**/\<post\_id>/**comment**/_. Usa algún fuzzer para descubrir estos nuevos puntos finales.
### Agregar parámetros
Algo como el siguiente ejemplo podría darte acceso al álbum de fotos de otro usuario:\
Puedes intentar **fuzzear parámetros** o **usar** parámetros **que hayas visto** en otros puntos finales para intentar acceder a otra información.
Por ejemplo, si ves algo como: _/api/albums?**album\_id=\<album id>**_
Podrías **reemplazar** el parámetro **`album_id`** con algo completamente diferente y potencialmente obtener otros datos: _/api/albums?**account\_id=\<account id>**_
### Contaminación de parámetros
/api/account?**id=\<tu id de cuenta>** → /api/account?**id=\<tu id de cuenta>\&id=\<id de cuenta del administrador>**
### Parámetro comodín
Intenta usar los siguientes símbolos como comodines: **\***, **%**, **\_**, **.**
* /api/users/\*
* /api/users/%
* /api/users/\_
* /api/users/.
### Cambio del método de solicitud HTTP
Puedes intentar usar los métodos HTTP: **GET, POST, PUT, DELETE, PATCH, INVENTED** para verificar si el servidor web te proporciona información inesperada con ellos.
### Tipo de contenido de la solicitud
Intenta jugar con los siguientes tipos de contenido (modificando en consecuencia el cuerpo de la solicitud) para hacer que el servidor web se comporte de manera inesperada:
* **x-www-form-urlencoded** --> user=test
* **application/xml** --> \<user>test\</user>
* **application/json** --> {"user": "test"}
### Tipos de parámetros
Si los datos **JSON** funcionan, intenta enviar tipos de datos inesperados como:
* {"username": "John"}
* {"username": true}
* {"username": null}
* {"username": 1}
* {"username": \[true]}
* {"username": \["John", true]}
* {"username": {"$neq": "lalala"\}}
* cualquier otra combinación que puedas imaginar
Si puedes enviar datos **XML**, verifica las [inyecciones XXE](../../pentesting-web/xxe-xee-xml-external-entity.md).
Si envías datos POST regulares, intenta enviar matrices y diccionarios:
* username\[]=John
* username\[$neq]=lalala
### Juega con las rutas
`/files/..%2f..%2f + ID de la víctima + %2f + nombre de archivo de la víctima`
### Verifica posibles versiones
Es posible que las versiones antiguas aún se estén utilizando y sean más vulnerables que los últimos puntos finales
Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
En este repositorio encontrarás: mapas mentales, consejos y trucos, recursos y todo lo relacionado con la seguridad de la API y las pruebas de penetración de la API. Nuestros mapas mentales y recursos se basan en el OWASP TOP 10 API, nuestra experiencia en pruebas de penetración y otros recursos para ofrecer el recurso de seguridad de API y pruebas de penetración más avanzado y preciso en la WEB.
El primer paso para ingresar al Imperio de la Seguridad de la API es saber cómo recopilar información sobre la infraestructura de la API y cómo realizar una reconstrucción poderosa en la API para extraer las puertas ocultas que comprometen toda la infraestructura, por lo tanto, proporcionamos este mapa mental actualizado de Reconocimiento de API con las últimas herramientas y metodologías en la reconstrucción de API:
[**Versión en PDF**](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap.pdf) **|** [**Versión en XMind**](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap.xmind)
[**Versión en PDF**](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap%20ATTACK.pdf) **|** [**Versión en XMind**](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap%20ATTACK.xmind)\\
Debido a los ataques limitados en GraphQL, intentamos generar todos los posibles ataques debido a nuestra experiencia en pruebas de API en el siguiente mapa mental:
[**Versión en PDF**](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap%20%7B%7BGraphQL%20Attacking%7D%7D.pdf) **|** [**Versión en XMind**](https://github.com/Cyber-Guy1/API-SecurityEmpire/blob/main/assets/API%20Pentesting%20Mindmap%20%7B%7BGraphQL%20Attacking%7D%7D.xmind)\\
## Owasp API Security Top 10
Lee este documento para aprender cómo **buscar** y **explotar** las 10 principales vulnerabilidades de API de Owasp: [https://github.com/OWASP/API-Security/blob/master/2019/es/dist/owasp-api-security-top-10.pdf](https://github.com/OWASP/API-Security/blob/master/2019/es/dist/owasp-api-security-top-10.pdf)
* [**automatic-api-attack-tool**](https://github.com/imperva/automatic-api-attack-tool): Herramienta de ataque API personalizable de Imperva que toma una especificación de API como entrada, genera y ejecuta ataques basados en ella como salida.
* [**Astra**](https://github.com/flipkart-incubator/Astra): Otra herramienta para pruebas de API para encontrar varias vulnerabilidades web diferentes.
* [**restler-fuzzer**](https://github.com/microsoft/restler-fuzzer): RESTler es la _primera herramienta de fuzzing de API REST con estado_ para probar automáticamente servicios en la nube a través de sus API REST y encontrar errores de seguridad y confiabilidad en estos servicios. Para un servicio en la nube dado con una especificación OpenAPI/Swagger, RESTler analiza toda su especificación y luego genera y ejecuta pruebas que ejercen el servicio a través de su API REST.
* [**APIFuzzer**](https://github.com/KissPeter/APIFuzzer)**:** APIFuzzer lee la descripción de tu API y, paso a paso, fuzzifica los campos para validar si tu aplicación puede manejar los parámetros fuzzificados.
* [**API-fuzzer**](https://github.com/Fuzzapi/API-fuzzer): La gema API\_Fuzzer acepta una solicitud de API como entrada y devuelve las posibles vulnerabilidades en la API.
* [**race-the-web**](https://github.com/TheHackerDev/race-the-web): Pruebas de condiciones de carrera en aplicaciones web enviando un número especificado de solicitudes a una URL (o URLs) objetivo _simultáneamente_, y luego compara las respuestas del servidor para determinar su unicidad.
Utiliza [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir y **automatizar flujos de trabajo** fácilmente con las herramientas comunitarias más avanzadas del mundo.\
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).