# Les nuages menaçants 1/3

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

**Description:**

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2Fc9jqMboV3hLINwx5vlGl%2Fenonce.png?alt=media&#x26;token=efe3994e-69ee-4d8d-980f-12f7be486e33" alt=""><figcaption></figcaption></figure>

SSH : *`ssh 404ctf@challenges.404ctf.fr -p 30905`* / Mdp : *4GqWrNkNuN*

**Solution:**

Pour ce challenge, nous avons accès à une machine virtuelle avec un service cloud qui tourne dessus.\
Etant donné que dans le chall de cloud précédent, nous avons utilisé Kubernetes, je me dis qu'il s'agit du même service cloud utilisé ici.

Pour commencer nous allons vérifier l'historique bash pour voir s'il n'y a pas quelque chose qui peut nous mettre sur une piste plus précise :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FgWEa9lXCxX38qb8h3yaJ%2Fimage.png?alt=media&#x26;token=a54ef9dd-eabb-4c4e-934e-918ac814565e" alt="" width="197"><figcaption></figcaption></figure>

Bon bah pas cette fois finalement...\
Donc nous allons devoir faire davantage de recherches sur Kubernetes pour pouvoir trouver quelque chose d'intéressant. Mais étant donné que nous sommes en CTF, nous n'allons pas nous perdre dans des docs trop longues. Nous allons donc directement chercher sur HackTricks pour trouver ce qu'il y a d'intéressant :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FsxahFFA7XQRli4zUaRzV%2Fimage.png?alt=media&#x26;token=6d6be1da-9bb8-4a03-bd7c-a0b617f4fa2c" alt="" width="563"><figcaption></figcaption></figure>

Rien que le [deuxième résultat](https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security/kubernetes-enumeration) a l'air très intéressant. Nous pouvons aller voir ce qu'il propose.

Bon je ne vais pas tout détailler ici sur ce que nous pouvons trouver car c'est très long mais simplement les étapes utiles pour la suite.

En parcourant la page, j'ai donc trouvé des choses intéressantes. Par exemple nous pouvons lister le nom des [namespaces](https://cloud.hacktricks.xyz/pentesting-cloud/kubernetes-security/kubernetes-enumeration#get-namespaces) existants pour ensuite en extraire les secrets et récupérer éventuellement des infos intéressantes.

Passons à la pratique :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FS90vDTniC761emidZAEh%2Fimage.png?alt=media&#x26;token=b2b86a4b-44d1-4a95-8ca2-92a10d870721" alt="" width="334"><figcaption></figcaption></figure>

Ah... Bon alors ici nous avions le choix entre l'option kubectl et API :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2F2oFZzn7vrk1y26lZYpcG%2Fimage.png?alt=media&#x26;token=8e8877fd-3d2e-449c-8b18-defa4e699559" alt="" width="563"><figcaption></figcaption></figure>

Et l'option kubectl ne fonctionne pas. Alors il faut donc passer à l'option API :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FWXo8IVsOvBf6dcqBxdaU%2Fimage.png?alt=media&#x26;token=469cbeec-5a3e-4fa6-8c95-a51ad79c07d7" alt="" width="563"><figcaption></figcaption></figure>

Mais pour faire fonctionner cette option, il faut remonter plus haut sur la page pour définir *`$APISERVER`*, *`kurl`* et d'autres infos nécessaires : <br>

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FT4fouyhX9uGtLNsHom6i%2Fimage.png?alt=media&#x26;token=799de88c-244d-422c-abed-8c82e0c73818" alt="" width="563"><figcaption></figcaption></figure>

Avec ces commandes, nous allons pouvoir déclarer toutes variables d'environnement nécessaires pour la suite et créer l'alias *`kurl`*.

Maintenant que nous avons tout définis, nous allons pouvoir récupérer tout ce que nous voulions précédemment. Ici nous listons les namespaces existants :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FMGIbQkCc6v0viRDpn9Gb%2Fstep1.png?alt=media&#x26;token=8b4023d3-f9a2-4d1b-9c86-a657a0cef34b" alt="" width="563"><figcaption></figcaption></figure>

Nous voyons qu'à la fin un namespace *404ctf* est bien présent. Nous allons donc continuer à investiguer sur ce dernier et lister ses secrets :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FOEcHX4Q6YpGm3pEQPeKt%2Fstep2.png?alt=media&#x26;token=8d92509a-9e50-477d-a046-99414d085fa0" alt="" width="563"><figcaption></figcaption></figure>

En regardant les résultats, nous voyons un élément *flag* en b64 : *`NDA0Q1RGe0F0dGVudGlvbl9hdXhfc2VjcmV0cyF9`* ce qui donne le flag entier avec cet [outil](https://www.base64decode.org/).

Nous pourrions nous arrêter ici, mais un peu plus loin, nous trouvons des credentials qui peuvent être intéressantes pour la suite :&#x20;

<figure><img src="https://4219205392-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fybn4btwQnvitOl9uXz9p%2Fuploads%2FyYoVFindgnCB1nDtHeEd%2Fimage.png?alt=media&#x26;token=fa58948d-29a8-41d0-aa05-d3ea0b1c7bbe" alt="" width="563"><figcaption></figcaption></figure>

Les credentials sont également en b64 :&#x20;

* User : *`cHJvdXN0`* <=> proust
* Password : *`bGVzX251YWdlcw==`* <=> les\_nuages

Gardons-les de côté, ils nous serviront forcément à un moment.

<details>

<summary>🚩 FLAG</summary>

```
404CTF{Attention_aux_secrets!}
```

</details>
