AWS
Amazon Web Services
A savoir avant d'initier un pentest sur des infrastructure AWS
AWS autorise ses clients à faire des pentests sans leur accord sous conditions de ne pas effectuer d'attaque touchant au DNS (port 53) et de ne pas tenter de DoS.
Pour en savoir plus: https://aws.amazon.com/fr/security/penetration-testing/
Identifier la surface d'attaque
La première étape est d'identifier la surface d'attaque, cette étape doit normalement être grandement facilité par les informations qui sont fournies par le client lors de la réunion d'initialisation.
Dans un scénario idéal, le client est en capacité de nous dire quels services sont utilisés par l'application, voir de fournir un schéma d'infrastructure complet.
Si ce n'est pas possible alors il est nécessaire de récupérer ces informations soi-même.
Il faut alors identifier:
Les services AWS utilisés (EC2, S3, Lambdas, DynamoDB...)
Les éléments qui sont accessibles publiquement (Compartiments AmazonS3 exposés ?)
Combien de rôles y a-t-il et quels sont leurs utilités.
Les permissions IAM.
Ce qui est géré par AWS vs par le client.
...
Et pour être le plus précis possible, identifier les third-party (exp: librairies des Lambdas)
Exposition externe
Dans un second temps, il convient de suivre une première approche en boîte noir afin de vérifier ce qu'un utilisateur non authentifié est en capacité de faire sur la partie du périmètre qui est exposé publiquement.
Interface Web
Suivre la méthodologie WEB:
👣OSINT / Recon🌐Pentest WebSpécificités AWS
Vérifier si le client expose des choses sur le marketplace (peut permettre de récupérer l'accountId du client)
Bruteforcer l'accountId via l'URL de connexion AWS.
https://<accountid>.signin.aws.amazon.com
Rechercher des éléments liés au client au travers des snapshots publiques (exp: EBS snapshots) ou images AMI
Outils
☁️CloudServices
Enumeration
La section suivante de Hacktricks Cloud contient des détails sur l'enumeration de chaque service AWS.
Privesc
La section suivante de Hacktricks Cloud contient plusieurs privesc par service en fonction des droits de l'utilisateur courant.
Logging & Monitoring
Lorsque la commande print() est utilisée par une fonction Lambda, son contenu se retrouve dans CloudWatch. Si l'une de ces commande log des informations sensibles tels que des identifiants, les utilisateurs avec des droits suffisants pour naviger dans CloudWatch sont en capacité de récupérer et les réutiliser.
Misconfig et bonnes pratiques
CIS Benchmark
Outils
AWS CLI
Probablement l'outil le plus important, AWS CLI est le client en lignes de commandes universel de AWS.
Exemple d'utilisation:
$ aws sts get-caller-identity
Ressource:
AWS Consoler
AWS Consoler est un outil permettant de convertir des accès AWS CLI en accès à la console AWS.
Ressource:
AWSEnum
AWSEnum est un script d'enumeration de permissions et de ressources AWS.
Exemple d'utilisation:
$ awsenum
Ressource:
Enumerate IAM
Enumerate IAM est un script d'enumeration de permissions IAM.
Exemple d'utilisation:
$ ./enumerate-iam.py --access-key <access_key> --secret-key <secret_key>
Ressource:
Dernière mise à jour