Comenzamos con el escaneo :):
En la parte del puerto 389 vemos el dc dc1.scrm.local, por lo que intuyo que el dominio será scrm.local y scrm.htb.
Voy a fuzzear directorios con gobuster a ver si veo algo interesante:
La web:
Pinchando en IT Services, nos aparecen las siguientes opciones:
En la parte de contacto tenemos un correo electrónico y un tutorial:
Por último, en Nueva cuenta de usuario tenemos un formulario:
Después de intentar con Burp varios ataques vía web, se me ocurre tratar de enumerar usuarios con la herramienta Kerbrute y el diccionario kerberos_enum_userlist:
Según lo que nos indica esta sección de la web, el password sería el mismo que el nombre de usuario, por lo que vamos a probar:
Creamos un fichero con los nombres de usuarios posibles:
Ya tenemos usuario y contraseña válida.
Haciendo uso de la librería de python Impacket, vamos a obtener el TGT del usuario:
Exportamos con export KRB5CCNAME=ksimpson.ccache
Usamos ahora john para crackear el ticket de usuario sqlsvc:
La password es => sqlsvc:Pegasus60
Vamos a conectarnos a smb para ver si hay algún fichero interesante:
Nos descargamos ese .pdf ya que no hay nada más que pueda interesarnos.
Ahora vamos a obtener el SSID:
Utilizo impacket-secredump -k scrm.local/ksimpson@dc1.scrm.local -no-pass -debug
Necesitamos crear un hash NTLM para las password del usuario sqlsvc.
En esta web podemos crearlo: B999A16500B87D17EC7F2E2A68778F05
De nuevo con Impacket, vamos a generar el ticket para el usuario ya con la información que necesitábamos y hemos ido consiguiendo en los últimos pasos:
Utilizo impacket-ticketer -domain scrm.local .spn MSQLSVC/dc1.scrm.local -user-id 500 Administrator -nthash HASH -domain-sid SID
Exportamos el ticket almacenado en Administrator.ccache:
Nos conectamos con Impacket-mssqlient a SQL:
Aquí encontramos unas credenciales:
Después de buscar mucha información al respecto, debido a los errores que me estaba dando, por fin consigo que se ejecuten comandos desde aquí:
Nos descargamos en nuestra máquina un netcat.exe:
Desde https://www.revshells.com/ creamos una reverseshell encodeada:
Arriba elegimos IP, Puerto y en el menú el tipo de rev.shell.
La lanzamos con xp_cmdshell =>
Y tenemos la shell:
Creamos un fichero shell.ps1 con una reverseshell dentro para pivotar al usuario miscsvc:
Si buscaís en google encontraréis varias formas de crear una shell como client: New-Object…..
Levantamos un servidor con Python:
Ejecutamos los siguientes comandos en la máquina víctima:
$SecPassword = ConvertTo-SecureString ‘ScrambledEggs9900’ -AsPlainText -Force
$Cred = New-Object System.Management.Automation.PSCredential(‘Scrm\MiscSvc’, $SecPassword)
Posteriormente ejecutamos el siguiente para realizar la reverseshell que hemos trasferido mientras tenemos a la escucha en el puerto 6666:
Y vemos como recibimos la shell correctamente y nos hacemos con la primera flag:
Vamos a pasar a la máquina víctima la herramienta Powercat.ps1. Cómo siempre iniciaremos un servidor con python y procedemos a su descarga.
En la ruta C:\Shares\IT\Apps\Sales Order Client>, tenemos los ficheros ScrambleClient.exe y ScrambleLib.dll.
Con la herramienta DNSpy debemos analizarlos hasta que enconremos una deserialización en la función UploadOrder, dentro de la cual podremos explotar dicho vector (olvidé sacar capturas de esta parte).
Podemos usar powercat.ps1 para extraer estos ficheros o subir un netcat.exe.
Con la herramienta ysoserial.exe, desde una máquina Windows, realizaremos lo siguiente:
En ese fichero guardo el resultado que luego enviaré a través de una conexión con nc.
Pongo nc IP de la máquina y el puerto 4411.
Después tecleo UPLOAD ORDER; y aquí pegamos la carga que hemos generado con ysoserial.
Ponemos un nc -lnvp 7777 (el puerto que yo puse) e iniciamos una shell:
Aquí tenemos la flag de root.txt
Espero que os haya gustado, pido disculpas por la mala calidad de algunos recortes, pero que las explicaciones hayan podido aclarar lo que se lleva a cabo.
Gracias por leerme.