Ejecución de código remoto en Wazuh Server · Aviso · Wazuh/Wazuh · Github

Summarize this content to 600 words
Resumen
Una vulnerabilidad de deserialización insegura permite la ejecución de código remoto en los servidores WAZUH.La vulnerabilidad puede ser activada por cualquier persona con acceso a la API (servidores de tablero o wazuh comprometidos en el clúster) o, en ciertas configuraciones, incluso por un agente comprometido.
Detalles
Los parámetros distribuidosos son serializados como JSON y deserializados usando as_wazuh_object (en framework/wazuh/core/cluster/common.py). Si un atacante logra inyectar un diccionario insanitizado en la solicitud/respuesta DAPI, puede forjar una excepción no controlada (__unhandled_exc__) evaluar el código arbitrario de Python.
Usando la API del servidor, es bastante fácil de activar. Por ejemplo, usando el run_as punto final (implementado por run_as_login en api/api/controllers/security_controller.py): el auth_context El argumento está completamente controlado por el atacante y se reenvía al servidor maestro para manejar. Enviando un malicioso run_as Solicitud a un servidor de trabajadores, es posible ejecutar código en el servidor maestro.
También es posible explotar el error como un agente comprometido, en ciertas configuraciones.Un agente comprometido puede responder a un getconfig Solicite con un objeto JSON malicioso (que contiene una excepción serializada no controlada). Si el getconfig la solicitud fue causada por una solicitud de API del servidor a /agents/{agent_id}/config/{component}/{configuration} (api.controllers.agent_controller.get_agent_config), y el agente es administrado por un servidor que no sea el que recibió la solicitud API del servidor, la deserialización insegura se producirá en el servidor que recibió la solicitud de API del servidor original.
user server A server B agent
| | | |
| -get-config-> | | |
| | –get-config-dapi-> | |
| | | –getconf-> |
| | | <-payload– |
| X <—–payload—— | |
| | | |

Es probable que haya más formas de alcanzar la función de deserialización insegura (as_wazuh_object), algunos de ellos pueden incluso ser accesibles desde diferentes contextos (sin credenciales, o iniciados por un agente comprometido). Sugiero arreglar la causa raíz en lugar de intentar desinfectar entradas que la alcancen. Tenga en cuenta que hay otras otras formas de ejecutar código arbitrario en as_wazuh_objectmás fácil usando un __callable__o potencialmente abusando de dispositivos llamables en exception, wresults o Wazuh.
POC
Para activar el uso de la API del servidor (suponiendo credenciales predeterminadas):
curl -X POST -k -u «wazuh-wui:MyS3cr37P450r.*-» -H «Content-Type: application/json» –data ‘{«__unhandled_exc__»:{«__class__»: «exit», «__args__»: ()}}’ https://<worker-server>:55000/security/user/authenticate/run_as
Esto apagará el servidor maestro.
Impacto
Esta es una ejecución de código remoto en el servidor Wazuh, que afecta la última versión (v4.9.0 en este momento)

Enlace de la fuente, haz clic para tener más información

Artículos y alertas de seguridad

Consultar más contenidos y alertas

Alertas y noticias de seguridad de la información

Contacta

Contacta con nosotros para obtener soluciones integrales en IT y seguridad de la información

Estamos encantados de responder cualquier pregunta que puedas tener, y ayudarte a determinar cuáles de nuestros servicios se adaptan mejor a tus necesidades.

Nuestros beneficios:
¿Qué sucede a continuación?
1

Programamos una llamada según tu conveniencia.

2

Realizamos una reunión de descubrimiento y consultoría.

3

Preparamos una propuesta.

Agenda una consulta gratuita