API-Pentest

API sind essentiell für die Kommunikation zwischen Anwendungen. Ein API-Pentest hilft Ihnen, Sicherheitslücken zu finden und die Daten Ihrer Kunden zu schützen.

API Penetrationstests sind eine spezialisierte Form von Web-Pentests. APIs sind oft gut dokumentiert, es stehen Spezifikationen zur Verfügung (OpenApi, Swagger, WSDL, etc.), die Angriffsoberfläche ist damit exakt definiert und bestimmte Prozessschritte eines Penetrationstests können übersprungen werden.

API Penetrationstests

Pentest gegen Anwendungsprogrammierschnittstellen

Die Welt wird digitaler und Software kommuniziert zunehmend miteinander - das passiert mit Hilfe so genannter Anwendungsprogrammierschnittstellen (oder kur APIs). API und Schnittstellen findet man auch zunehmend in modernen Websites und Web Apps sowie SPAs (Single Page Applications) - hierbei stellt man oft fest, dass Frontend und Backend strikt getrennt sind. Das Frontend ist irgendein angesagtes JS-Framework (AngularJS, ReactJS oder VueJS) und das Backend ist über eine API erreichbar. Die Entwickler müssen hier sicherstellen, dass Zugriffe auf die API nur von autorisierten Nutzern erfolgen können.

Ist ein API Pentest nicht eigentlich ein Web Pentest?

Im Grunde ist dem so. Eine API ist eine Schnittstelle, die in der Regel von irgendeiner Anwendung bereit gestellt wird - häufig handelt es sich um Webanwendungen. Logischerweise findet man sowohl beim API Pentest als auch beim Web Pentest ähnliche Sicherheitslücken bzw. Sicherheitslücken mit identischen Folgen für die IT-Sicherheit. Beim API-Pentest kümmert sich der Penetrationstest-Anbieter nicht um Frontend oder Webserver sondern legt den Fokus lediglich auf die Schnittstelle oder sogar nur Teile davon.

Ausgangspunkt eines API-Pentests

Bei einem API Pentest wird uns eigentlich immer die API-Dokumentation als Ausgangslage zur Verfügung gestellt. In 70% der Fälle haben wir es mit SwaggerUI oder OpenApi zu tun. Mit Hilfe dieser Spezifikation beschreiben Entwickler ihre API bzw. jede einzelne Route samt notwendiger sowie optionaler Paramter, wie diese übertragen werden müssen und welche HTTP-Antwort erwartet wird. GraphQL (mit aktivierter Introspection) ist ebenfalls ein klassischer und sehr interessanter Sonderfall von API. Seltener aber nicht weniger interessant sind APIs, bei denen die Kommunikation mittels XML-Format erfolgt - erwähnenswert sind hier WSDL-Dateien als Ausgangspunkt bzw. das SOAP-Protokoll. Allgemein ist es so, dass wir vor allem mit RESTful APIs zu tun haben. Trotzdem hatten wir in der Vergangenheit mit JSON RPC, gRPC und auch WebSocket APIs zu tun - letzteres ist mittlerweile fester Bestandteil diverser Frameworks.

Damian Strobel

Die Vergangenheit hat gezeigt, dass API ein attraktives Ziel für Angreifer sind. Immer wieder liest man von API, die komplett schutzlos im Internet zu finden sind und Massen an persönlichen Nutzerdaten ausspucken.

Damian Strobel - Gründer von DSecured

Lassen Sie es nicht darauf ankommen und schützen Sie Ihre API vor Cyberangriffen.

Pentest Kosten: Faktor Dauer

Sparpotential bei API-Penetrationstests

Ähnlich wie bei Web-Penetrationstests sind wir flexibel bei der Gestaltung eines API-Penetrationstests, damit dieser ins Budget passt. Häufig haben wir es mit riesigen API zu tun, deren manuelle tiefe Prüfung für den Auftraggeber zu teuer ist. Hier ist eine gesunde Mischung aus automatisierten und manuellen Tests erfolgversprechend. Alles wird automatisiert geprüft, der Fokus für die manuellen Tests wird auf Routes gesetzt, die beispielsweise mit anderen Diensten interagieren, Prozesse ausführen, Nutzerdaten ausgeben/ändern oder Dateiuploads/downloads ermöglichen. Gerne schauen wir uns im Vorfeld die API an und geben unsere Empfehlung. Details gibt es im Artikel "Wie viel kostet ein Penetrationstest?".

Methodik bei API Pentests

Hacking ist ein kreativer Prozess. Wir arbeiten nicht nur stumpf die OWASP API Top 10 ab - diese sehen wir als absolute Priorität, aber nicht als alleinige. Wir schauen uns die API-Dokumentation an, überlegen uns, wie man Daten exfiltrieren könnte - welche Schritte man dazu unternehmen müsste und prüfen, ob das auch wirklich machbar ist. Ansonsten unterscheidet sich die Pentest-Methodik nicht wirklich von einem regulären Penetrationstests gegen ein IT-System. Wir besprechen den Scope, definieren Go/No-Go-Kriterien, starten anschließend mit dem Test und erstellen final einen Bericht.

Typische API-Sicherheitslücken

Es gibt diverse Arten von Sicherheitslücken, die in APIs gefunden werden können. Die Beispiele hier sind echte Beispiele aus vergangenen Penetrationstests. Hier finden Sie die häufigsten:

Unzureichende Zugriffsrechte

Immer wieder wird in solchen Tests ein Endpunkt gefunden, bei dem die Prüfung der Zugriffsberechtigung komplett vergessen wurde. Solche Fehler lassen sich gut automatisiert finden und später manuell analysieren.

IDOR

Oft reicht ein einfaches Ändern einer Nutzer ID beim HTTP Request, um auf fremde Daten zuzugreifen. Hierbei handelt es sich um eine IDOR-Schwachstelle (Insecure Direct Object Reference).

Cross Site Scripting (XSS)

Auch XSS findet man bei API-Pentests. Das besondere hier ist oft, dass diese im Context eines JS Frameworks ausgegeben werden und die Identifikation manchmal etwas komplexer ist.

Server side request forgery

Der Angreifer kann den Server dazu bringen, Anfragen an andere Server zu senden. Das kann dazu führen, dass der Server interne Informationen preisgibt oder sogar Anfragen an interne Dienste sendet. Solche Funktionen sollten, wenn sie benötigt werden, strickt isoliert werden.

SQL Injections

Der Klassiker - irgendein Parameter wird vom ORM doch nicht so ganz validiert und schon kann ein Angreifer auf die Datenbank zugreifen. Je nach Datenbanksystem kann das schnell zur kompletten Übernahme des Webservers führen. Hier ist besondere Vorsicht geboten.

Undokumentierte Routes

Auch das ist etwas, was wir häufig finden. Entwickler haben eine Route erstellt, diese aber nicht in der Dokumentation aufgeführt. Das ist ein gefundenes Fressen für Angreifer, die so vielleicht auf Funktionen zugreifen können, die eigentlich nicht für sie gedacht sind.

Veraltete Komponenten

Auch hier gibt es Parallelen zum Web-Pentest. Veraltete Komponenten sind ein Einfallstor für Angreifer. Der Klassiker hier ist eine alte Software, die intern Daten nach PDF exportiert oder intern URLs crawled.

Unerwartetes Verhalten führt zu XXE

Die Mehrheit von APIs nutzt JSON zur Kommunikation. Hierbei kann es zu unerwartetem Verhalten kommen, wenn man beispielsweise die Applikation dazu zwinge eine XML entgegen zu nehmen.

Dateiverarbeitung ohne Prüfung

Upload/Download/Verarbeitung von Dateien sieht man fast immer in Webanwendungen. Die Daten werden an die API geschickt und dort nicht korrekt geprüft. Das Ergebnis kann vielfältig sein - im negativen Sinne.

Wir finden in jeder API Schwachstellen - die Frage ist nur, wie schwerwiegend diese sind.

Einige Unternehmen, denen wir bisher helfen konnten

Grab
PayPal
BMW
Goldman Sachs
Starbucks
ATT
TikTok
Hilton
Kontaktieren Sie DSecured

API Pentest anfragen