# DO - Droplets

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

## Informazioni di base

In DigitalOcean, un "droplet" è un v**irtual private server (VPS)** che può essere utilizzato per ospitare siti web e applicazioni. Un droplet è un **pacchetto preconfigurato di risorse di calcolo**, che include una certa quantità di CPU, memoria e storage, che può essere rapidamente e facilmente distribuito sull'infrastruttura cloud di DigitalOcean.

Puoi selezionare tra **sistemi operativi comuni**, applicazioni già in esecuzione (come WordPress, cPanel, Laravel...), o persino caricare e utilizzare **le tue immagini**.

I droplet supportano **User data scripts**.

<details>

<summary>Differenza tra uno snapshot e un backup</summary>

In DigitalOcean, uno snapshot è una copia a un determinato momento del disco di un Droplet. Cattura lo stato del disco del Droplet al momento in cui è stato effettuato lo snapshot, inclusi il sistema operativo, le applicazioni installate e tutti i file e i dati sul disco.

Gli snapshot possono essere utilizzati per creare nuovi Droplet con la stessa configurazione del Droplet originale, o per ripristinare un Droplet allo stato in cui si trovava quando è stato effettuato lo snapshot. Gli snapshot sono memorizzati sul servizio di storage a oggetti di DigitalOcean e sono incrementali, il che significa che vengono memorizzate solo le modifiche dall'ultimo snapshot. Questo li rende efficienti da utilizzare e convenienti da memorizzare.

D'altra parte, un backup è una copia completa di un Droplet, inclusi il sistema operativo, le applicazioni installate, i file e i dati, così come le impostazioni e i metadati del Droplet. I backup vengono solitamente eseguiti con una pianificazione regolare e catturano l'intero stato di un Droplet in un momento specifico.

A differenza degli snapshot, i backup sono memorizzati in un formato compresso e crittografato e vengono trasferiti al di fuori dell'infrastruttura di DigitalOcean in una posizione remota per la conservazione. Questo rende i backup ideali per il disaster recovery, poiché forniscono una copia completa di un Droplet che può essere ripristinata in caso di perdita di dati o altri eventi catastrofici.

In sintesi, gli snapshot sono copie a un determinato momento del disco di un Droplet, mentre i backup sono copie complete di un Droplet, inclusi le sue impostazioni e i metadati. Gli snapshot sono memorizzati sul servizio di storage a oggetti di DigitalOcean, mentre i backup vengono trasferiti al di fuori dell'infrastruttura di DigitalOcean in una posizione remota. Sia gli snapshot che i backup possono essere utilizzati per ripristinare un Droplet, ma gli snapshot sono più efficienti da utilizzare e memorizzare, mentre i backup forniscono una soluzione di backup più completa per il disaster recovery.

</details>

### Autenticazione

Per l'autenticazione è possibile **abilitare SSH** tramite nome utente e **password** (password definita quando il droplet viene creato). Oppure **selezionare una o più delle chiavi SSH caricate**.

### Firewall

> [!CAUTION]
> Per impostazione predefinita **i droplet vengono creati SENZA UN FIREWALL** (non come in altre nuvole come AWS o GCP). Quindi, se desideri che DO protegga le porte del droplet (VM), devi **crearlo e allegarlo**.

Ulteriori informazioni in:

{{#ref}}
do-networking.md
{{#endref}}

### Enumerazione
```bash
# VMs
doctl compute droplet list # IPs will appear here
doctl compute droplet backups <droplet-id>
doctl compute droplet snapshots <droplet-id>
doctl compute droplet neighbors <droplet-id> # Get network neighbors
doctl compute droplet actions <droplet-id> # Get droplet actions

# VM interesting actions
doctl compute droplet-action password-reset <droplet-id> # New password is emailed to the user
doctl compute droplet-action enable-ipv6 <droplet-id>
doctl compute droplet-action power-on <droplet-id>
doctl compute droplet-action disable-backups <droplet-id>

# SSH
doctl compute ssh <droplet-id> # This will just run SSH
doctl compute ssh-key list
doctl compute ssh-key import <key-name> --public-key-file /path/to/key.pub

# Certificates
doctl compute certificate list

# Snapshots
doctl compute snapshot list
```
> [!CAUTION]
> **I Droplets hanno endpoint di metadata**, ma in DO **non c'è IAM** o cose come i ruoli di AWS o gli account di servizio di GCP.

### RCE

Con accesso alla console è possibile **ottenere una shell all'interno del droplet** accedendo all'URL: **`https://cloud.digitalocean.com/droplets/<droplet-id>/terminal/ui/`**

È anche possibile avviare una **console di recupero** per eseguire comandi all'interno dell'host accedendo a una console di recupero in **`https://cloud.digitalocean.com/droplets/<droplet-id>/console`** (ma in questo caso sarà necessario conoscere la password di root).

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