AWS - API Gateway Unauthenticated Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
According to the talk Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo、Lambda AuthorizersはIAM構文を使用してAPIエンドポイントを呼び出すための権限を与えるように構成できます。これはドキュメントからの引用です:
このエンドポイントを呼び出すための権限を与える方法の問題は、"*"が「何でも」を意味し、正規表現の構文がサポートされていないことです。
いくつかの例:
各ユーザーに/dashboard/user/{username}
へのアクセスを与えるためのルールarn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*
は、例えば/admin/dashboard/createAdmin
のような他のルートへのアクセスも与えてしまいます。
"*"はスラッシュでの拡張を止めないことに注意してください。したがって、例えばapi-idで"*"を使用すると、最終的な正規表現が有効である限り、「任意のステージ」や「任意のメソッド」を示す可能性があります。
したがって、arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
は、例えば/prod/GET/dashboard/admin
へのパスに対してテストステージへのポストリクエストを検証できます。
アクセスを許可したいものを常に明確にし、与えられた権限で他のシナリオが可能かどうかを確認する必要があります。
詳細については、docsの他に、この公式aws githubでオーソライザーを実装するためのコードを見つけることができます。
同じtalkでは、コードがユーザー入力を使用してIAMポリシーを生成している場合、ワイルドカード(および"."や特定の文字列など)が含まれる可能性があり、制限を回避することを目的としていることが明らかにされています。
S3バケット、Data Exchange、Lambda URLゲートウェイと同様に、公開API Gateway URLから**aws:ResourceAccount
** ポリシー条件キーを悪用してアカウントのアカウントIDを見つけることが可能です。これは、ポリシーの**aws:ResourceAccount
セクションでワイルドカードを悪用して、一文字ずつアカウントIDを見つけることによって行われます。
この技術を使用すると、タグキーがわかっている場合にタグの値**を取得することもできます(いくつかのデフォルトの興味深いものがあります)。
詳細については、元の研究と、この悪用を自動化するためのツールconditional-loveを参照してください。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)