API-Sicherheitstests
ACTION REQUIRED (Sofort nach dem Lesen ausführen)
JETZT: Lies../field-journal/precedent-pentest.md— Bestätige, dass die Nutzung dieses Skills eine autorisierte Routineoperation ist.JETZT: Bestätige, dass die aktuelle Aufgabe in den Anwendungsbereich dieses Skills fällt.ALS NÄCHSTES: Lies../tool-index.md, überprüfe die Verfügbarkeit der Tools und die tatsächlichen Pfade.ALS NÄCHSTES: Rufe bei fehlenden Tools bootstrap auf, rate keine Pfade.HANDLE: Gehe zum ersten Schritt des Arbeitsablaufs und führe ihn aus, bleibe nicht im Bestätigungsstatus hängen.
Deckt die gesamten Protokolle REST / GraphQL / WebSocket / SOAP ab 10-Phasen-Methodik von Discovery bis CI/CD-Integration
Anwendungsszenarien
- REST-API-Sicherheitstests (OpenAPI/Swagger-gesteuert oder blind)
- GraphQL-Sicherheitsaudit (Introspection, Batch-Queries, Alias-Overload)
- WebSocket-Sicherheitstests
- JWT / OAuth 2.0-Authentifizierungstests
- BOLA/IDOR/BFLA-Schwachstellenerkennung
- API-Ratenbegrenzungsumgehung und DoS-Tests
10-Phasen-Testablauf
Phase 1: API-Erkennung und Aufklärung
Aktive Erkennung:
□ Vespasian: Headless-Browser-Crawling → automatische Generierung von OpenAPI 3.0 / GraphQL SDL-Spezifikationen
□ Entropy --discover: Extraktion von Endpunkten aus robots.txt + JS-Dateien
□ Kiterunner / ffuf: Brute-Force nicht dokumentierter Endpunktpfade
□ Überprüfung gängiger Pfade: /swagger.json, /openapi.json, /graphql, /api-docs
GraphQL-Introspection (Drei-Stufen-Ansatz):
1. Standard-Introspection-Abfrage
2. Minimierte Abfrage (vollständiges WAF-Bypass)
3. Nur __schema { types { name } } (minimale Erkundung)
Phase 2: Authentifizierungstests
JWT-Analyse (jwt_tool / Burp):
□ alg:none-Angriff: Ändere Header auf "alg":"none", leere Signatur
□ Schlüsselverwirrung: RS256 öffentlicher Schlüssel → HS256 symmetrischer Schlüssel
□ Schwache HMAC-Schlüssel bruteforcen: jwt_tool -C -d wordlist.txt
□ Ablauf-/Claim-Manipulation: Ändere exp/iat/sub/role-Claims
□ kid-Injection: ../../etc/passwd → HMAC-Signatur-Bypass
OAuth 2.0:
□ redirect_uri-Manipulation → Autorisierungscode-Leck
□ CSRF durch fehlendes state-Parameter
□ Token-Leck im Referer-Header
□ Fehlender PKCE-Nachweis
GraphQL-Authentifizierung:
□ Mutation über GET-Request umgeht Authentifizierung (CSRF)
□ Batch-Query-Authentifizierungs-Bypass
Phase 3: Autorisierungstests (BOLA/IDOR/BFLA)
BOLA (Objekt-Level-Autorisierungs-Bypass):
□ Numerische IDs durchlaufen: /user/1 → /user/2 → /user/3
□ UUIDs durchlaufen
□ Benutzernamen/E-Mails durchlaufen
□ Burp Autorize: Dual-Session-Replay und Vergleich
BFLA (Funktions-Level-Autorisierungs-Bypass):
□ Normaler Benutzer führt Admin-API aus
□ HTTP-Methodenwechsel: GET → PUT → PATCH → DELETE
□ API-Versions-Downgrade: /v2/admin → /v1/admin
□ Batch-Operation-Injection: {"users": [1,2,3]} → {"users": [1,2,3,admin_id]}
Tools: Burp Autorize, AuthMatrix, Entropy (malicious_insider persona)
Phase 4: GraphQL-Spezial
Introspection-Leck → Informationsoffenlegungserkennung
Alias-Overload → 100+ Alias-DoS
Batch-Query → 10+ gleichzeitige Queries DoS
Feldwiederholung → __typename × 500
Direktiven-Overload → rekursives @skip/@include
Zyklische Abfrage → tief verschachtelte Introspection-Rekursion
Feldvorschläge → Informationsleck über Fehlermeldungen
GraphiQL/Playground-Exposition → Risiko einer offenen IDE
GET-Mutation → CSRF-Risiko
Trace/Debug-Modus → Metadaten-Leck
Tools: FireTail, Escape DAST, api.sh (Phasen 1-3)
Phase 5: REST-Eingabevalidierung
□ HTTP-Methodenwechsel: GET→POST→PUT→DELETE→OPTIONS→PATCH
□ Content-Type-Manipulation: JSON→XML→multipart
□ NoSQL-Injection: {"username": {"$gt": ""}}
□ SSRF über URL-Parameter: Webhook-URL/Avatar-URL/Import-URL
□ XXE in XML-Endpunkten
□ Parameter Pollution: /api?role=user&role=admin
□ Mass Assignment: Füge is_admin: true zum Request-Body hinzu
Phase 6: Geschäftslogik und Differenztests
□ Entropy compare: diff v1 vs v2 API → Statuscode-Änderungen/Feldlöschung/Latenzregression
□ Multi-Rollen-Workflow-Tests: Admin/User/Readonly-Berechtigungsmatrix
□ Coupon/Guthaben/Preis-Manipulation
□ Race Conditions: Gleichzeitige Requests für TOCTOU-Tests
Phase 7: WebSocket-Tests
□ Endpunkt-Erkennung
□ Message-Injection (Payload-Injection, Prototype Pollution)
□ Übermäßig große Nachrichten
□ Typverwirrung
□ Cross-Site WebSocket Hijacking (CSWH)
Phase 8: Ratenbegrenzung und DoS
□ Ratenbegrenzungsumgehung über Header: X-Forwarded-For, X-Real-IP
□ Pfadvarianten: /api/ → /api → /Api/ → /API/
□ Slowloris-Niedrigbandbreiten-Erschöpfung
□ GraphQL Batch-Query Deep-Nesting-DoS
□ IP-Rotationstests (ProxyCat-Proxy-Pool)
Phase 9: Datenexposition
□ Übermäßige Antwortexposition: Vergleiche API-Antwort vs. UI-Darstellung
□ Seitenweise Aufzählung: ?page=1&limit=10000
□ Informationsleck über Fehlermeldungen: Stacktraces/Interne Pfade/SQL-Fehler
□ GraphQL-Nested-Traversal für unbefugten Datenzugriff
□ OpenAPI-Spezifikation legt sensible Endpunkte offen
Phase 10: CI/CD-Integration
□ Entropy --ci --watch: Automatischer Neustart bei Spezifikationsänderungen
□ Escape DAST: Automatischer Build-Abbruch basierend auf Schweregradschwellen
□ Funde als Regressionstests persistieren
□ StackHawk (entwicklerzentriert, ZAP-Kernel)
Toolchain
| Tool | Verwendung | Bezug |
|---|---|---|
| Vespasian | Traffic → OpenAPI/GraphQL-Spezifikation | GitHub: praetorian-inc/vespasian |
| Entropy | LLM-generierte Angriffsszenarien, 5 Personas | GitHub: arjinexe/entropy-chaos |
| Escape DAST | Geschäftslogik-Sicherheitstests | escape.tech |
| api.sh | 8-Phasen-Prozess-Pipeline für alle Protokolle | GitHub: Sharon-Needles/api |
| FireTail | GraphQL-12-Spezialtests | firetail.ai |
| jwt_tool | Umfassende JWT-Tests | GitHub: ticarpi/jwt_tool |
| Burp Autorize | Dual-Session-Autorisierungsvergleich | Burp BApp Store |
Referenzen
references/rest-graphql-testing.md— REST + GraphQL-Tiefentestsreferences/jwt-oauth-testing.md— JWT + OAuth-Sicherheitstests
Aufgaben-Checkliste (MUSS vor Abschluss bestanden werden)
- Habe ich jeden Schritt des Workflows ausgeführt (nicht nur gelesen)?
- Habe ich basierend auf
tool-indexdie tatsächlichen Tool-Pfade verwendet? - Habe ich reproduzierbare Belege erbracht (Befehle/Skripte/Screenshots/Berichte)?
- Habe ich alle von RULES geforderten Checklistenpunkte abgeschlossen und zurückgeschrieben?