
Recherche de comptes S3
Cet outil vous permet de trouver l'ID de compte auquel appartient un bucket S3.
Pour que cela fonctionne, vous devez disposer d'au moins une de ces permissions :
s3:getObject).s3:ListBucket).De plus, vous aurez besoin d'un rôle que vous pouvez assumer avec (une de) ces permissions sur le bucket que vous examinez.
Plus de contexte peut être trouvé sur le Blog Cloudar
Ce paquet est disponible sur pypi, vous pouvez par exemple utiliser l'une de ces commandes (pipx est recommandé)
pipx install s3-account-search
pip install s3-account-search
# with a bucket
s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket
# with an object
s3-account-search arn:aws:iam::123456789012:role/s3_read s3://my-bucket/path/to/object.ext
# You can also leave out the s3://
s3-account-search arn:aws:iam::123456789012:role/s3_read my-bucket
# Or start from a specified source profile
s3-account-search --profile source_profile arn:aws:iam::123456789012:role/s3_read s3://my-bucket
Il existe une condition de politique IAM s3:ResourceAccount, conçue pour donner accès à S3 dans un (ensemble de) compte(s) spécifié(s), mais qui supporte également les wildcards. En construisant les bons motifs et en observant ceux qui mènent à un Deny ou un Allow, nous pouvons déterminer l'ID de compte en le découvrant un chiffre à la fois.
0. Si notre accès est autorisé, nous savons que l'ID de compte doit commencer par 0. Si la requête est refusée, nous réessayons avec 1 comme premier chiffre. Nous continuons d'incrémenter jusqu'à ce que notre requête soit autorisée, et nous trouvons le premier chiffre.8, nous testons les IDs de compte commençant par 80, 81, 82, etc.Nous utilisons poetry pour gérer ce projet
poetry installpoetry shell (vous pouvez aussi utiliser poetry run $command)poetry publish --builds3:ResourceAccount < 500000000000
"Condition": {
"StringLike": {"s3:ResourceAccount": [
"0*", "1*", "2*", "3*", "4*",
]},
},
En pratique, cet outil devrait être suffisamment rapide dans la plupart des cas.