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 Web

Spé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

☁️Cloud

Services

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