AWS - API Gateway Unauthenticated Enum
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
API Invoke bypass
Laut dem Vortrag Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo können Lambda Authorizers unter Verwendung der IAM-Syntax konfiguriert werden, um Berechtigungen zum Aufrufen von API-Endpunkten zu gewähren. Dies stammt aus den Dokumenten:
Das Problem mit dieser Methode, Berechtigungen zum Aufrufen von Endpunkten zu erteilen, ist, dass das "*" "alles" impliziert und keine weiteren Regex-Syntax unterstützt wird.
Einige Beispiele:
Eine Regel wie
arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*
, um jedem Benutzer Zugriff auf/dashboard/user/{username}
zu gewähren, gibt ihnen auch Zugriff auf andere Routen wie/admin/dashboard/createAdmin
, zum Beispiel.
Beachten Sie, dass "*" nicht aufhört, sich mit Schrägstrichen zu erweitern, daher könnte die Verwendung von "*" im api-id beispielsweise auch "jede Stufe" oder "jede Methode" anzeigen, solange der endgültige Regex weiterhin gültig ist.
Also arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
Kann eine POST-Anfrage an die Teststufe zum Pfad /prod/GET/dashboard/admin
validieren, zum Beispiel.
Sie sollten immer klar haben, was Sie erlauben möchten, und dann überprüfen, ob andere Szenarien mit den erteilten Berechtigungen möglich sind.
Für weitere Informationen, abgesehen von den docs, finden Sie Code zur Implementierung von Authorizern in diesem offiziellen aws github.
IAM Policy Injection
In der gleichen Talk wird das Faktum angesprochen, dass, wenn der Code Benutzereingaben verwendet, um die IAM-Richtlinien zu generieren, Wildcards (und andere wie "." oder spezifische Strings) dort enthalten sein können, mit dem Ziel, Einschränkungen zu umgehen.
Öffentliches URL-Template
Konto-ID von öffentlicher API-Gateway-URL abrufen
Genau wie bei S3-Buckets, Data Exchange und Lambda-URLs-Gateways ist es möglich, die Konto-ID eines Kontos zu finden, indem man den aws:ResourceAccount
Policy Condition Key von einer öffentlichen API-Gateway-URL ausnutzt. Dies geschieht, indem man die Konto-ID Zeichen für Zeichen findet und Wildcards im aws:ResourceAccount
-Abschnitt der Richtlinie ausnutzt.
Diese Technik ermöglicht es auch, Werte von Tags abzurufen, wenn man den Tag-Schlüssel kennt (es gibt einige standardmäßige interessante).
Weitere Informationen finden Sie in der originalen Forschung und dem Tool conditional-love, um diese Ausnutzung zu automatisieren.
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Last updated