漏洞介绍
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 |

使用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 |

启动站点
1 | omd start |
登陆系统
使用浏览器访问http://ip/vuln进行登录。

漏洞复现
使用exp https://github.com/gbrsh/checkmk-race/tree/main
1 | python checkmk-race.py http://127.0.0.1/cmk |