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

# Compte rendu HackTheBox de Keeper

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

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

* Abuser de Request Tracker
* Fuite d'informations
* Obtention du mot de passe KeePass via un dump mémoire (é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/42acc958aeed532f2199a2b0e9af0a44af585958" alt="" width="563"><figcaption></figcaption></figure>

**Vérification de la connectivité VPN**/ Vérifier la connectivité VPN pour garantir une communication stable avec la machine cible.

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

**Recherche de ports ouverts avec Nmap : 22,80**

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

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

**Analyse des versions de ports avec Nmap :** Utilisation de Nmap pour analyser les versions des ports et extraire les informations dans le fichier « targeted » :

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

<figure><img src="/files/123756a328ecb88b49c43dd3c18a1c32f7350151" alt=""><figcaption></figcaption></figure>

### Port 80

Nous découvrons le domaine **keeper.htb** et un sous-domaine **tickets.keeper.htb**.

<figure><img src="/files/21aa76125ed071e9d321a05e77a6869ea521e1a5" alt=""><figcaption></figcaption></figure>

Nous les ajoutons au `/etc/hosts` fichier :

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

## CMS Request Tracker

En visitant **tickets.keeper.htb** nous trouvons un panneau d'administration.

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

Nous testons les identifiants par défaut de **Request Tracker**:

```plaintext
Nom d'utilisateur : root  
Mot de passe : password  
```

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

Connexion réussie !

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

Dans le **Admin → Utilisateurs** section, nous trouvons un compte utilisateur :

* Utilisateur : <Inorgaard@keeper.htb>
* Mot de passe : Welcome2023!

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

#### Connexion SSH

Nous utilisons les identifiants trouvés pour nous connecter via SSH :

```bash
ssh Inorgaard@keeper.htb
```

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

### Drapeau user.txt :)

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

## Élévation de privilèges

### **Dump de la base de données KeePass**

Nous trouvons un fichier ZIP `RT30000.zip` que nous téléchargeons sur notre machine :

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

```bash
wget http://10.10.11.227:8080/RT30000.zip
```

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

Après extraction, nous obtenons :

* **KeePassDumpFull.dmp**
* **passcodes.kdbx**

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

Nous essayons d'ouvrir `passcodes.kdbx` avec KeePassXC :

```bash
keepassxc passcodes.kdbx
```

Il demande un mot de passe. Nous essayons une attaque par force brute avec **John The Ripper**, sans succès.

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

### **KeePass - analyse du dump mémoire**

{% embed url="<https://github.com/matro7sh/keepass-dump-masterkey>" %}

Nous exploitons le `.dmp` fichier avec un script Python :

```bash
python3 poc.py KeePassDumpFull.dmp
```

Cela révèle des caractères illisibles. Une recherche en ligne nous conduit à un mot de passe probable :

<figure><img src="/files/36786c21f0b69b698d01637062ea1ce783952009" alt=""><figcaption></figcaption></figure>

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

**Résultat**: bouillie rouge à la crème

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

Nous utilisons ce mot de passe pour déverrouiller KeePass, ce qui nous donne un **clé PuTTY chiffrée et mot de passe root**.

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

### Convertir la clé PuTTY au format OpenSSH

Nous devons convertir la clé PuTTY au format OpenSSH :

```bash
puttygen key.ppk -O private-openssh -o id_rsa
```

Ensuite, assurez-vous que votre clé privée possède les bonnes permissions :

```bash
chmod 600 id_rsa
```

#### **Se connecter au serveur SSH**

```bash
ssh -i id_rsa root@10.10.11.227
```

<figure><img src="/files/939f3cdd014b1aca559cdbaf49635a5d2172bbb5" alt=""><figcaption></figcaption></figure>

### Drapeau root.txt :)

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

<figure><img src="/files/5d06905c7a595406688f7039ee01a5888401fd8b" alt="" width="417"><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/keeper-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.
