Post

Verdejo , DockerLabs

logodocker

En este reto de DockerLabs tenemos un escaneo de puertos , un server side template injectiony escalada de privilegios.

Herramientas y recursos usados

Enumeracion

Como siempre primero lanzamos nmap.

reporte

En el reporte observamos 3 puertos abiertos, el 22 por la version tan nueva y dado que no tenemos ni pass ni user lo descartamos , en el 80 vemos la plantilla de apache y en el 8089 tenemos un Werkzeug/2.2.2 Python/3.11.2 asi que vamos a mirar bien ese puerto.

web

Hacemos una comprobacion por si traga un ssti .

ssti

Como vemos, ejecuta la operacion que le indicamos por tanto tenemos un ssti.

Llegados a este punto he de aclarar que no es nada facil saber distinguir entre estas vulnerabilidades, es casi un prueba y error.

Fase de identificación

Identificar el motor de la plantilla implica analizar mensajes de error o probar manualmente varias cargas útiles específicas del idioma. Las cargas útiles comunes que causan errores incluyen ${7/0}, {{7/0}} , y <%= 7/0 %>. Observar la respuesta del servidor a las operaciones matemáticas ayuda a identificar el motor de plantilla específico.

Ahora que tenemos claro que tenemos un ssti procedemos a explotarlo , se podria hacer manualmente , con scripts incluso con burpsuit. Yo en este caso opto por probar con un script SSTIMAP.

Explotacion

Cuando hacemos uso de script debemos aportar la ruta completa es decir , no podemos darle solo la ip y el puerto , le debemos indicar cual es el archivo contra el que trabaja.

Como explican en el enlace que comparti dependiendo de la respuesta de la carga util nos indica frete a que estamos.

Me lanzo un tinja y observo los resultados.

tinja

Ahora que mas o menos tenemos claro que es me lanzo sstimap para realizar la explotacion , repito podeis hacerlo manualmente desde la misma web leyendo algun fichero que os proporcione nombre de usuario para atacar por ssh con hydra , yo opto por este metodo.

Como gracias a tinja ya sabemos que hay lanzo este comando directo.

1
python3 sstimap.py -u http://172.17.0.2:8089/\?user\= --interactive

Una vez abierto y conectado hago que me abra una sesion en la propia maquina.

1
2
run
os

Si nos fijamos en la imagen de abajo podemos ver que poligloto utilizo este script para saber frente a que se encontraba

1
Jinja2 plugin has confirmed injection with tag '*'

poliglot

Ya estamos dentro y somo el usuario verdejo , ahora empezemos buscando binarios scripts , lo que sea que nos permita escalar privelegios , yo como siempre empiezo con sudo -l.

sudol

search

Tenemo el binario base 64 para ejecutar como root y searchbins nos dice que lee un fichero lo codifica y luego nos lo presentara decodificado. Pues bien para resolver este acertijo nos falta saber que archivo leer y si sudo se ejecuta como root debe ser algun archivo suyo tambien podemos leer shadow y tirar con john para extraer las contraseñas de ambos usuarios. Pero vamos a tratar de averiguar si teine clave ssh root.

Tenemos suerte y nos la muestra

idroot

Una vez la tenemos nos la copiamos a nuestra maquina y la preparamos para pasarle john y que nos de el passphrase que nos hace falta. Recordemos primero la hasheamos con ssh2john y posterior lanzamos john junto a rockyou.

john

Una vez ya tenemos el passphrasse cambiamos los permisos del id_rsa e ingresamos.

root

YA somo root y la maquina queda a nuestra disposicion.

Muchas gracias por leer.

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

Comments powered by Disqus.