Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

API-Sicherheit für Entwickler: Ein Leitfaden mit JWT, Swagger und ethischen Hacks

Lerne die Grundlagen der API-Sicherheit kennen: Swagger, JWT, Credential-Theft und mehr. Ein praxisnaher Tutorial für Studierende und Entwickler – basierend auf dem CS6035-Projekt.

API-Sicherheit JWT Tutorial Swagger API CS6035 API Security Projekt JWT hacken Token Manipulation Authentifizierung API ethische Hacks Credential Theft API Schwachstellen Web API Sicherheit JWT Angriff API Audit OpenAPI Sicherheit Studenten Tutorial API

Warum API-Sicherheit heute wichtiger ist denn je

APIs sind das Rückgrat moderner Webanwendungen. Von Social-Media-Plattformen bis hin zu KI-gestützten Apps – jede Interaktion zwischen Diensten läuft über APIs. Doch mit der wachsenden Nutzung steigt auch die Angriffsfläche. Der jüngste Datendiebstahl bei einem großen Bewertungsportal zeigt, wie schnell gestohlene Credentials in falsche Hände geraten können. In diesem Tutorial lernst du, wie du Schwachstellen in APIs erkennst und behebst – praxisnah am Beispiel einer fiktiven Bewertungsplattform.

Swagger – Der erste Schritt zur API-Analyse

Swagger (heute Teil der OpenAPI-Spezifikation) ist ein mächtiges Tool, um APIs zu dokumentieren und zu testen. Stell dir vor, du betreibst eine Plattform für Programmier-Sprachbewertungen – ähnlich wie ein Metacritic für Code. Mit Swagger siehst du alle Endpunkte, Parameter und Rückgabewerte auf einen Blick. So findest du schnell heraus, ob sensible Daten ungeschützt sind oder Authentifizierung fehlt.

Ein typischer erster Schritt: Rufe die Swagger-Oberfläche auf (z.B. http://localhost:8080/swagger/index.html) und erkunde die verfügbaren Endpunkte. Achte auf Pfade wie /api/reviews oder /api/users. Teste einzelne Aufrufe direkt im Browser oder mit Tools wie cURL oder Postman. So erhältst du ein Gefühl für die API-Struktur und entdeckst vielleicht schon die erste Flagge.

Praxistipp: Swagger ist nicht nur für Entwickler nützlich – auch Security-Auditoren nutzen es, um APIs auf Herz und Nieren zu prüfen. Ein Blick auf die Dokumentation kann dir Stunden manueller Arbeit ersparen.

Gestohlene Credentials – Wie Angreifer an deine Daten kommen

Im zweiten Szenario geht es um gestohlene Anmeldedaten. Die Plattform hat einen Sicherheitsvorfall erlitten, und du kannst erbeutete Credentials nutzen, um einen neuen Reviewer zu erstellen. Das klingt böse, ist aber leider Realität: Immer wieder gelangen Zugangsdaten durch Phishing, Datenleaks oder schwache Passwörter an die Öffentlichkeit.

Deine Aufgabe: Finde einen Endpunkt, der einen neuen Benutzer anlegt – und zwar mit einem gültigen Authentifizierungstoken. Solche Tokens werden oft in JWT-Form (JSON Web Token) ausgeliefert. Ein JWT besteht aus drei Teilen: Header, Payload und Signatur. Der Header enthält Metadaten wie den Algorithmus, die Payload die eigentlichen Claims (z.B. Benutzer-ID, Rolle), und die Signatur stellt die Integrität sicher.

Wenn du ein Token besitzt, kannst du es im Authorization-Header mitgeben. Achte auf das Format: Bearer <token>. Ohne gültiges Token schlägt der Aufruf fehl. Also: Suche nach einem Endpunkt, der ein Token ausstellt – vielleicht über einen Login mit den gestohlenen Daten.

JWT verstehen – Der Schlüssel zur API-Sicherheit

JSON Web Tokens sind allgegenwärtig. Sie werden für Authentifizierung und Autorisierung in unzähligen APIs eingesetzt. Ein JWT kann man sich wie einen digitalen Ausweis vorstellen: Er enthält Informationen über den Inhaber und ist mit einer Signatur versehen, sodass er nicht unbemerkt gefälscht werden kann.

Der Aufbau eines JWT:

  • Header: Enthält den Algorithmus (z.B. HS256 oder RS256) und den Typ (JWT).
  • Payload: Enthält Claims wie sub (Subject), role (Rolle) oder exp (Ablaufzeit).
  • Signatur: Wird aus Header, Payload und einem geheimen Schlüssel (bei HMAC) oder einem privaten Schlüssel (bei RSA) erzeugt.

Ein Beispiel für einen dekodierten Payload:

{
  "sub": "1234567890",
  "name": "Max Mustermann",
  "role": "user",
  "iat": 1516239022
}

Wenn du einen JWT in der Hand hast, kannst du ihn auf jwt.io dekodieren und die enthaltenen Claims ansehen. Achte besonders auf die Rolle: Ist sie admin oder moderator? Dann hast du vielleicht mehr Rechte, als du denkst.

JWT hacken – Teil 1: Schwachstellen ausnutzen

Jetzt wird es spannend: Du möchtest eine Bewertung löschen, aber nur der Moderator darf das. Du hast aber nur ein normales User-Token. Was tun? Ein klassischer Angriff ist der Algorithmus-Wechsel (Algorithm Confusion). Wenn der Server nicht prüft, welcher Algorithmus im Header angegeben ist, kannst du die Signatur umgehen, indem du den Algorithmus auf none setzt. Dann wird die Signatur ignoriert, und du kannst beliebige Claims setzen.

Praktische Umsetzung:

  1. Dekodiere dein vorhandenes JWT (z.B. auf jwt.io).
  2. Ändere den Header: {"alg": "none", "typ": "JWT"}.
  3. Setze in der Payload die Rolle auf moderator oder admin.
  4. Entferne die Signatur (leer lassen).
  5. Erstelle ein neues JWT: base64(header).base64(payload). (Punkt am Ende).
  6. Sende das Token im Authorization-Header mit.
Achtung: Dieser Angriff funktioniert nur, wenn der Server den Algorithmus none akzeptiert. Moderne Bibliotheken lehnen das standardmäßig ab. Aber ältere oder schlecht konfigurierte Systeme sind anfällig.

Mit dem manipulierten JWT kannst du nun den Lösch-Endpunkt aufrufen und die erste Hack-Flagge einsammeln.

JWT hacken – Teil 2: Schwacher Schlüssel

Ein weiterer Angriffspunkt ist ein schwacher oder öffentlich bekannter HMAC-Schlüssel. Wenn der Server denselben Schlüssel für Signatur und Verifikation verwendet und dieser Schlüssel leicht zu erraten ist (z.B. secret oder password), kannst du eigene JWTs signieren.

Vorgehen:

  1. Rate oder finde den Schlüssel (z.B. durch Brute-Force oder Hinweise in der Dokumentation).
  2. Erstelle einen neuen JWT mit beliebigem Header (z.B. HS256) und Payload (z.B. Rolle admin).
  3. Signiere ihn mit dem gefundenen Schlüssel.
  4. Verwende das Token für den API-Aufruf.

Tools wie jwt_tool oder Online-Dienste helfen dir, den Schlüssel zu knacken. Ein Wörterbuchangriff mit gängigen Schlüsseln ist oft erfolgreich.

Weitere Schwachstellen entdecken

Neben JWT gibt es viele andere API-Sicherheitslücken: fehlende Ratenbegrenzung, unsichere direkte Objektreferenzen (IDOR), Massenzuweisung oder fehlerhafte Autorisierung. In unserem Beispiel könntest du auf einen Endpunkt stoßen, der ohne Token sensible Daten preisgibt – oder einer, der Parameter nicht validiert.

Ein Trendbeispiel aus der Gaming-Welt: Stell dir vor, eine Spiele-API gibt alle Spieler-Items preis, wenn du nur die Benutzer-ID kennst. Das wäre ein klassischer IDOR-Angriff. In der Praxis siehst du das leider oft bei jungen Startups, die schnell Features ausliefern wollen.

Um solche Lücken zu finden, hilft ein strukturierter Ansatz:

  • Analysiere die Swagger-Dokumentation auf ungeschützte Endpunkte.
  • Teste, ob Pfade ohne Token erreichbar sind.
  • Prüfe, ob Rollen korrekt durchgesetzt werden (z.B. normaler User kann Admin-Funktionen aufrufen).
  • Versuche, Parameter zu manipulieren (z.B. id=1 auf id=2 ändern).

Verantwortungsvolle Offenlegung und ethische Hacks

Alles, was du hier lernst, dient der Sicherheit – nicht der Sabotage. Wenn du eine Schwachstelle in einer echten API findest, melde sie verantwortungsvoll an den Betreiber. Viele Unternehmen haben Bug-Bounty-Programme, die dich für Hinweise belohnen. Denk daran: Mit großer Macht kommt große Verantwortung.

Fazit

API-Sicherheit ist ein weites Feld, aber mit den richtigen Werkzeugen und etwas Kreativität kannst du viele Lücken aufdecken. Swagger hilft dir, die API zu verstehen, JWT ist der Schlüssel zur Authentifizierung, und ethische Hacks zeigen, wo Verbesserungen nötig sind. Der Trend zu KI und vernetzten Apps wird die Bedeutung von API-Sicherheit nur noch steigern. Also: Lerne die Grundlagen, bleib neugierig und schütze die digitalen Grenzen.