Verdejo , DockerLabs
En este reto de DockerLabs tenemos un escaneo de puertos , un server side template injectiony escalada de privilegios.
Herramientas y recursos usados
- NMAP
- SSTIMAP
- hacktricks
Enumeracion
Como siempre primero lanzamos nmap.
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.
Hacemos una comprobacion por si traga un 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.
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 '*'
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.
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
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.
Una vez ya tenemos el passphrasse cambiamos los permisos del id_rsa e ingresamos.
YA somo root y la maquina queda a nuestra disposicion.
Muchas gracias por leer.
Comments powered by Disqus.