Nuevos labs cada semana — Accede a todos desde 7,99€/mes

Labs de API Abuse

API Abuse & GraphQL Attacks

¿Qué es API Abuse?

Las vulnerabilidades de API Abuse explotan funcionalidades de APIs REST y GraphQL más allá de su uso previsto: rate limiting bypass, mass assignment, BOLA/BFLA, GraphQL introspection abuse, batch query attacks y enumeration via timing.

¿Por qué practicar API Abuse?

Las APIs son el target más común en aplicaciones modernas (mobile + web + B2B), y el OWASP API Top 10 es relativamente reciente — los devs todavía están al día. Bounty típico: BOLA y BFLA pagan en el rango $1,000-$10,000 por endpoint vulnerable.

¿Qué aprenderás con los labs de API Abuse?

Aprenderás el OWASP API Top 10 hands-on (BOLA, BFLA, mass assignment, server-side request forgery via webhooks), técnicas de GraphQL (introspection, alias batching, query depth attacks), y bypass de rate limiting via X-Forwarded-For + endpoints variant.

Tipos de API Abuse que cubrimos

  • BOLA (Broken Object Level Auth)

    Equivalente API a IDOR — accedes a objetos ajenos pasando su ID. Ej: GET /api/v1/orders/123.

  • BFLA (Broken Function Level Auth)

    Endpoints admin accesibles a usuarios normales. Ej: POST /api/v1/users (crear users) sin rol check.

  • GraphQL introspection

    Si __schema está habilitado en prod, mapeas toda la API en una query — incluyendo mutations sensibles ocultas.

  • Mass assignment

    PUT /users/me con `{role:"admin", verified:true}` — fields extra que el modelo acepta sin filtrar.

  • Rate limit bypass

    X-Forwarded-For rotativo, IPv6 prefix variation, endpoints alias (/api/v1 vs /api). Habilita brute force.

¿Cómo encontrar y explotar API Abuse?

Playbook práctico — del recon a la prueba de concepto.

  1. 1

    Mapear la superficie de la API

    Recoge endpoints del tráfico móvil/web, de la doc Swagger/OpenAPI y de versiones antiguas (/api/v1 vs /api/v2). Cuanto más completo el mapa, más fallos encuentras.

    GET /swagger.json · /api/v1/ · /api/internal/
  2. 2

    Probar BOLA en cada objeto

    Repite peticiones cambiando el ID de objeto por uno ajeno con tu token. Si devuelve datos de otro, es Broken Object Level Authorization.

    GET /api/v1/orders/1002   (tu token, pedido de otro usuario)
  3. 3

    Probar BFLA en funciones admin

    Llama a operaciones de gestión (crear/borrar usuarios, cambiar roles) con una cuenta normal. Muchas APIs no revalidan el nivel de función.

    POST /api/v1/admin/users   {"role":"admin"}   (con token básico)
  4. 4

    Abusar de mass assignment

    Añade campos privilegiados al body de un update. Si el modelo los acepta sin allowlist, escalas privilegios o saltas verificaciones.

    PATCH /api/v1/users/me   {"isAdmin":true,"emailVerified":true}
  5. 5

    Explotar GraphQL

    Si la introspección está activa, vuelca el schema completo y descubre mutations ocultas; con alias batching haces brute force en una sola petición.

    {__schema{types{name fields{name}}}}   ·   alias1:login(...) alias2:login(...) ...
  6. 6

    Bypassear el rate limit

    Rota IP simulada, varía la ruta o el casing, o agrupa intentos en batch para saltarte el throttling y habilitar fuerza bruta.

    X-Forwarded-For: 1.2.3.4 (rotando)   ·   /api/v1/login vs /API/V1/login

Aprende la teoría

Academy: GraphQL Security

Preguntas frecuentes

¿Qué es el API Abuse?

Es el conjunto de ataques que explotan APIs REST y GraphQL más allá de su uso previsto: acceso a objetos ajenos (BOLA), funciones admin sin control (BFLA), mass assignment, abuso de introspección GraphQL y bypass de rate limiting.

¿Cómo se explota una API vulnerable?

Se interceptan las peticiones y se manipulan IDs de objeto (BOLA), se llaman endpoints administrativos con cuentas normales (BFLA), se añaden campos privilegiados al body (mass assignment) y, en GraphQL, se vuelca el schema con introspección para encontrar mutations sensibles.

¿Cómo encontrar fallos de API en bug bounty?

Captura el tráfico de la app móvil/web, mapea endpoints con Swagger y versiones antiguas, y prueba sistemáticamente BOLA/BFLA con dos cuentas. En GraphQL, lanza una query de introspección para revelar toda la superficie.

¿Cómo prevenir el abuso de APIs?

Aplica autorización por objeto y por función en cada endpoint, usa allowlist de campos en los updates (evita mass assignment), desactiva la introspección GraphQL en producción, limita profundidad/coste de las queries y aplica rate limiting robusto.

¿Diferencia entre BOLA y BFLA?

BOLA (Broken Object Level Authorization) es acceder a OBJETOS de otros usuarios cambiando su ID — equivalente al IDOR. BFLA (Broken Function Level Authorization) es ejecutar FUNCIONES para las que no tienes nivel, como endpoints de administración, desde una cuenta normal.

Empieza con labs de API Abuse

Practica API Abuse & GraphQL Attacks con labs basados en reportes reales. En español. Desde 7,99€/mes.

Empieza con el primer lab de API Abuse