Page cover

🟠EscapeTwo

En esta ocasión vamos a hacer el writeup de la máquina EscapeTwo de Hack the Box, una máquina Windows de dificultad easy/medium.

Tenemos la siguiente pista de inicio:

Como es común en las pruebas de penetración de Windows de la vida real, iniciarás el pentesting con las credenciales de la siguiente cuenta: rose / KxEPkKe6R8su

Escaneo de puertos

Tenemos un montón de puertos abiertos, lo normal en una máquina windows.

Nos encontramos que el dominio de la máquina es sequel.htb, por lo que la añadiremos al etc/hosts:

Enumeración

DNS

Encontramos que la máquina es el Domain Controller. También añadimos dc01.sequel.htb al /etc/hosts.

Usuarios

Encontramos varios usuarios dentro del sistema, pero como nos daba la pista al incio ya tenemos las credenciales para el usuario rose, por lo que nos centraremos en ese usuario.

Vamos a probar a enumerar otros posibles usuarios que no hubiera en la lista de usuarios de xatonet:

Encontramnos algún usuario más que puede ser interesante, como ca_svc y sql_svc.

Acceso por SMB

Al acceder por SMB nos encontramos un recurso compartido Accounting Department interesante:

Vamos a ver su contenido, ya que tenemos permisos de lectura.

Encontramos 2 excels interesantes, nos los descargamos con get y vamos a ver su contenido. Los archivos están corruptos por lo que necesitamos:

Ese error se produce porque los magic bytes del archivo no se corresponden con los de un xlsx:

Los archivos .xlsx tienen los siguientes magic bytes en sus primeros 4 bytes:

Vamos a modificar esto con hexedit:

Verás algo como esto al abrir el archivo:

Sustituye los primeros 4 bytes por 50 4B 03 04 y con Ctrl +X guardamos y salimos del programa.

Ahora con libreoffice ya podemos abrir el archivo sin problema:

Encontramos las credenciales de un SysAdmin!

Conexión a MSSQL

Una vez dentro de la base de datos vamos a usar la técnica de XP_CMDSHELL para ejecutar comandos. No está habilitada por defecto así que lo podemos habilitar de la siguiente manera:

Funciona! por lo que vamos a utilizar esto para crear una reverse shell.

1. Generamos payload con msfvenom

2. Preparar el payload PowerShell

El comando PowerShell a ejecutar debe ser convertido a Base64. Esto es necesario porque los comandos PowerShell codificados en Base64 son más fáciles de manejar y menos propensos a romperse debido a caracteres especiales.

3. Convertir a Base64

En Kali Linux podemos usar python para convertir el comando a Base64:

El resultado será una cadena Base64, algo como:

4. Ejecutar el comando con mssql-command-tools

Descargamos la última release y le damos permisos de ejecución:

Sustituye yourbase64here por la cadena Base64 generada.

Este comando ejecutará el PowerShell en el sistema remoto.

5. Configurar el listener en Kali

Asegúrate de que tu máquina atacante tenga un listener en el puerto configurado:

Al ejecutar el script recibimos una reverse shell con el objetivo. Estamos dentro!

Credential Hunting

En el directorio SQL2019 descubrimos archivos de configuración interesantes:

Conseguimos las credenciales de sql_svc:

User flag

Vamos a probar a conectarnos por evil-winrm con estas credenciales:

Nos da error, por lo que probaremos esa contraseña con otros usuarios de la máquina. Recordamos que teníamos los usuarios:

Probando con ryan conseguimos acceder con esa contraseña!

En el escritorio encontramos la user flag:

Escalada de privilegios

Bloodhound

Vamos a usar bloodhound-python para enumerar el sistema remotamente desde Kali Linux:

Esto nos genera bastantes archivos json:

Los vamos a comprimir en un zip para importarlo en Bloodhound con el siguiente comando:

Después con Bloodhound abrimos los archivos que nos encontramos. Puedes ver los pasos de instalación de BloodHound CE en la siguiente sección:

🩸BloodHound

Encontramos varias cosas interesantes. Ya enumeramos anteriormente los usuarios del sistema:

Destacan los usuarios:

  • CA_SVC

  • SQL_SVC (tenemos contraseña)

El usuario Ryan tiene permiso WriteOwner en CA_SVC y CA_SVC es el emisor del certificado. Entonces podemos configurar el propietario de CA_SVC como Ryan.

Modificar propietario

Para ello vamos a usar BloodyAD para modificar el propietario de un certificado en el sistema a través de un comando específico, otorgando a 'ryan' control sobre 'ca_svc'.

Obtener derechos de control

Luego, se utiliza Impacket para modificar los derechos de acceso DACLS, proporcionándole a 'ryan' control completo sobre el objetivo.

Obtener Shadow Credentials

Finalmente, Certipy se emplea para generar un certificado y un Key Credential, lo que permite autenticarse como 'ca_svc' y extraer el NT hash:

Tenemos el hash de CA_SVC! Vamos a enumerar vulnerabilidades en el host usando el hash.

ntpdate

Buscar Templates vulnerables

Ahora que sabemos qué templates hay en la CA, el siguiente paso es encontrar uno que sea vulnerable y no requiera un Subject Alternative Name (SAN) como DunderMifflinAuthentication

Buscar vulnerabilidades

Eso nos ha generado un archivo 20250507144757_Certipy.txt. Vamos a echarle un ojo:

El archivo muestra que el template analizado es vulnerable a ESC4, y el grupo SEQUEL.HTB\Cert Publishers tiene permisos peligrosos (Full Control) sobre él.

Solicitud de ticket kerberos de administrator

Eso nos crea el certificado administrator_sequel.pfx que usaremos para volcar el hash.

Obtener hash de admin con el certificado

Acceso como SYSTEM

Y conseguimos la root flag!

Última actualización

¿Te fue útil?