# DO - Droplets

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

## Informations de base

Dans DigitalOcean, un "droplet" est un v**irtual private server (VPS)** qui peut être utilisé pour héberger des sites web et des applications. Un droplet est un **package préconfiguré de ressources informatiques**, incluant une certaine quantité de CPU, de mémoire et de stockage, qui peut être déployé rapidement et facilement sur l'infrastructure cloud de DigitalOcean.

Vous pouvez choisir parmi **des systèmes d'exploitation courants**, des **applications** déjà en cours d'exécution (comme WordPress, cPanel, Laravel...), ou même télécharger et utiliser **vos propres images**.

Les droplets prennent en charge **les scripts de données utilisateur**.

<details>

<summary>Différence entre un instantané et une sauvegarde</summary>

Dans DigitalOcean, un instantané est une copie à un moment donné du disque d'un Droplet. Il capture l'état du disque du Droplet au moment où l'instantané a été pris, y compris le système d'exploitation, les applications installées et tous les fichiers et données sur le disque.

Les instantanés peuvent être utilisés pour créer de nouveaux Droplets avec la même configuration que le Droplet d'origine, ou pour restaurer un Droplet à l'état dans lequel il se trouvait lorsque l'instantané a été pris. Les instantanés sont stockés sur le service de stockage d'objets de DigitalOcean, et ils sont incrémentiels, ce qui signifie que seules les modifications depuis le dernier instantané sont stockées. Cela les rend efficaces à utiliser et économiques à stocker.

D'autre part, une sauvegarde est une copie complète d'un Droplet, y compris le système d'exploitation, les applications installées, les fichiers et les données, ainsi que les paramètres et les métadonnées du Droplet. Les sauvegardes sont généralement effectuées selon un calendrier régulier, et elles capturent l'état entier d'un Droplet à un moment spécifique.

Contrairement aux instantanés, les sauvegardes sont stockées dans un format compressé et chiffré, et elles sont transférées hors de l'infrastructure de DigitalOcean vers un emplacement distant pour la conservation. Cela rend les sauvegardes idéales pour la récupération après sinistre, car elles fournissent une copie complète d'un Droplet qui peut être restaurée en cas de perte de données ou d'autres événements catastrophiques.

En résumé, les instantanés sont des copies à un moment donné du disque d'un Droplet, tandis que les sauvegardes sont des copies complètes d'un Droplet, y compris ses paramètres et métadonnées. Les instantanés sont stockés sur le service de stockage d'objets de DigitalOcean, tandis que les sauvegardes sont transférées hors de l'infrastructure de DigitalOcean vers un emplacement distant. Les instantanés et les sauvegardes peuvent être utilisés pour restaurer un Droplet, mais les instantanés sont plus efficaces à utiliser et à stocker, tandis que les sauvegardes fournissent une solution de sauvegarde plus complète pour la récupération après sinistre.

</details>

### Authentification

Pour l'authentification, il est possible d'**activer SSH** via un nom d'utilisateur et un **mot de passe** (mot de passe défini lors de la création du droplet). Ou **sélectionner une ou plusieurs des clés SSH téléchargées**.

### Pare-feu

> [!CAUTION]
> Par défaut, **les droplets sont créés SANS PARE-FEU** (pas comme dans d'autres clouds tels que AWS ou GCP). Donc, si vous voulez que DO protège les ports du droplet (VM), vous devez **le créer et l'attacher**.

Plus d'infos dans :

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

### Énumération
```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]
> **Les Droplets ont des points de terminaison de métadonnées**, mais dans DO il **n'y a pas IAM** ou des choses comme des rôles d'AWS ou des comptes de service de GCP.

### RCE

Avec l'accès à la console, il est possible de **récupérer un shell à l'intérieur du droplet** en accédant à l'URL : **`https://cloud.digitalocean.com/droplets/<droplet-id>/terminal/ui/`**

Il est également possible de lancer une **console de récupération** pour exécuter des commandes à l'intérieur de l'hôte en accédant à une console de récupération à **`https://cloud.digitalocean.com/droplets/<droplet-id>/console`** (mais dans ce cas, vous devrez connaître le mot de passe root).

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