API Testing Tasklist — OWASP API Top 10
API1:2023 — Broken Object Level Authorization (BOLA)
- Enumerate alle object ID's die in requests voorkomen (UUID's, integers, hashes)
- Wissel je eigen object ID's uit voor die van andere gebruikers (horizontale escalatie)
- Test met meerdere accounts: maak object aan met account A, benader het via account B
- Controleer alle HTTP methodes: GET werkt soms niet maar PUT/DELETE wel
- Verifieer of de server enkel filtert op basis van een token of ook effectief ownership checkt
API2:2023 — Broken Authentication
- Test op zwakke / voorspelbare tokens (JWT zonder signature check, UUID v1)
- Probeer JWT algorithm confusion:
alg: none, HS256 met public key als secret
- Controleer token expiry — wordt een verlopen token geweigerd?
- Test brute force op login endpoints (rate limiting aanwezig?)
- Controleer of refresh tokens ongeldig worden na logout
- Test credential stuffing op
/login, /token, /oauth/token
- Zoek naar API keys in responses, headers of JavaScript bestanden
API3:2023 — Broken Object Property Level Authorization (BOPLA)
- Stuur extra velden mee in POST/PUT requests die je niet zou mogen zetten (mass assignment):
"role": "admin", "isVerified": true
- Controleer of de response meer velden teruggeeft dan nodig (excessive data exposure): wachtwoordhashes, interne ID's, PII van andere users
- Vergelijk de response van een gewone user vs admin voor hetzelfde object
- Fuzz request body met extra properties en observeer gedrag
API4:2023 — Unrestricted Resource Consumption
- Test rate limiting op alle zware endpoints (search, export, file upload, OTP)
- Stuur grote payloads mee om geheugen/CPU te belasten
- Test GraphQL voor query depth / complexity limits
- Controleer of batch requests onbeperkt zijn (bijv.
/users?ids=1,2,3,...,10000)
- Verifieer of file uploads beperkt zijn in grootte en type
- Test regex-based input voor ReDoS mogelijkheden
API5:2023 — Broken Function Level Authorization (BFLA)
- Ontdek admin/interne endpoints via wordlists (ffuf, feroxbuster):
/admin/, /internal/, /manage/
- Test of gewone users admin functies kunnen aanroepen door enkel de URL te kennen
- Wissel HTTP methodes uit: endpoint accepteert GET maar wat met POST/DELETE/PUT?
- Controleer of er verschil is in autorisatie tussen v1 en v2 van dezelfde API
- Test privileged actions die enkel via de UI geblokkeerd zijn maar niet op API niveau
API6:2023 — Unrestricted Access to Sensitive Business Flows
- Identificeer kritieke business flows: checkout, registratie, wachtwoord reset, OTP
- Test of flows in de verkeerde volgorde uitvoerbaar zijn (stap 3 vóór stap 1)
- Controleer of aankopen/acties te automatiseren zijn zonder CAPTCHA of device fingerprinting
- Test op race conditions bij beperkte resources (kortingscodes, vouchers, beperkte stock)
- Verifieer of tijdelijke tokens (OTP, reset links) herbruikbaar zijn
API7:2023 — Server Side Request Forgery (SSRF)
- Zoek alle endpoints die een URL als input accepteren (webhooks, import, fetch, preview)
- Test met intern bereikbare adressen:
http://169.254.169.254/ (AWS metadata)
http://localhost/
http://192.168.x.x/
- Probeer DNS rebinding en alternatieve encodings:
http://0x7f000001/, http://[::1]/
- Test of de response informatie lekt over intern netwerk (poorten, services)
- Controleer of de server uitgaande DNS queries doet (gebruik interactsh/Burp Collaborator)
API8:2023 — Security Misconfiguration
- Controleer CORS: accepteert de API
Origin: null of Origin: evil.com?
- Zoek naar onnodige HTTP methodes (OPTIONS, TRACE)
- Controleer security headers:
X-Content-Type-Options, X-Frame-Options, CSP, HSTS
- Zoek naar debug endpoints, Swagger/OpenAPI specs,
/api-docs, /graphql playground
- Controleer of stack traces of interne paden zichtbaar zijn in error responses
- Test TLS configuratie: verouderde cipher suites, TLS 1.0/1.1 nog actief?
- Controleer default credentials op beheerinterfaces
API9:2023 — Improper Inventory Management
- Breng alle versies van de API in kaart: v1, v2, v3, beta, legacy
- Test of oudere versies minder streng beveiligd zijn (geen auth, geen rate limiting)
- Zoek naar shadow APIs via JS bundels, mobile app decompilatie of oude documentatie
- Controleer of deprecated endpoints nog actief zijn en bereikbaar
- Verifieer of test/staging endpoints publiek bereikbaar zijn in productie
API10:2023 — Unsafe Consumption of APIs
- Identificeer alle third-party API's die de applicatie consumeert
- Controleer of de applicatie responses van externe API's valideert vóór verwerking
- Test op injection via data die uit externe bronnen binnenkomt (stored XSS, SQLi via third-party data)
- Controleer of SSL-certificaten van externe API's gevalideerd worden
- Test of een gecompromitteerde upstream API een cascade effect kan veroorzaken (bijv. SSRF via webhook van derde partij)