天天看点

Zabbix 再次被爆出存在 SQL 注入漏洞,影响云上数百网站

        昨晚,zabbix 被爆出一个高危的 sql 注入漏洞。这个漏洞本身需要登录触发,但因为大部分 zabbix 都启用了 guest 账号,导致访客在访问 zabbix 时默认都会带上 guest 权限。有了 guest 权限后,触发这个漏洞的条件“需要登录”就不存在了,相当于一个前台的 sql 注入漏洞<b>。所以,外部媒体转载的文章中“无需登录”实际上是不严谨的说法。</b>

        由漏洞作者提供的 poc 得知,漏洞存在于 jsrpc.php 文件中。发送到此文件的所有参数会传入 cscreenbuilder 中进行处理,过程中调用 cscreenbase 类的 calculatetime 方法的时候使用了 $options['profileidx2'],profileidx2 的值最终在 cprofile 的 flush() 函数内带入到数据库 insert 操作中。由于在传入过程中没有对参数内容进行过滤,最终导致了 sql 注入漏洞的产生。

        云盾在昨晚对云上运行 zabbix 服务的机器进行安全扫描,发现开启 guest 默认用户且存在此漏洞的 ip 数量达到数百个,存在风险的 zabbix 服务数量占总数的一半以上。

       此外,官方公告中列出的漏洞影响范围包括以下版本:

zabbix 2.2.x

zabbix 3.0.0 - 3.0.3

        而云盾的扫描结果显示,受漏洞影响的版本号一共 26 个,经过聚合后实际上的影响范围如下:

<b>zabbix 2.0.x</b>

<b>zabbix 2.2.x</b>

<b>zabbix 2.4.x</b>

<b>zabbix 3.0.0 - 3.0.3</b>

        官方公告范围不完整的原因,大概是因为漏洞作者在测试漏洞的时候没有对所有版本进行测试,导致漏掉了部分版本。

         1、在 zabbix 目录中找到 frontends/php/include/classes/user/cprofile.php 文件,定位代码:

         把里面的 $idx2 改为 intval($idx2)  。

         2、前往 zabbix 后台“管理”栏目中禁用 guest 用户。

         3、更新 zabbix 到 3.0.4 或更高版本。