Broker

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.
Haciendo uso de : admin : admin podremos acceder dicho login
Explotación
Al ingresar el sitio observaremos un servicio ActiveMQ

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

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

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

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
nginxdebe ejecutarse con los privilegios del usuarioroot.Implicaciones: Ejecutar
nginxcomorootes muy inseguro, ya que cualquier vulnerabilidad ennginxpodría ser explotada para obtener control total del sistema.
events { ... }
Propósito: La sección
eventscontiene configuraciones relacionadas con el modelo de eventos denginx.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
httpcontiene 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
nginxque escuche en el puerto 8008 para recibir solicitudes HTTP.
root /;
Propósito: Establece el directorio raíz de documentos desde el cual
nginxservirá 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),nginxmostrará 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
PUTpara WebDAV, permitiendo a los usuarios cargar archivos en el servidor.Implicaciones: Permitir el método
PUTsin 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.

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

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:

Subimos a la maquina victima
Luego podremos conectarnos haciendo uso de la id_rsa

Last updated