Monitors Two
Last updated
Last updated
MonitorsTwo es una máquina Linux de dificultad fácil que muestra una variedad de vulnerabilidades y configuraciones erróneas. La enumeración inicial expone una aplicación web propensa a la ejecución de código remoto (RCE) previa a la autenticación a través de un encabezado X-Forwarded-For malicioso. La explotación de esta vulnerabilidad otorga un shell dentro de un contenedor Docker. Un binario capsh mal configurado con el bit SUID establecido permite el acceso de root dentro del contenedor. El descubrimiento de las credenciales de MySQL permite el volcado de un hash, que, una vez descifrado, proporciona acceso SSH a la máquina. Una enumeración adicional revela una versión vulnerable de Docker (CVE-2021-41091) que permite a un usuario con pocos privilegios acceder a los sistemas de archivos del contenedor montados. Aprovechando el acceso de root dentro del contenedor, se copia un binario bash con el bit SUID establecido, lo que resulta en una escalada de privilegios en el host.
Iniciamos con el reconocimiento de puertos abiertos de la maquina victima
-p-
: Escanea todos los puertos posibles (1-65535).
--open
: Muestra solo los puertos abiertos.
--min-rate 5000
: Establece una tasa mínima de envío de paquetes a 5000 por segundo, acelerando el escaneo.
-Pn
: Omite la fase de descubrimiento de host, asumiendo que el host está activo (útil si los pings están bloqueados).
-n
: No realiza resolución de nombres DNS, utilizando solo direcciones IP.
-vvv
: Proporciona una salida muy detallada y verbosa.
10.10.11.211
: La dirección IP del objetivo.
-oG allportsScan
: Guarda los resultados del escaneo en un archivo en formato Grepable llamado allportsScan
.
Luego de tener los puertos abiertos procederemos a enumerar los servicios que corren en dichos puertos
-p22,80
: Especifica que se deben escanear los puertos 22 (SSH) y 80 (HTTP).
-sC
: Ejecuta scripts de detección predeterminados. Estos scripts pueden proporcionar información adicional, como versiones de software, detalles de configuración, etc.
-sV
: Detecta versiones de los servicios. Este parámetro intenta determinar la versión exacta del software que está ejecutándose en los puertos escaneados.
-vvv
: Proporciona una salida muy detallada y verbosa.
-Pn
: Omite la fase de descubrimiento de host, asumiendo que el host está activo (útil si los pings están bloqueados).
-n
: No realiza resolución de nombres DNS, utilizando solo direcciones IP.
10.10.11.211
: La dirección IP del objetivo.
-oN servicesScan
: Guarda los resultados del escaneo en un archivo en formato normal llamado servicesScan
.
Visitando el servicio web encontramos con un panel de inicio de sesion, en el que podemos observar que es un cacti 1.2.22
, buscando un poco mas sobre dicha versión encontraremos que tiene una vulnerabilidad.
Ejecutemos el exploit:
Antes debemos de ponernos a la escucha y deberíamos de recibir una Shell como el usuario root
Enumerando encontraremos que estamos dentro de un contenedor, así mismo encontraremos un binario con permisos SUID
que tiene una vulnerabilidad y podemos explotarla para escalar privilegios.
Para revisar mas sobre este binario podemos visitar:
Luego de ejecutarla obtenemos una Shell como el usuario root.
Enumerando los archivos de configuración del sitio web encontraremos un archivo config.php
en donde encontraremos credenciales a una base de datos:
Las credenciales encontradas la haremos uso para ingresar a dicha base de datos.
En esta base de datos encontraremos uno con el nombre de cacti
y una tabla que es user_auth
y revisando esta tabla podremos encontrar credenciales validas.
Pero la contraseña se encuentra encriptada, por lo que haciendo uso de john the ripper
podremos crackearla
Entonces tenemos las siguientes credenciales las que son validas ante el servicio de ssh
Enumerando la maquina victima encontramos que la versión de Docker tiene una vulnerabilidad, de la cual podemos aprovecharnos para escalar privilegios en la maquina host.
Para explotar esta vulnerabilidad primero debemos asignarle permisos SUID al binario /bin/bash
del contenedor
Luego debemos ejecutar el exploit
Luego de ejecutar el exploit podremos ver un directorio y debemos dirigirnos aquel directorio, en mi caso es el siguiente:
En este directorio encontraremos un binario /bin/bash
que tiene permisos SUID
por lo que ejecutando ./bin/bash -p
podremos convertirnos en usuario root.
El exploit que se tiene es el