flagSigned HackTheBox (Intermediate)

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.95 ( https://nmap.org ) at 2025-10-12 10:07 EDT
Nmap scan report for 10.10.11.90
Host is up (0.032s latency).

PORT     STATE SERVICE  VERSION
1433/tcp open  ms-sql-s Microsoft SQL Server 2022 16.00.1000.00; RTM
|_ssl-date: 2025-10-12T14:07:57+00:00; 0s from scanner time.
| ms-sql-info: 
|   10.10.11.90:1433: 
|     Version: 
|       name: Microsoft SQL Server 2022 RTM
|       number: 16.00.1000.00
|       Product: Microsoft SQL Server 2022
|       Service pack level: RTM
|       Post-SP patches applied: false
|_    TCP port: 1433
| ms-sql-ntlm-info: 
|   10.10.11.90:1433: 
|     Target_Name: SIGNED
|     NetBIOS_Domain_Name: SIGNED
|     NetBIOS_Computer_Name: DC01
|     DNS_Domain_Name: SIGNED.HTB
|     DNS_Computer_Name: DC01.SIGNED.HTB
|     DNS_Tree_Name: SIGNED.HTB
|_    Product_Version: 10.0.17763
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2025-10-12T10:46:35
|_Not valid after:  2055-10-12T10:46:35

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

Lo interesante que vemos aqui, es que solo hay un puerto de un servidor de ms-sql, si nos vamos a la informacion de la maquina veremos que como en un pentesting real nos dejan unas credenciales para el acceso por ms-sql.

Vamos añadir el dominio que vemos en el reporte de nmap en nuestro archivo hosts quedando algo asi:

Lo guardamos y si probamos a conectarnos por dicho puerto...

Info:

Veremos que estaremos dentro, por lo que vamos a realizar un poco de fuzzing a ver que vemos.

Despues de un rato se me ocurrio probar a capturar el hash NTLMv2 con Responder forzando desde el mssqlclient una conexion a nuestra maquina para que se autentique contra ella y asi poder obtener el hash NTLMv2 del servicio de sql.

Info:

Ahora estando a la escucha vamos a ejecutar el siguiente comando para intentar listar el recurso compartido de nuestra maquina share que no existe para capturar el hash.

Ahora si nos vamos donde tenemos el responder, veremos lo siguiente:

Veremos que ha funcionado, por lo que vamos a probar a intentar crackearlo de esta forma:

hash.NTLMv2

Ahora si probamos con john a crackearlo...

Info:

Veremos que ha funcionado y obtendremos la contraseña de dicho hash, ahora lo que podemos hacer con esto es un ataque de Silver Ticket, pero antes para realizarlo requerimos de obtener la clave RC4 (El hash NT) de la contraseña en plano que obtuvimos, por lo que vamos a obtenerla con este comando:

Info:

Ahora teniendo el hash NT tendremos que obtener el SID del dominio pero en concreto del grupo IT.

Escalate user mssqlsvc (Metasploit)

Si probamos por ejemplo a entrar con las credenciales proporcionadas de mssqlsvc:

Info:

Veremos que funciona, por lo que desde aqui vamos hacer lo siguiente, listaremos los grupos que nos interesan desde el sql.

Info:

Veremos que efectivamente el que mas nos interesa es el de IT.

Desde la consola de SQL ejecutaremos lo siguiente:

Grupo IT (Obtener SID Cifrado)

Info:

Grupo IT (Obtener SID Cifrado)

Info:

Si revisamos los SID veremos que el del grupo IT tiene el RID 1105 y el de nuestro usuario tiene 1103, pero el SID en si del principio es el mismo, por lo que solamente tendremos que cambiar el RID para ser del grupo IT en principio.

Esto estara codificado, por lo que tendremos que decodificarlo de esta forma:

Grupo IT (SID)

Info:

Usuario mssqlsvc (SID)

Info:

Teniendolo en texto plano, vamos a solicitar un silver ticket de esta forma para podernos autenticar con el.

Info:

Veremos que ha funcionado, ahora exportaremos la variable para que este en una variable automaticamente:

Y seguidamente la utilizaremos para autenticarnos en el servicio de sql, pero si tuvieramos problemas puede ser por la zona horaria del servidor de dominio, por lo que tendremos que utilizar un pwnbox de HTB directamente para que funcione.

===============================================================

CAMBIAR ZONA HORARIA

O bien con este otro comando:

===============================================================

Info:

Ahora si porbamos a ver si somos del grupo sysadmin veremos lo siguiente:

Info:

Vemos que efectivamente si lo somos, por lo que vamos a realizar un poco de fuzzing a ver que podemos hacer con dicho grupo.

Si vemos a ver si el comando xp_cmdshell estuviera accesible desde este grupo y usuario, veremos lo siguiente:

Info:

Veremos que lo tenemos activo y funcional desde esta sesion, vamos a probar a ejecutar algo sencillo a ver si realmente funciona:

Info:

Veremos que esta funcionando, por lo que vamos a realizar una reverse shell de esta forma con metasploit.

Info:

Con este payload ya generado, vamos a ponernos a la escucha desde metasploit:

Ahora si ejecutamos el siguiente comando en el sql:

Ahora si volvemos a donde tenemos la escucha en metasploit donde el modulo de handler veremos lo siguiente:

Veremos que ha funcionado, por lo que leeremos la flag del usuario.

user.txt

Escalate Privileges

Ya que estamos en la maquina, vamos aprovechar a visualizar los SID de los grupos privilegiados por ejemplo Domain Admins y Enterprise Admins, para obtener un silver ticket de dichos grupo y en vez de pertenecer al grupo IT = sysadmin vamos a obtener dichos grupos con el RID haciendo lo mismo de antes, pero cambiando algunas cosas, vamos a probar lo siguiente desde la shell.

Info:

Veremos los SID de dichos grupos y tambien vemos que lo del principio son iguales que los anteriores, por lo que vamos a montarnos el comando de esta forma añadiendo los RIDs privilegiados de dichos grupos que hemos visto:

Info:

Veremos que ha funcionado, vamos a probar a conectarnos con dicho silver ticket, entrando deberiamos de pertenecer al dichos grupos privilegiados.

Info:

Estando dentro y teniendo una sesion privilegiada con los grupos, vamos a probar a leer el PowerShell, pero antes hay que habilitar una serie de opciones para que funcione:

Ahora con esto configurado, vamos a probar a leer el historial de comandos del Administrador en PowerShell que ha ido ejecutando.

Info:

De toda esta informacion que vemos veremos una contraseña que ha sido utilizada en texto plano llamada Th1s889Rabb!t que al parecer pertenece al administrador.

Como no tenemos un puerto WinRM vamos a obtener de nuevo una shell por metasploit con el payload de antes que generamos con msfvenom y desde la consola de sql enviaremos el comando estando a la escucha desde metasploit.

Ahora si volvemos a donde tenemos la escucha del multi/handler en metasploit veremos lo siguiente:

Veremos que ha funcionado de nuevo con esta otra sesion, ahora escribiremos shell para obtener una shell de interpreter de PowerShell de la maquina victima, para no estar con el meterpreter.

Pero antes vamos a descargarnos el RunasCs.exe para que esto pueda funcionar ya que estamos en una shell sin entorno grafico.

URL = Download RunasCs.exe ZIP GitHubarrow-up-right

Una vez descargado el .zip del RunasCs vamos a descomprimirlo.

Info:

Ahora desde el meterpreter vamos a descargarnos el RunasCs.exe llendo al directorio Downloads de nuestra carpeta de usuario para que podamos utilizarlo.

Info:

Ahora si desde una shell de Windows poniendo shell en el meterpreter...

Pero antes nos pondremos a la escucha:

Ahora si enviamos este comando...

Info:

Ahora si volvemos a donde tenemos la escucha, veremos lo siguiente:

Veremos que ha funcionado, por lo que leeremos la flag del usuario administrador.

root.txt

Last updated