AWS - API Gateway Unauthenticated Enum

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

API Invoke bypass

Gemäß dem Vortrag Angriffsvektoren für APIs unter Verwendung von AWS API Gateway Lambda-Autorisierungen - Alexandre & Leonardo können Lambda-Autorisierungen unter Verwendung der IAM-Syntax konfiguriert werden, um Berechtigungen zum Aufrufen von API-Endpunkten zu erteilen. Dies ist aus den Dokumenten entnommen:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Permission",
"Action": [
"execute-api:Execution-operation"
],
"Resource": [
"arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/Resource-path"
]
}
]
}

Das Problem bei dieser Methode, Berechtigungen zum Aufrufen von Endpunkten zu erteilen, ist, dass das "*" für "beliebig" steht und es keine Unterstützung für Regex-Syntax mehr gibt.

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 Zugriff auf andere Routen wie z.B. /admin/dashboard/createAdmin.

Beachten Sie, dass das "*" sich nicht mit Schrägstrichen aufhört zu erweitern, daher könnte es, wenn Sie z.B. "*" in api-id verwenden, auch "beliebige Stage" oder "beliebige Methode" anzeigen, solange der endgültige Regex noch gültig ist. So kann arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/* eine POST-Anfrage an die Teststage zum Pfad /prod/GET/dashboard/admin validieren.

Sie sollten immer klar haben, auf was Sie Zugriff gewähren möchten, und dann überprüfen, ob mit den erteilten Berechtigungen andere Szenarien möglich sind.

Für weitere Informationen, neben der Dokumentation, finden Sie Code zur Implementierung von Autorisierungen in diesem offiziellen aws github.

IAM-Richtlinieninjektion

In demselben Vortrag wird darauf hingewiesen, dass, wenn der Code Benutzereingaben zur Generierung der IAM-Richtlinien verwendet, Platzhalter (und andere wie "." oder spezifische Zeichenfolgen) mit dem Ziel, Einschränkungen zu umgehen, darin enthalten sein können.

Öffentliche URL-Vorlage

https://{random_id}.execute-api.{region}.amazonaws.com/{user_provided}

Account ID aus öffentlicher API Gateway-URL erhalten

Genau wie bei S3-Buckets, Data Exchange und Lambda-URL-Gateways ist es möglich, die Kontonummer eines Kontos zu finden, indem der aws:ResourceAccount Policy Condition Key aus einer öffentlichen API Gateway-URL missbraucht wird. Dies wird erreicht, indem die Kontonummer durch Ausnutzen von Platzhaltern im aws:ResourceAccount-Abschnitt der Richtlinie Buchstabe für Buchstabe gefunden wird. Diese Technik ermöglicht es auch, Werte von Tags zu erhalten, wenn Sie den Tag-Schlüssel kennen (es gibt einige standardmäßig interessante).

Weitere Informationen finden Sie in der Originalforschung und im Tool conditional-love zur Automatisierung dieser Ausnutzung.

Erlernen Sie AWS-Hacking von Null auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated