Catégorie :
HTBLame Writeup | HackTheBox
IP: 10.10.10.3 Hostname: lame.htb
Matrice:
Sommaire
Récapitulatif
Lame est une machine Linux très facile qui ne demande que très peu d’énumération. Grâce à un scan de ports il nous est possible de déterminer la version de samba. Avec cette version il suffit de trouver le bon exploit dans Metasploit (ou à la main via un script) et de passer directement root sur la machine.
Énumération avec nmap
La première phase et d’avoir une vue globale sur la machine et cela se fait avec un scanner de ports comme nmap
. Il s’agit du plus connu mais il en existe plein d’autres.
La commande nmap
ci-dessous utilise les options suivantes:
-A
: Pour Aggressive. Il s’agit en fait de l’addition des options-sV
pour avoir la version des services,-sC
pour exécuter le script nse correspondant au service trouvé,-O
pour activer la détection de l’OS et--traceroute
.-p-
: Permet de scanner tous les ports (TCP dans notre cas) du port 1 à 65535.--min-rate 5000
: Option intéressante puisqu’on obligenmap
à envoyer au minimum 5000 paquets par seconde. On passe donc d’un scan qui dure généralement plusieurs minutes à quelques secondes.sudo nmap -A -p- --min-rate 5000 10.10.10.3
Starting Nmap 7.80 ( https://nmap.org ) at 2022-10-03 10:41 CEST
Nmap scan report for lame.htb (10.10.10.3)
Host is up (0.030s latency).
Not shown: 65530 filtered ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 10.10.14.3
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| vsFTPd 2.3.4 - secure, fast, stable
|_End of status
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-hostkey:
| 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
|_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: OpenWrt White Russian 0.9 (Linux 2.4.30) (92%), Linux 2.6.23 (92%), Belkin N300 WAP (Linux 2.6.30) (92%), Control4 HC-300 home controller (92%), D-Link DAP-1522 WAP, or Xerox WorkCentre Pro 245 or 6556 printer (92%), Dell Integrated Remote Access Controller (iDRAC5) (92%), Dell Integrated Remote Access Controller (iDRAC6) (92%), Linksys WET54GS5 WAP, Tranzeo TR-CPQ-19f WAP, or Xerox WorkCentre Pro 265 printer (92%), Linux 2.4.21 - 2.4.31 (likely embedded) (92%), Citrix XenServer 5.5 (Linux 2.6.18) (92%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
|_ms-sql-info: ERROR: Script execution failed (use -d to debug)
|_smb-os-discovery: ERROR: Script execution failed (use -d to debug)
|_smb-security-mode: ERROR: Script execution failed (use -d to debug)
|_smb2-time: Protocol negotiation failed (SMB2)
TRACEROUTE (using port 21/tcp)
HOP RTT ADDRESS
1 30.29 ms 10.10.14.1
2 30.49 ms lame.htb (10.10.10.3)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 89.61 seconds
Ici ce qui nous intéresse c’est tout d’abord le port 21 (FTP). Avec une recherche sur la version (vsftpd 2.3.4), on découvre que celle-ci est vulnérable et qu’il y a même un module dans Metasploit: exploit/unix/ftp/vsftpd_234_backdoor
Cependant celui-ci ne fonctionne pas pour cette machine. Elle a dû être patchée.
Le port 22 (SSH) est classique sur les machines de type boot2root. On peut quand même tenter de s’y connecter avec un utilisateur aléatoire juste pour voir si on a besoin d’une clé privée. Cela peut nous donner un bon indice sur ce dont on doit se focus par la suite. Ici on peut se connecter avec un mot de passe classique. Ça ne nous aide pas plus que ça.
Viennent ensuite les deux ports 139 et 445 (SMB).
Si on fait une recherche Google sur le numéro de version: Samba smbd 3.X - 4.X
, des résultats intéressants apparaissent:
L’exploit correspond bien à notre version du service et on a un nom pour cet exploit. Heureusement pour nous, il existe dans Metasploit. On peut donc aller l’utiliser.
Exploit avec Metasploit
Si c’est la première fois que vous utilisez Metasploit et que vous ne savez pas comment faire, je peux vous suggérer d’aller faire la room correspondante sur TryHackMe.
On va aller chercher notre exploit et le sélectionner:
Il faut ensuite indiquer les bonnes options:
Il ne nous reste plus qu’à lancer notre exploit et attendre les résultats:
Il faut ensuite aller chercher les deux flags, user et root dans le répertoire home
de l’utilisateur et dans le /root
.
Exploit sans Metasploit
Pour ma part j’ai utilisé ce script. Si vous regardez le code source il n’est vraiment pas compliqué et ça peut être un bon entraînement de le refaire de votre côté.
Il faut tout d’abord installer la version Python de samba si ce n’est pas déjà fait:
python3 -m pip install pysmb
On se met d’abord en écoute sur le port désiré en utilisant netcat
(voir écran du bas).
On va ensuite lancer le script avec les informations nécessaires:
- Adresse IP de la cible
- Port de la cible
- Script à exécuter sur la cible (dans notre cas un reverse shell). Attention de bien mettre les bons arguments au niveau du reverse shell (notre IP + port en écoute).