🟠Pwned1

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

Enumeración

Servicios abiertos

Comenzamos enumerando los servicios abiertos en la máquina objetivo.

nmap -p- --open --min-rate 500 -Pn -n -vvv 192.168.51.95

La máquina Pwned1 tiene tres puertos abiertos: 21, 22 y 80. El siguiente paso será el escaneo en profundidad de los tres servicios descubiertos.

nmap -p22,80 -Pn -n -sVC -vvv 192.168.51.95

Servicios abiertos:

  • Puerto 21 -> FTP -> vsftpd 3.0.3

  • Puerto 22 -> SSH -> OpenSSH 7.9

  • Puerto 80 -> HTTP -> Apache httpd 2.4.38

Enumeración Web

En el puerto 80 se está ejecutando un servicio Web. Vamos a ver el contenido en el navegador y al mismo tiempo vamos a enumerar la existencia de directorios y archivos interesantes.

Vemos el mensaje de que han hackeado el sitio Web pero poca más información podemos extraer.

feroxbuster -u http://192.168.51.95/ -s200,301 -x html,txt,php

Obtenemos como resultado interesante la existencia de un archivo robots.txt. Veamos su contenido.

Vemos dos directorios en el archivo robots.txt. Un directorio /nothing que no contiene información alguna y un directorio /hidden_text donde obtenemos una lista, parece que de directorios. Vamos a descargarla para utilizarla con feroxbuster y volver a fuzzear el sitio Web.

feroxbuster -u http://192.168.51.95/ -s200,301 -x html,txt,php -w secret.dic

Obtenemos un resultado, /pwned.vuln/. Veamoslo.

Llegamos a un formulario de inicio de sesión. Probamos varias credenciales por defecto sin obtener resultado alguno. Podemos ver el código fuente por si hubiese información interesante.

Tenemos unas posibles credenciales para un servicio FTP (recordamos que este servicio está disponible). Vamos a tratar de iniciar sesión en el servidor FTP.

Login existoso en el servidor FTP. Dentro tenemos un directorio /share que contiene dos archivos, id_rsa y note.txt. Vamos a descargar estos archivos en nuestra máquina de ataque.

Explotación

Durante la enumeración descubrimos un directorio abierto que contenia una clave privada y una nota donde se indicaba un posible nombre de usuario. Vamos a tratar de iniciar sesión utilizando el servicio SSH que se está ejecutando en el puerto 22.

chmod 600 id_rsa
ssh [email protected] -i id_rsa

Una vez logramos vulnerar la máquina víctima, el siguiente paso será buscar la flag local.txt.

Pivotando de usuaria "ariana" a "selena"

Comenzamos realizando las diferentes enumeraciones que nos pueden permitir obtener privilegios "root". Obtenemos un resultado interesante ejecutando sudo -l

Vamos a ejecutar este archivo que nos indica que podemos ejecutar como sudo sin contraseña.

sudo -u selena /home/messenger.sh

selena
/bin/bash (para generar una shell)
id
python3 -c 'import pty; pty.spawn("/bin/bash")' (tty interactiva)

Elevación de privilegios

Volvemos a enumerar posibles maneras de elevar privilegios. Lanzamo el comando "id" y listamos que la usuario "selena" pertenece al grupo "Docker". Posteriormente revisamos las imágenes de docker que tenemos disponibles y ejecutamos el comando que nos permitirá escalar privilegios con un shell como "root".

id
docker images

Obtenemos una imagen de docker con un nombre un poco sospechoso, "privesc". Buscamos en GTFOBins las posibles formas de elevar privilegios con las herramientas que tenemos hasta el momento.

docker run -v /:/mnt --rm -it alpine chroot /mnt sh

Ya tendríamos finalizado el CTF Pwned1.

Last updated