漏洞介绍

CVE-2022-48321

agent-receiver(网络边界入口)中的SSRF漏洞,利用该漏洞可以访问网络内部服务。

CVE-2022-47909 + CVE-2022-46945

内部python和php服务中的任意文件读取漏洞,达到身份认证绕过的效果

CVE-2022-46836

内部php服务中的授权后代码注入漏洞,达到任意命令执行的效果

漏洞范围

unauthenticated (2.1.0 - 2.1.0.p11) / authenticated (<2.1.0p12) RCE exploit for Checkmk.

漏洞靶场

使用docker来搭建靶场

下载官方的docker镜像

1
wget https://download.checkmk.com/checkmk/2.1.0p11/check-mk-raw-docker-2.1.0p11.tar.gz

将镜像导入docker

1
docker load -i check-mk-raw-docker-2.1.0p11.tar.gz 

启动容器

1
docker run -d -p 80:5000 -p 8000:8000 --name checkmk 镜像id

image-20251116001252704

使用Centos7搭建靶场

下载checkmk

1
wget https://download.checkmk.com/checkmk/2.1.0p11/check-mk-raw-2.1.0p11-el7-38.x86_64.rpm

安装相关依赖包

1
yum install time traceroute dialog graphviz graphviz-gd httpd libevent libdbi libtool-ltdl rpcbind pango perl-Locale-Maketext-Simple perl-IO-Zlib php php-cli php-xml php-mbstring php-pdo php-gd rsync uuid xinetd freeradius-utils libpcap bind-utils poppler-utils libgsf rpm-build postgresql-libs -y

安装checkmk

1
rpm -ivh check-mk-raw-2.1.0p11-el7-38.x86_64.rpm

执行命令setenforce 0临时关闭SELinux。 永久关闭SElinux。 运行以下命令,编辑SELinux的config文件。

1
vi /etc/selinux/config

找到SELINUX=enforcing,按i进入编辑模式,将参数修改为SELINUX=disabled。

修改完成,按下键盘Esc键,执行命令:wq,保存并退出文件。

1
systemctl stop firewalld;systemctl disable firewalld

启动Check_MK

1
systemctl start omd

创建站点

站点创建时,将自动创建该对应站点的cmkadmin管理员账户与密码,站点访问地址为http://ip/vuln

1
omd create vuln

image-20251116013626343

启动站点

1
omd start

登陆系统

使用浏览器访问http://ip/vuln进行登录。

image-20251116013350468

漏洞复现

使用exp https://github.com/gbrsh/checkmk-race/tree/main

1
python checkmk-race.py http://127.0.0.1/cmk

参考

https://github.com/gbrsh/checkmk-race/tree/main

Download archive of outdated Checkmk versions