Broker

20240719171155.png

Broker es una máquina Linux de fácil dificultad que aloja una versión de Apache ActiveMQ. La enumeración de la versión de Apache ActiveMQ muestra que es vulnerable a la ejecución de código remoto no autenticado, que se aprovecha para obtener acceso de usuario en el objetivo. La enumeración posterior a la explotación revela que el sistema tiene una configuración incorrecta de sudo que permite al usuario activemq ejecutar sudo /usr/sbin/nginx, que es similar a la reciente divulgación de Zimbra y se aprovecha para obtener acceso de root.

Enumeración

Iniciamos con la enumeración de los puertos abiertos de la maquina.

Encontramos una larga lista de puertos abiertos y varios servicios corriendo.

Puerto 80

Al ir al sitio web observamos que se tiene un panel donde nos piden un usuario y una contraseña.

20240719172116.png  Haciendo uso de : admin : admin podremos acceder dicho login

Explotación

Al ingresar el sitio observaremos un servicio ActiveMQ

20240719173619.png

Investigando un poco encontraremos otro puerto abierto que corre el mismo servicio

20240719173642.png

Al buscar dicho servicio vemos que se tiene una vulnerabilidad de RCE:

Escalda de privilegios

Usuario activemq

Haciendo uso del exploit podremos obtener un Shell como el usuario activemq

20240719173737.png

Enumerando los privilegios del usuario veremos que el usuario actual puede ejecutar /usr/sbin/nginx

20240719192639.png

Investigando un poco veremos que podemos iniciar un servidor web con esto, para ello necesitamos un archivo de configuración con el siguiente contenido:

user root;

  • Propósito: Esta línea especifica que nginx debe ejecutarse con los privilegios del usuario root.

  • Implicaciones: Ejecutar nginx como root es muy inseguro, ya que cualquier vulnerabilidad en nginx podría ser explotada para obtener control total del sistema.

events { ... }

  • Propósito: La sección events contiene configuraciones relacionadas con el modelo de eventos de nginx.

    • worker_connections 1024;: Establece el número máximo de conexiones simultáneas que cada proceso de trabajo (worker) puede manejar. En este caso, el límite es 1024 conexiones.

http { ... }

  • Propósito: La sección http contiene configuraciones específicas para manejar solicitudes HTTP.

server { ... }

  • Propósito: Define un bloque de servidor virtual con configuraciones específicas.

listen 8008;

  • Propósito: Indica a nginx que escuche en el puerto 8008 para recibir solicitudes HTTP.

root /;

  • Propósito: Establece el directorio raíz de documentos desde el cual nginx servirá los archivos.

  • Implicaciones: Configurar la raíz del documento en / es extremadamente inseguro, ya que expone todo el sistema de archivos al servidor web.

autoindex on;

  • Propósito: Habilita la generación automática de un índice de directorio. Si no se encuentra un archivo de índice (como index.html), nginx mostrará una lista de archivos en el directorio.

  • Implicaciones: Esto puede ser peligroso si se activa en directorios sensibles, ya que permite a los usuarios ver y acceder a todos los archivos en esos directorios.

dav_methods PUT;

  • Propósito: Habilita el método HTTP PUT para WebDAV, permitiendo a los usuarios cargar archivos en el servidor.

  • Implicaciones: Permitir el método PUT sin control adecuado puede permitir a usuarios no autorizados subir archivos al servidor, lo que podría ser explotado para almacenar contenido malicioso.

Luego de crear un archivo podemos ejecutar.

20240719225246.png

Luego para comprobar que nuestro servidor web se inicio correctamente ejecutamos :

20240719230119.png

Vemos que efectivamente podemos leer archivos desde la raiz de la maquina victima

Usuario root

Para poder escalar y obtener una shell como el usuario root, podemos ingresar nuestra id_rsa.pub en /root/.ssh/authorized_keys

Generamos nuestras claves:

20240719230152.png

Subimos a la maquina victima

Luego podremos conectarnos haciendo uso de la id_rsa

20240719230309.png

Last updated