# TheFrizz WriteUp

Se hace un escaneo de `nmap` para reconocer el entorno con los parametros:

* `-sV` Para identificar las versiones de los servicios expuestos.
    
* `-Pn` Para omitir el ping a los hosts (asumiendo que están activos).
    
* `-sC` Para utilizar los scripts por defecto de `nmap`.
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791151013/1845b91c-f7f7-46ef-9e08-4af5fed6dce7.png align="left")
    

Al acceder a [`http://frizz.htb/`](http://frizz.htb/), el navegador nos redirige automáticamente a:

[http://frizzdc.frizz.htb/home/](http://frizzdc.frizz.htb/home/)

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791161269/49b76dd0-1331-46e3-a141-cb2808ac7099.png align="left")

Al hacer clic en el botón **Staff Login**, se nos redirige a la ruta `/Gibbon-LMS/`, donde aparece un panel de login. Allí se identifica que el CMS utilizado es **Gibbon**, versión **25.0.00**.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791169084/61a70805-d29e-43ce-a37e-dbddd0cf6617.png align="left")

`Powered by [Gibbon](`[`https://gibbonedu.org`](https://gibbonedu.org)`) v25.0.00 | © [Ross Parker](`[`http://rossparker.org`](http://rossparker.org)`) 2010-2025`

---

Buscando en Google encontramos dos vulnerabilidades que afectan a esta versión:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791186576/15cc7cbe-9147-4c02-91d6-d95813ef28df.png align="left")

### CVE-2023-34598 – LFI

**Repositorio:**  
[https://github.com/maddsec/CVE-2023-34598](https://github.com/maddsec/CVE-2023-34598)

Esta vulnerabilidad permite *Local File Inclusion* en el CMS. Lo comprobamos accediendo a: [http://frizzdc.frizz.htb/Gibbon-LMS/?q=gibbon.sql](http://frizzdc.frizz.htb/Gibbon-LMS/?q=gibbon.sql)

Lo cual nos muestra el contenido del archivo `gibbon.sql`, confirmando la existencia del LFI:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791196380/975e0e6b-cbe8-4383-b791-6fa4005fadae.png align="left")

> ⚠️ Sin embargo, tras analizar más a fondo, esta vulnerabilidad resultó ser un *rabbit hole* (camino sin salida), ya que no permite escalar ni obtener acceso al sistema directamente.

---

### CVE-2023-45878 – File Upload to RCE

**Referencia:**  
[https://pentest-tools.com/vulnerabilities-exploits/gibbon-lms-v25001-file-upload-to-rce\_27078](https://pentest-tools.com/vulnerabilities-exploits/gibbon-lms-v25001-file-upload-to-rce_27078)

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791205809/2dffb7ad-5941-438d-8286-63c2a6ac16b9.png align="left")

Tras investigar un poco más, encontramos el código del exploit:

**Exploit en GitHub:**  
[https://github.com/0xyy66/CVE-2023-45878\_to\_RCE](https://github.com/0xyy66/CVE-2023-45878_to_RCE)

Este exploit automatiza una cadena de vulnerabilidades que permite escribir archivos arbitrarios y luego ejecutar código remotamente (RCE).

Al ejecutarlo, conseguimos una reverse shell con `netcat`, logrando **acceso inicial** al sistema.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791217648/af94c81b-d01b-4d78-a495-4810f914af28.png align="left")

---

En el sistema encontramos un archivo de configuración con credenciales de la base de datos:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791225597/27a5e321-44e5-404e-b9d9-bc5f7389dddd.png align="left")

`$databaseServer = '`[`localhost`](http://localhost)`';`  
`$databaseUsername = 'MrGibbonsDB';`  
`$databasePassword = 'MisterGibbs!Parrot!?1';`  
`$databaseName = 'gibbon';`

Enumeramos los usuarios del sistema:

`net user /domain`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791239215/56c219ec-e01a-499c-b43d-7c36bcaa693c.png align="left")

Nos conectamos a MySQL usando las credenciales encontradas, y listamos las bases de datos:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791247831/de1ba61e-141c-413c-9445-fd02db3297e2.png align="left")

Accedemos a las tablas de la base `gibbon`, donde encontramos un *hash* y su *salt* correspondiente al usuario `f.frizzle`.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791256791/42eac68f-11f6-4cb7-9801-69c494738790.png align="left")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791266668/5733a93a-8fae-496b-ba84-c228cd7a0ec5.png align="left")

Como `hashcat` tardaba demasiado, pedimos ayuda a ChatGPT para generar un script en Python que rompiera el hash mediante diccionario.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791277713/67ec7154-5b2e-4b93-ba1a-08f0ea2853dd.png align="left")

El script logra encontrar la contraseña:

`[+] Contraseña encontrada: Jenni_Luvs_Magic23`

Editamos el archivo de configuración de Kerberos y lo configuramos en el dominio de `FRIZZ.HTB`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791286508/012e508c-a66a-47d1-9adc-6f05de101938.png align="left")

Generamos un ticket en Kerberos con el usuario `f.frizzle`:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791300226/69b9998a-4669-4c23-8d90-291186a000f3.png align="left")

Accedemos por ssh usando Kerberos:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791308680/75ba1eb7-1646-4823-930e-9fbc64728d83.png align="left")

Obtenemos la flag de usuario:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791315774/e6d2174f-2dbe-4dd4-b903-c0d89320f5a5.png align="left")

`type user.txt`  
`05613e97dfb8c5b0880e8b29c08000b9`

---

### Escalada De Privilegios

Encontramos archivos en la papelera de reciclaje:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791327102/f5fccb14-1c8c-4eed-904f-b74ec8cf8de4.png align="left")

Los copiamos a `/Documents`:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791334588/ddc9a091-c7de-49c9-a89b-83759b6893ce.png align="left")

Vemos que se trata de una copia de seguridad (backup):

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791346300/880faf10-311f-44c0-81fc-0e94fbd08e83.png align="left")

Lo copiamos a nuestra maquina por scp:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791357737/f842e33d-f6c3-4429-b2b0-8ee6bdd14feb.png align="left")

Descomprimimos el archivo 7z:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791366665/94e55ee7-a9d9-4fd9-8b14-4b256b8ba04b.png align="left")

Encontramos un archivo `waptserver.ini` con credenciales:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791375355/00d486ae-86a9-4b9f-b6e9-225f15dbb0e1.png align="left")

Obtenemos una clave codeada en base64:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791383694/cc84068b-6e50-4145-94db-94dd03a5f3e4.png align="left")

`!suBcig@MehTed!R`

Enlistamos los usuarios en `/Users`:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791391375/23fa18a0-3e19-41cf-ac35-1e267f9a70d1.png align="left")

Usamos Kerberos nuevamente con `m.schoolbus` para generar un ticket:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791399289/b6c03be9-7a31-4832-98bb-bd6516875a34.png align="left")

Accedemos por ssh usando Kerberos:

`ssh m.schoolbus@frizz.htb -k`

Verificamos los privilegios del usuario:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791407795/b3548bab-3d69-438e-8f7b-a4821a593249.png align="left")

Vemos que tenemos los permisos:

* SeMachineAccountPrivilege
    
* SeChangeNotifyPrivilege
    
* SeIncreaseWorkingSetPrivilege
    

Descargamos SharpGPOAbuse.exe en nuestra maquina

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791415999/fb57eff5-a919-47b9-93f9-e16f9911c599.png align="left")

Levantamos un servidor web con:

`python3 -m http.server 80`

Y descargamos `SharpGPOAbuse.exe` en la maquina victima con certutil

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791424577/beb6ab81-4b54-4e85-8cd0-1970b93307c6.png align="left")

Verificamos que no somos administradores

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791432868/8d7a4b2c-3454-4e1d-a6ab-d8eebb28a1cb.png align="left")

Listamos todas las GPO:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791440714/0b9ed28d-42c1-486c-adc7-cda35420e9ed.png align="left")

Creamos un nuevo GPO malicioso "Evil-GPO" y lo vinculamos a la OU del DC, luego utilizamos SharpGPOAbuse para modificarlo e incluir al usuario M.SchoolBus dentro del grupo de Administrators de la maquina:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791448464/cf3238f8-2b90-4de6-905c-b1bf9a00897c.png align="left")

Forzamos a que se apliquen las políticas del GPO malicioso y verificamos que el usuario `M.SchoolBus` sea agregado como administrador del sistema:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791457436/b9613582-ff0b-4c4b-8262-ed2642b7d66a.png align="left")

Levantamos un servidor web con:

`python3 -m http.server 80`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791466419/adda8d5a-bff6-4780-a80b-92ac9542c4d3.png align="left")

Ponemos un listener de netcat a la escucha en el puerto 4445 y descargamos `RunasCs.exe` en la maquina victima con certutil:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791474723/4411a02f-6a94-4a08-a91c-c5ba09b39a19.png align="left")

Ejecutamos RunasCs como M.SchoolBus para recibir una shell inversa como administradores:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791484445/d2dd3e63-be30-4e15-8c0c-7dea311b70e7.png align="left")

Tras ejecutarlo, recibiremos una conexión inversa como administrador:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791492234/1de8e361-48ad-4c9c-b6c1-85d3a8e2d1ef.png align="left")

Obtenemos la flag de root:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1756791500152/8d1f233c-91df-4467-a02b-27ee76677c6a.png align="left")

`type root.txt`  
`ccb695f45b54d1804fb24ff0e66ad815`

![Nano](https://www.hackthebox.eu/badge/image/54373 align="left")
