# Le Cluster de Madame Bovary

**Catégorie:** Cloud - **Difficulté:** Facile

Fichier : [Google Drive - ](https://drive.google.com/drive/folders/1WOU7b58-nxiUyv5AEPDkcKifNnuQk6Vm?usp=share_link)[Le Cluster de Madame Bovary](https://drive.google.com/drive/folders/1YD944ooqmz2J8wGfADQnwzGBF1TmIQcW?usp=sharing)

**Description:**

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FcgobjpQj5ubGHQcnySyk%2Fenonce.png?alt=media&#x26;token=27434970-1950-4087-a593-1e7b97632bde" alt=""><figcaption></figcaption></figure>

**Solution:**

Pour ce challenge, il faut utiliser une machine virtuelle VirtualBox fournie. Un cluster Kubernetes y est installé. N'y connaissant pas grand chose, j'ai utilisé [cette cheatsheet](https://kubernetes.io/docs/reference/kubectl/cheatsheet/).

On va commencer à lister les différents pods sur la machine en utilisant kubectl :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FL57u5JzPmUR5cYsBOmHb%2Fimage.png?alt=media&#x26;token=22edee5b-5689-48f3-9250-0e706cc09dc8" alt="" width="313"><figcaption></figcaption></figure>

Il y a donc un pod nommé *agent*. Nous allons récupérer des infos sur ce dernier : <br>

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FnlZi9DCKrCc7CsHC69ab%2FdescribePod.png?alt=media&#x26;token=027e45e6-3990-4392-a437-d39ae7de5954" alt="" width="563"><figcaption></figcaption></figure>

Nous voyons que l'image [404ctf/agent](https://hub.docker.com/r/404ctf/agent) disponible sur le Docker Hub a été utilisée.\
En regardant l'entrypoint, nous voyons que pour lancer le pod, il suffit d'exécuter la commande `/opt/agent` une fois connecté au shell du pod.

Pour se connecter au shell, il faut utiliser cette commande :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FBJSWFiukym9E1sua1nCS%2Fimage.png?alt=media&#x26;token=45784357-a7e4-4a58-a3c7-7a139f6579fd" alt="" width="446"><figcaption></figcaption></figure>

Maintenant que nous sommes connecté au pod, nous allons pouvoir exécuter la commande pour déployer le container :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2F1wxrf4mo0DgG7t1KbcwC%2Fimage.png?alt=media&#x26;token=9e04b2f6-48c3-4909-aeef-772fd03f771f" alt="" width="302"><figcaption></figcaption></figure>

Il va donc falloir enlever cette erreur. Pour cela, il suffit de faire ce qui nous est demandé, c'est à dire deployer le container 404ctf/the-container en suivant plusieurs étapes :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FHMD8ETI7uNnqOhfFgt09%2Fimage.png?alt=media&#x26;token=c237ec58-68a3-4661-a733-aad324c0305a" alt="" width="563"><figcaption></figcaption></figure>

Une fois cela fait, nous pouvons nous y connecter au shell de nouveau pod. Maintenant nous allons tenter de relancer le container agent : <br>

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FIxWPSBeKzWsqmwsXjOnV%2Fimage.png?alt=media&#x26;token=36bc7b98-cf46-4faf-a1f0-119e148ddde8" alt="" width="269"><figcaption></figcaption></figure>

Maintenant nous allons devoir régler tous les petits soucis pour pouvoir tout lancer correctement :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FxoqS0GkyokMceSbyxgCT%2Fimage.png?alt=media&#x26;token=f59ee19a-8827-46c5-9aad-c9120a44f16f" alt="" width="405"><figcaption></figcaption></figure>

Une fois toutes les phases nécessaires terminées, nous pouvons récupérer la première partie du flag.\
Maintenant nous allons refaire exactement les même étapes avec le nouveau container web-server&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FmaCenPS91mmv3S5YH7QC%2Fcommands.png?alt=media&#x26;token=c6c0ae4e-e1ca-40d5-a6fc-b756c58fd8eb" alt="" width="563"><figcaption></figcaption></figure>

Maintenant que nous sommes connecté au shell du container, nous allons pouvoir l'explorer :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2F6jaNjVFiXMHJL1RbszvU%2Fimage.png?alt=media&#x26;token=69df858f-555f-476f-9b8d-10af1430c417" alt="" width="392"><figcaption></figcaption></figure>

Nous avons plusieurs fichiers à exploiter mais le plus intéressant est le fichier *web-server.go* :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2Fq2UcpPy0R20Vy7YnuQkT%2Fimage.png?alt=media&#x26;token=f42e7eae-abc9-4762-9566-664451e6f391" alt="" width="563"><figcaption></figcaption></figure>

Nous avons donc toutes les parties nécessaires pour valider ce challenge.

<details>

<summary>🚩 FLAG</summary>

```
404CTF{A_la_decouverte_de_k8s}
```

</details>
