Identificación de endpoints
Otra forma de recopilar información sobre la API es a través de la exploración manual o llevando a cabo diferentes acciones sobre el aplicativo (básicamente, generar tráfico). Esta es una excelente práctica incluso si se tiene acceso a la documentación oficial, ya que a menudo esta puede ser inexacta o estar desactualizada.
Al explorar el aplicativo, busca patrones en la URL que sugieran endpoints de la API, como el uso de /api/ o prefijos de versión como /v1/. También es fundamental analizar los ficheros JavaScript, ya que estos suelen contener referencias a rutas y funciones que no se han identificado durante la navegación normal.
Emplear la extensión JS Link Finder o revisar los ficheros JavaScript manualmente para descubrir endpoints.
Interacción con endpoints
Una vez identificados los endpoints, es posible interactuar con ellos mediante Burp Repeater y Burp Intruder. Esto permite observar el comportamiento de la API y descubrir superficies de ataque adicionales. Por ejemplo, es vital investigar cómo responde el servidor al cambiar el método HTTP o el Media Type.
A medida que interactuamos con la API, es relevante revisar las respuestas a detalle. En ocasiones, los mensajes de error detallados revelan información interna o dan pistas sobre cómo estructurar una solicitud HTTP válida.
Identificar métodos HTTP soportados
El método HTTP especifica la acción que se desea realizar sobre un recurso. En una API REST, los más comunes son:
- GET /api/tasks - Recupera una lista de tareas.
- POST /api/tasks - Crea una nueva tarea.
- DELETE /api/tasks/1 - Elimina una tarea específica.
Utiliza la lista de métodos HTTP incorporada en el Burp Intruder para realizar un escaneo rápido de verbos permitidos.
⚠ Al probar métodos HTTP, elige objetos o endpoints que no sean críticos. Evita probar funcionalidades peligrosas (como borrado masivo o alteración de datos sensibles) en entornos de producción para prevenir consecuencias no deseadas.
Identificar los tipos de contenido soportados
Los endpoints suelen esperar datos en un formato específico (como JSON). Sin embargo, pueden comportarse de manera diferente según el valor de la cabecera Content-Type. Probar diferentes formatos puede permitir:
- Provocar errores no controlados que revelen información útil.
- Evadir o saltar mecanismos de defensa defectuosos.
- Aprovechar diferencias en la lógica de procesamiento. Por ejemplo, una API puede ser segura al manejar datos JSON, pero susceptible a ataques de inyección al procesar XML.
Para cambiar el tipo de contenido, debes modificar la cabecera Content-Type y reformatear el cuerpo de la solicitud acorde al nuevo formato.
Extensión recomendada: Content-Type Converter para automatizar este proceso en Burp Suite.
Laboratorio: Finding and exploiting an unused API endpoint
Objetivo del laboratorio
Para resolver el siguiente laboratorio, debes identificar un endpoint oculto para comprar un producto, concretamente una chaqueta de cuero ligera l33t.
PoC
[1] En primera instancia, generamos tráfico y logramos observar el siguiente endpoint:

Enviamos la misma petición, pero con el método HTTP POST con el fin de identificar el comportamiento.
Responde que el endpoint solamente soporta o permite dos métodos HTTP, los cuales serían GET y PATCH.
[2] Enviamos una petición HTTP con el método PATCH, logrando obtener la siguiente respuesta.
Cambiamos el Content-Type a JSON y enviamos en el cuerpo data vacia y obtenemos el siguiente mensaje de error, el cual divulga el parámetro esperado o faltante.

[3] Finalmente, con la informacion obtenida anteriormente, logramos cambiar el precio al producto. Logrando asi solucionar el laboratorio.

Intruder para identificar endpoints ocultos
Una vez identificados algunos endpoints iniciales, puedes utilizar Intruder para descubrir endpoints ocultos. Por ejemplo, imagina un escenario donde has detectado el siguiente endpoint para actualizar información de usuario:
PUT /api/user/update
Para encontrar rutas ocultas, podrías usar Burp Intruder para buscar otros recursos que mantengan la misma estructura. En este caso, añadirías un payload en la posición de /update dentro de la ruta con una lista de funciones comunes, como delete o add.
Al buscar endpoints ocultos, utiliza wordlists basadas en convenciones de nombres de APIs y términos estándar de la industria. Asegúrate de incluir también términos específicos de la aplicación que sean relevantes según lo que hayas obtenido en tu recon inicial.