2. Identifizieren und Interagieren mit API
Wie identifiziert man API Endpunkte¶
- Man kann schon viele Infos sammeln indem man nur einfach die Anwendung durchstöbert
- Selbst wenn es eine Dokumentation gibt lohnt sich das weil diese manchmal einfach veraltet sind
- Mit dem Burp Scanner kann man Anwendungen crawlen und anschließend manuell durchstöbern
- Muster wie
/api/könnten Auskunft über die Dokumentation liefern - Javascript Dateien enthalten oft Referenzen auf API Endpoints die im Browser gar nicht direkt ausgelöst werden
- Burp Scanner extrahiert automatisch einige Endpoints beim crawlen
- Für eine tiefere Ektraktion kann man mit JS Link Finder BApp benutzen
Interaktion mit API-Endpoints¶
- Mit Repeater oder Intruder
- API testen - HTTP Methoden oder Medientyp ändern und schauen wie es reagiert
- Fehlermeldungen genau prüfen weil enthalten oft Infos
Unterstützte HTTP-Methoden identifizieren¶
Die HTTP-Methode gibt an, welche Aktion auf einer Ressource ausgeführt wird.
Beispiele:
- GET -> Ruft Daten ab
- PATCH -> Ändert Daten teilweise
- OPTIONS -> Liefert Informationen darüber, welche Methoden erlaubt sind
Unterstützte Content-Types identifizieren¶
- API-Endpoints erwarten oft Daten in einem bestimmten Format.
- Je nach Content-Type kann sich das Verhalten der API ändern.
-
Durch Ändern des Content-Types kannst du z. B.:
- Fehler provozieren, die nützliche Infos preisgeben.
- Schwache Abwehrmechanismen umgehen.
- Unterschiede in der Verarbeitungslogik ausnutzen.
- Beispiel: JSON-Verarbeitung ist sicher, aber XML-Verarbeitung erlaubt Injections.
-
Vorgehen:
- Im Content-Type-Header den Typ ändern.
- Den Request-Body passend dazu umformatieren.
-
Mit dem Content Type Converter BApp kannst du Daten automatisch zwischen XML und JSON konvertieren.
Lab: Finding and exploiting an unused API endpoint¶
!!Nachträglich dokumentieren!!
Using Intruder to find hidden endpoints¶
Wir können den Intruder nutzen und eigene Payloads draufladen um PATHS zu bruteforcen - z. B. mit mehreren Wordlisten bzw. HTTP Befehlen
§PATCH§ /§api§/§products§/§1§/§price§ HTTP/2
Host: 0ad300850399877881047ffd00e70095.web-security-academy.net
Finding hidding parameters¶
Um tiefer in der API zu suchen kann man den Inhalt der Endpunkte mit Tools abchecken - manchmal gibt es undokumentierte Parameter die, die API trotzdem nutzen kann.
-
Burp Intruder
- Kann mit einer Wordlist gängiger Parameternamen systematisch Parameter testen.
-
Param Miner BApp
- Errät automatisch bis zu 65.536 Parameternamen pro Request.
-
Content Discovery Tool
- Deckt Inhalte auf, die nicht direkt verlinkt sind.
- Hilft ebenfalls beim Aufspüren versteckter Parameter.
Mass assignment vulnerabilities¶
Mass assignment bedeutet, dass die Entwickler z. B. den Namen ändern lassen wollten, aber man kann verschiedene zusätzliche Parameter mitschicken falls es die gibt, weil nicht validiert wird.
Beispiel:
GET /api/users/123
Antwort:
{
"id": 123,
"username": "wiener",
"email": "wiener@example.com",
"isAdmin": false,
"credits": 5000
}
Offiziell darf man z. B. nur username und email ändern.
Aber wenn man einen PATCH baut wie:
Lab: Exploiting a mass assignment vulnerability¶
- Wir rufen erstmal ganz viele Methoden und Funktionen auf und analysieren hinterher was uns der Server so sagt - Wir sehen ein
2. Wir passen dann den POST Request an - hier haben wir item_price auf 0 gesetzt, aber alternativ würde sich auch der discount auf 100% setzen lassen. Ab da hat man freien Spielraum

