×

微信扫一扫,快捷登录!

标签: 暂无标签
摘要:本次给大家分享的是四叶草安全BugScan社区成员" 呔(dai),妖怪!"童鞋提交的"Zabbix 2.2.x / 3.0.x latest.php SQL 注入检测"
1、Zabbix?

        zabbix(音同 zæbix)是一个基于WEB界面的提供分布式[url=]系统监视[/url]以及网络监视功能的企业级的开源解决方案。
        zabbix能监视各种网络参数,保证[url=]服务器系统[/url]的安全运营;并提供灵活的通知机制以让[url=]系统管理员[/url]快速定位/解决存在的各种问题。
        zabbix由2部分构成,zabbix server与可选组件zabbix agent。
        zabbix server可以通过[url=]SNMP[/url],zabbix agent,[url=]ping[/url],端口监视等方法提供对远程服务器/网络状态的监视,[url=]数据收集[/url]等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。

(注:文来自百度百科)

2、漏洞危害证明
[size=1em]

先来看下漏洞文件的源代码:


全局搜索使用该函数的地方。
我们到这里:\include\classes\user\CProfile.php 第70行
全局搜索flush(),zabbix\charts.php     zabbix\include\classes\user\CWebUser.php  zabbix\include\page_footer.php  三个文件中做了调用。然后我们可以看到在jsrpc.php的最后一行:

那么我们的参数应该如何带入呢?我们可以看到在jsrpc.php中,

传入参数 type不为6时(PAGE_TYPE_JSON 为常量6),$data可以接受$_REQUEST传来的值。所以其实这里不论是get还是post或者cookie都可以带入。(cookie具体看服务端配置)。
当method = screen.get的时候会进入到

$options数组的值我们根据情况来进行构造就好饿了。随后可以看到

继续跟进:

然后是这样:

我们的resourcetype的值为17(SCREEN_RESOURCE_HISTORY为17)
接着进入了:

继续跟进:

这个类继承来自CScreenBase。在构造方法中调用了父类的构造方法。我们跟进来看看:

到了calculate中。

来跟进:

可以看到进入了insert。最终未处理的变量被带入到了查询。导致了sql注入。

配置环境
服务器:debian 4.0.4
环境:docker
程序:zabbix 3.0.2
审计工具:sublime text
上传点:jsrpc.php?sid=0bcd4ade648214dc&type=3&method=screen.get&timestamp=1471054088083&mode=2&screenid=&groupid=&hostid=0&pageFile=history.php&profileIdx=web.item.graph&profileIdx2=2%27123&updateProfile=true&screenitemid=&period=3600&stime=20170813040734&resourcetype=17&itemids[23297]=23297&action=showlatest&filter=&filter_task=&mark_color=1



直接带入请求链接


页面返回数据库INSERT报错信息,漏洞存在,丢sqlmap跑一边




修复建议:

1、升级到3.0.4

2、使用 intval 函数过滤 CProfile::insertDB 中的 $idx2 变量

检测插件


原创:四叶草安全BugScan社区

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x




上一篇:Python研究:Zabbix SQL怎样注入批量验证脚本
下一篇:企业部署的第一个Zabbix监控系统
monicazhang

写了 2297 篇文章,拥有财富 12859,被 21 人关注

您需要登录后才可以回帖 登录 | 立即注册
B Color Link Quote Code Smilies

成为第一个吐槽的人

Powered by IT 运维管理
返回顶部