# AWS - Lightsail Privesc

{{#include ../../../../banners/hacktricks-training.md}}

## Lightsail

Per maggiori informazioni su Lightsail consulta:

{{#ref}}
../../aws-services/aws-lightsail-enum.md
{{#endref}}

> [!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

{{#include ../../../../banners/hacktricks-training.md}}
