AWS - API Gateway 認証なし列挙

Reading time: 6 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

API 呼び出しバイパス

Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardoの講演によると、Lambda AuthorizersはIAM構文を使用してAPIエンドポイントを呼び出す権限を与えるように構成できます。これはドキュメントから取られています:

json
{
"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"
]
}
]
}

このエンドポイントを呼び出すための権限を与える方法の問題は、"*"が「何でも」を意味し正規表現の構文がサポートされていないことです。

いくつかの例:

  • arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*のようなルールは、各ユーザーに/dashboard/user/{username}へのアクセスを与えるために使用されますが、例えば/admin/dashboard/createAdminのような他のルートへのアクセスも与えてしまいます。

warning

"*"はスラッシュでの拡張を止めないことに注意してください。したがって、例えばapi-idで"*"を使用すると、最終的な正規表現が有効である限り、「任意のステージ」や「任意のメソッド」を示す可能性もあります。
したがって、arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
は、例えば/prod/GET/dashboard/adminへのパスに対してテストステージへのポストリクエストを検証できます。

アクセスを許可したいものを常に明確にし、与えられた権限で他のシナリオが可能かどうかを確認する必要があります。

詳細については、docsの他に、この公式aws githubでオーソライザーを実装するためのコードを見つけることができます。

IAMポリシーインジェクション

同じtalkでは、コードがユーザー入力を使用してIAMポリシーを生成している場合、ワイルドカード(および"."や特定の文字列など)が含まれる可能性があり、制限を回避することを目的としていることが明らかにされています。

公開URLテンプレート

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

公開API Gateway URLからアカウントIDを取得する

S3バケット、Data Exchange、Lambda URLゲートウェイと同様に、公開API Gateway URLから**aws:ResourceAccount** ポリシー条件キーを悪用してアカウントのアカウントIDを見つけることが可能です。これは、ポリシーの**aws:ResourceAccountセクションでワイルドカードを悪用して、一度に1文字ずつアカウントIDを見つけることによって行われます。
この技術を使用すると、タグキーがわかっている場合に
タグの値**を取得することもできます(いくつかのデフォルトの興味深いものがあります)。

詳細については、元の研究と、この悪用を自動化するためのツールconditional-loveを参照してください。

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする