Icecream
Last updated
Last updated
Hacemos un escaneo de nmap y descubrimos los siguientes puertos abiertos:
nmap -p- --min-rate 10000 -sSVC -Pn 192.168.8.105 -oG allPorts -vvv
22 (SSH)
80 (HTTP) Hago fuzzing y no encuentro nada
139 (SAMBA)
445 (SAMBA)
9000 (HTTP) Parece ser un rabbithole? Hice fuzzing y solo encuentro "/config" "/certificates" y "/status"
Con enum4linux encuentro en el smb "/icecream", y me llama la atención:
Inicio sesión y subo una revershell de pentesting monkey, me pongo a la escucha con netcat y abro el archivo, consiguiendo RCE. Lo primero antes de todo hay que hacer laDepuración de tty:
Me muevo un poco por el servidor pero no encuentro nada, así que me paso pspy64 y linpeas abriéndome un servidor con python desde mi maquina atacante y haciendo un wget para descargarlo. Linpeas no me da nada util, pero en cambio en pspy veo una cosa que me llama la atención porque hace referencia al puerto :9000, el cual pensaba que no servía para nada, pero al parecer si, así que voy a investigar un poco sobre que es unitd:
Unit al parecer es una API la cual se puede controlar mediante HTTP, y curiosamente "/config" "/control" y "/status" son los directorios que encontré previamente con gobuster (No metí foto pensando que era un rabbithole) Página:
Estos son los archivos que hay en el puerto 9000:
Bien, la idea aquí seria subir otra revershell pero está vez mediante la API de unit, ya que si os fijais bien, en el pspy se puede apreciar que se ejecuta como ice:
La estructura es de la siguiente manera, así que de esa manera vamos a crear el .json mandando solicitudes curl con PUT
Añadimos en "/tmp" la revershell y hacemos un curl y nos llega a nuestro netcat:
Como siempre, lo primero hay que hacer la Depuración de tty
Revisamos los SUID y encontramos que todos los usuarios pueden ejecutar ums2net:
*Dato curioso, me equivoque con un comando y jodi el /etc/sudoers de la maquina y la tuve que volver a importar 🤦♂️*
Hacemos un "echo "5555 of=/etc/sudoers" > config" de está manera podremos hacer una solicitud al puerto 5555 y editar el /etc/sudoers
Inicializamos el comando y desde nuestra máquina atacante ahora tendremos que hacer una solicitud para editar el /etc/sudoers, así conseguiremos editarlo y hacer que cualquier usuario pueda ser root sin proporcionar contraseñas
Parece que ha funcionado finalmente...
Y conseguimos ser root 😎👌
En esta máquina, logramos la intrusión y escalada de privilegios aprovechando varias debilidades:
Obtuvimos acceso inicial cargando una reverse shell en un recurso compartido SMB mal configurado, lo que permitió ejecutar comandos en el sistema.
Descubrimos actividad interesante en el servicio Unit expuesto en el puerto 9000 mediante pspy64, lo que condujo a la explotación de su API HTTP para cargar y ejecutar una segunda reverse shell.
El binario SUID ums2net
se utilizó para editar el archivo /etc/sudoers
, otorgando acceso root sin necesidad de contraseña.
La falta de una adecuada configuración de permisos en servicios como SMB y Unit fue clave para comprometer la máquina.
Inicialmente pensé que el puerto 9000 era un rabbithole, que resultó ser una pieza crucial para avanzar, esto nos da un lección para que no descartemos posibles entradas de explotación sin haber investigado exhaustivamente
Realmente fue una maquina fácil pero personalmente se me hizo muy larga y en algunos pasos me quede atascado, la frustración es el camino correcto hacia el aprendizaje ;)