# DO - Spaces

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

## Informations de base

DigitalOcean Spaces sont des **services de stockage d'objets**. Ils permettent aux utilisateurs de **stocker et de servir de grandes quantités de données**, telles que des images et d'autres fichiers, de manière évolutive et rentable. Les Spaces peuvent être accessibles via le panneau de contrôle DigitalOcean, ou en utilisant l'API DigitalOcean, et sont intégrés avec d'autres services DigitalOcean tels que les Droplets (serveurs privés virtuels) et les Load Balancers.

### Accès

Les Spaces peuvent être **publics** (tout le monde peut y accéder depuis Internet) ou **privés** (seuls les utilisateurs autorisés). Pour accéder aux fichiers d'un espace privé en dehors du Panneau de contrôle, nous devons générer une **clé d'accès** et un **secret**. Ce sont une paire de jetons aléatoires qui servent de **nom d'utilisateur** et de **mot de passe** pour accorder l'accès à votre Space.

Une **URL d'un espace** ressemble à ceci : **`https://uniqbucketname.fra1.digitaloceanspaces.com/`**\
Notez la **région** comme **sous-domaine**.

Même si le **space** est **public**, les **fichiers** **à l'intérieur** peuvent être **privés** (vous ne pourrez y accéder qu'avec des identifiants).

Cependant, **même** si le fichier est **privé**, depuis la console, il est possible de partager un fichier avec un lien tel que `https://fra1.digitaloceanspaces.com/uniqbucketname/filename?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=DO00PL3RA373GBV4TRF7%2F20221213%2Ffra1%2Fs3%2Faws4_request&X-Amz-Date=20221213T121017Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=6a183dbc42453a8d30d7cd2068b66aeb9ebc066123629d44a8108115def975bc` pour une période de temps :

<figure><img src="../../../images/image (277).png" alt=""><figcaption></figcaption></figure>

### Énumération
```bash
# Unauthenticated
## Note how the region is specified in the endpoint
aws s3 ls --endpoint=https://fra1.digitaloceanspaces.com --no-sign-request s3://uniqbucketname

# Authenticated
## Configure spaces keys as AWS credentials
aws configure
AWS Access Key ID [None]: <spaces_key>
AWS Secret Access Key [None]: <Secret>
Default region name [None]:
Default output format [None]:

## List all buckets in a region
aws s3 ls --endpoint=https://fra1.digitaloceanspaces.com

## List files inside a bucket
aws s3 ls --endpoint=https://fra1.digitaloceanspaces.com s3://uniqbucketname

## It's also possible to generate authorized access to buckets from the API
```
{{#include ../../../banners/hacktricks-training.md}}
