AWS - API Gateway Unauthenticated Enum
API Invoke Umgehung
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 erteilen. Dies ist aus den Dokumenten entnommen:
Das Problem bei dieser Art, Berechtigungen zum Aufrufen von Endpunkten zu erteilen, ist, dass das "*" "alles" impliziert und es keine weitere Regex-Syntax unterstützt.
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 beispielsweise auch Zugriff auf andere Routen wie/admin/dashboard/createAdmin
.
Beachten Sie, dass "*" nicht mit Schrägstrichen aufhört zu expandieren, daher könnte "*" im api-id beispielsweise auch "jede Stufe" oder "jede Methode" bedeuten, solange der endgültige Regex noch 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 den Zugriff erlauben möchten, und dann überprüfen, ob andere Szenarien mit den gewährten Berechtigungen möglich sind.
Für weitere Informationen, abgesehen von den Dokumentationen, können Sie Code zur Implementierung von Authorizern in diesem offiziellen aws GitHub finden.
IAM Policy Injection
In dem gleichen Vortrag wird aufgezeigt, dass, wenn der Code Benutzereingaben verwendet, um IAM-Richtlinien zu generieren, Platzhalter (und andere wie "." oder spezifische Zeichenfolgen) dort eingefügt werden können, um Einschränkungen zu umgehen.
Public URL template
Account-ID von öffentlicher API Gateway URL abrufen
Genau wie bei S3-Buckets, Data Exchange und Lambda URLs Gateways ist es möglich, die Account-ID eines Kontos zu finden, indem man den aws:ResourceAccount
Policy Condition Key von einer öffentlichen API Gateway URL missbraucht. Dies geschieht, indem man die Account-ID Zeichen für Zeichen findet und dabei Wildcards im aws:ResourceAccount
Abschnitt der Richtlinie ausnutzt.
Diese Technik ermöglicht es auch, Werte von Tags zu erhalten, wenn man den Tag-Schlüssel kennt (es gibt einige interessante Standardwerte).
Weitere Informationen finden Sie in der Originalforschung und dem Tool conditional-love, um diese Ausnutzung zu automatisieren.
Last updated