0x00 漏洞概述
Zabbix是一个开源的企业级性能监控解决方案。zabbix的jsrpc的profileIdx2参数存在insert方式的SQL注入漏洞,攻击者无需授权登陆即可登陆zabbix管理系统,也可通过script等功能轻易直接获取zabbix服务器的操作系统权限。 但是无需登录注入这里有个前提,就是zabbix开启了guest权限。而在zabbix中,guest的默认密码为空。需要有这个条件的支持才可以进行无权限注入。
0x01 影响程度
攻击成本:低
危害程度:高
是否登陆:不需要
影响范围:2.2.x, 3.0.0-3.0.3。(摘自Freebuf)
0x02 漏洞测试
在Zabbix中有两个文件存在SQL注入漏洞,分别是jsrpc.php
和latest.php
,存在漏洞参数分别为:profileIdx2
和toggle_ids
。
在目标的zabbix的地址后面加上如下POC:
|
|
若返回页面出现You have an error in your SQL syntax
则证明存在SQL注入漏洞。
漏洞EXP:
设计步骤:
首先查询的sql语句为:select 1 from (select count(*),concat(floor(rand(0)*2), (select sessionid from sessions where userid=1 and status=0 limit 1))x from information_schema.character_sets group by x)y
查询的sessionid
会在页面中显示
然后通过body.split('Duplicate entry')[1].split('for key')[0][3:-2]
来取出sessionid
的值,具体的可以看响应的页面结构
然后带入cookie访问proxies.php
,如果没有出现Access denied.
则说明进入成功,输出sessionid
的值
参考:独自等待博客EXP
0x03 漏洞修复
1、禁用后台用户guest账号(注入要求此账号启用)。
2、升级到zabbix的最新版。
0x04 批量查找
上Zoomeye,输入查询关键字:Zabbix port:80
,当然,如果你想定点查询的话还可以加上country:
City:
等字段,比如查询北京Zabbix country:china port:80 city:Beijing
;