Pentest

Pentest von REST und GraphQL APIs: Technische Checkliste fur legales Bug Bounty

Por Equipe Basilisk ·

Praxisnahe Methodik zum Testen von REST und GraphQL APIs in autorisierten Programmen, fokussiert auf IDOR, Auth-Bypass und Introspection-Angriffe.

APIs sind die lukrativste Angriffsflache in jedem ernsthaften Bug-Bounty-Programm geworden, und gleichzeitig die meistvernachlassigte von Pentestern, die immer noch XSS im Kontaktformular jagen. Ein IDOR auf /api/v3/users/{id}/invoices zahlt drei bis acht tausend Dollar bei HackerOne, wahrend ein reflektiertes XSS auf einer Marketingseite bei 250 schliesst. Das Basilisk-OffSec-Team hat in dieser Checkliste den exakten Ablauf zusammengestellt, den wir in autorisierten Engagements und offentlichen Programmen wie GitLab, Shopify und Reddit anwenden. Vor allem: Lies den Scope, bestatige die Brand Domain und beruhre niemals Endpoints ausserhalb der Liste. Alles hier setzt eine schriftliche Autorisierung voraus.

Der Ausgangspunkt ist niemals Burp offen im Gesicht. Es ist Surface Mapping. Hol dir die Mobile App mit apktool, extrahiere URL-Strings und lade sie als manuelle Sitemap in Burp. Fahre ffuf mit der Wordlist api-endpoints-res.txt von SecLists gegen Pfade wie /api/, /v1/, /internal/, /graphql, /gql, /query. Wayback Machine uber gau und waybackurls fordert veraltete Endpoints zutage, die niemand gepatcht hat. In einem aktuellen Engagement fanden wir ein /api/v1/admin/export aus dem Jahr 2019, das ein normales User-Token akzeptierte, ahnlich wie in Web-Pentest von Null: Ein Sicheres Lab mit DVWA, Juice Shop und Burp Suite Bauen beschrieben. Dokumentiere jeden Endpoint mit Methode, erwartetem Content-Type und benotigter Rolle, bevor du irgendein Payload abfeuerst.

IDOR bleibt der Bug Nummer eins in REST APIs aus einem einfachen Grund: Entwickler vertrauen der ID aus dem JWT, lesen aber die ID aus der URL. Erstelle zwei Konten in der Ziel-App, fang beide Sessions in Burp ab und nutze die Extension Autorize oder Auth Analyzer, um jeden Request von Konto A mit dem Cookie von Konto B erneut zu senden. Achte auf 200-Antworten mit unterschiedlichem Body, nicht nur auf Statuscodes. UUIDs sind kein Schutz: Enumeriere sie uber Suchendpoints, CSV-Exporte oder Benachrichtigungen. Injection-Logik gilt auch in APIs, wie wir in SQL Injection in der Praxis: Ausnutzen, Erkennen und Mitigieren im Kontrollierten Lab gezeigt haben, besonders bei sort-, order- und search-Filtern, die als SQL-Konkatenation enden.

GraphQL andert die Spielregeln. Beginne mit dem Test der Introspection auf /graphql mit der Query {__schema{types{name fields{name}}}}. Wenn sie in Produktion offen steht, hast du den halben Report schon geschrieben. Tools wie InQL, GraphQL Voyager und clairvoyance rekonstruieren Schemas selbst bei deaktivierter Introspection via Field Stuffing. Suche nach exponierten Mutations wie adminUpdateUser, impersonate, exportAllData. Batch Queries umgehen Rate Limits: schicke 1000 Login-Mutations in einem einzigen HTTP-Request. Alias Overloading bricht naive Validatoren. Anders als in Modernes XSS: DOM, Stored und Reflected mit Beispielen aus dem Testlabor besprochen, ist der Impact hier fast immer logikbasiert, keine Skript-Injection.

Auth-Bypass geht in diesem Kontext weit uber den klassischen none-Algorithmus im JWT hinaus. Teste jku- und kid-Injection, den Wechsel von RS256 zu HS256 mit dem Public Key als Secret und Refresh Tokens, die nie ablaufen. Header wie X-Original-URL, X-Rewrite-URL, X-Forwarded-For und X-User-Id umgehen Auth-Middleware haufig, wenn die API hinter einem fehlkonfigurierten Gateway liegt. In GraphQL verifiziere, dass die @auth-Directive jedes Feld abdeckt, oder ob ein verschachtelter Resolver Daten ohne Prufung leakt. SSRF tritt auch in APIs auf, die URLs als Parameter fur Webhooks oder Avatare akzeptieren, ein Muster, das wir in SSRF Entmystifiziert: Cloud Metadata im Lokalen AWS-Lab Ausnutzen mit Exploits gegen AWS IMDS detailliert haben.

Rate Limiting, Mass Assignment und Business Logic schliessen die Checkliste ab. Fur Mass Assignment fuge Felder wie isAdmin:true, role:owner, verified:true in jedem PATCH oder PUT hinzu. Frameworks wie Rails und NestJS mit unvollstandigen Whitelists servieren Admin auf dem Silbertablett. Fur Race Conditions auf Coupon- oder Withdrawal-Endpoints nutze Turbo Intruder mit der Single-Packet-Attack von James Kettle und feuere 30 simultane Requests ab. Dokumentiere den Impact mit der Zahl der exponierten Datensatze, geschatztem finanziellen Wert und einem reproduzierbaren curl-PoC. Programme zahlen fur demonstrierten Impact, nicht fur Technik.

Praktisches Takeaway: Baue ein Report-Template mit CWE-Titel, nummerierten Schritten, rohem Request, gekurzter Response und einer Einzeiler-Fix-Empfehlung. Reiche fruh ein, bevor Duplikate landen, aber niemals ohne den Scope bestatigt zu haben. Legales Bug Bounty ist Disziplin vor Kreativitat, und auf dieser Disziplin baut Basilisk seine Reputation in Programmen wie Mercado Livre und Nubank auf.

Nenhum comentário ainda

Seja o primeiro a comentar.

Deixe seu comentário

Entre com sua conta Canverly para comentar. Você pode usar a mesma conta em qualquer site da rede.

Entrar com Canverly