Zabbix Marco 注入(CVE-2024-22116)
声明
本文版权归原作者所有,未经允许禁止转载。
漏洞原理
Zabbix 后台中的 Ping 脚本参数校验不当,可直接拼接最终导致远程代码执行。
影响版本
7.0.0alpha1<=Zabbix<=7.0.0rc2
6.4.0<=Zabbix<=6.4.15
前提条件
获取后台权限,可创建或编辑 Host。
漏洞复现
环境搭建
下载对应版本的源码,将 sql 文件放入当前目录,启动数据库:
https://cdn.zabbix.com/zabbix/sources/oldstable/6.4/zabbix-6.4.15.tar.gz
docker run -d \
--name mysql \
--net=host \
-e MYSQL_DATABASE=zabbix \
-e MYSQL_USER=zabbix \
-e MYSQL_PASSWORD=zabbix \
-e MYSQL_ROOT_PASSWORD=root \
-v ./mysql_data:/var/lib/mysql \
-v $(pwd):/docker-entrypoint-initdb.d \
mysql:8.0.30 \
--character-set-server=utf8 \
--collation-server=utf8_bin \
--max_allowed_packet=64M \
--skip-ssl \
--default-authentication-plugin=mysql_native_password启动 Zabbix Server:
docker run --name zabbix \
--net=host \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:6.4.15-centos启动 Zabbix 前端:
docker run --name zabbix-web-nginx \
--net=host \
-e ZBX_SERVER_HOST="localhost" \
-e DB_SERVER_HOST="127.0.0.1" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:6.4.15-centos命令执行
进入后台:
Admin/Zabbix
创建 Host:
/IMG-Zabbix-Marco-注入(CVE-2024-22116)-20250914182959460.png)
/IMG-Zabbix-Marco-注入(CVE-2024-22116)-20250914182940322.png)
执行 Ping 操作,可能会出现错误,多试几次即可:
/IMG-Zabbix-Marco-注入(CVE-2024-22116)-20250914183034390.png)
/IMG-Zabbix-Marco-注入(CVE-2024-22116)-20250914183055714.png)