AWS - IAM & STS Unauthenticated Enum
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
この技術はもう機能しません。ロールが存在するかどうかにかかわらず、常にこのエラーが表示されます:
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::947247140022:user/testenv is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::429217632764:role/account-balanceasdas
これを実行してテストできます:
aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example
必要な権限なしにロールを引き受けようとすると、AWSエラーメッセージが表示されます。たとえば、無許可の場合、AWSは次のように返すことがあります:
このメッセージはロールの存在を確認しますが、そのロールの引き受けポリシーがあなたの引き受けを許可していないことを示しています。対照的に、存在しないロールを引き受けようとすると異なるエラーが発生します:
興味深いことに、既存のロールと存在しないロールを区別するこの方法は、異なるAWSアカウント間でも適用可能です。有効なAWSアカウントIDとターゲットワードリストを使用することで、アカウント内に存在するロールを列挙することができ、固有の制限に直面することはありません。
このスクリプトを使用して潜在的なプリンシパルを列挙することができます。
IAMロールの信頼ポリシーを構成または更新することは、そのロールを引き受けることが許可されているAWSリソースまたはサービスを定義し、一時的な資格情報を取得することを含みます。ポリシー内で指定されたリソースが存在する場合、信頼ポリシーは正常に保存されます。しかし、リソースが存在しない場合、エラーが生成され、無効なプリンシパルが提供されたことを示します。
そのリソースでは、クロスアカウントロールまたはユーザーを指定することができます:
arn:aws:iam::acc_id:role/role_name
arn:aws:iam::acc_id:user/user_name
これはポリシーの例です:
それは、存在しないロールを使用した場合に見つかるエラーです。ロールが存在する場合、ポリシーはエラーなしで保存されます。(エラーは更新用ですが、作成時にも機能します)
You can automate this process with https://github.com/carlospolop/aws_tools
bash unauth_iam.sh -t user -i 316584767888 -r TestRole -w ./unauth_wordlist.txt
Our using Pacu:
run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt
run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt
The admin
role used in the example is a role in your account to by impersonated by pacu to create the policies it needs to create for the enumeration
役割が不適切に構成されており、誰でもそれを引き受けることができる場合:
攻撃者はそれを仮定することができます。
あなたが AWS 内の ロール にアクセスしている Github Actions ワークフロー を読むことに成功したと想像してください。 この信頼は、次の 信頼ポリシー を持つロールへのアクセスを与えるかもしれません:
この信頼ポリシーは正しいかもしれませんが、より多くの条件が欠けているため、信頼しないべきです。 これは、前のロールがGithub Actionsの誰でも引き受けられるからです!条件には、組織名、リポジトリ名、環境、ブランチなどの他の要素も指定する必要があります...
もう一つの潜在的な誤設定は、次のような条件を追加することです:
注意してください、コロン (:) の前の ワイルドカード (*)。org_name1 のような組織を作成し、Github Action から ロールを引き受ける ことができます。
AWS ハッキングを学び、練習する:HackTricks Training AWS Red Team Expert (ARTE) GCP ハッキングを学び、練習する:HackTricks Training GCP Red Team Expert (GRTE)