zabbix多版本注入漏洞分析

Posted 安全狗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zabbix多版本注入漏洞分析相关的知识,希望对你有一定的参考价值。

↑ 点击上方 “安全狗”关注我们


Seclists上爆出zabbix多版本无需登陆的注入,然后国内就爆炸了。开头先说一下,安全狗能够拦截这个注入攻击。



来分析一下吧,zabbix版本为2.x


攻击payload如下:

jsrpc.php?type=9&method=screen.get&profileIdx=web.item.graph&profileIdx2=1%20and%20(select%201%20from%20(select%20count(*),concat(user(),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a)&stime=1&resourcetype=1


zabbix多版本注入漏洞分析

通过页面的语句报错定位代码位置在\includes\profiles.inc.php中第174行


zabbix多版本注入漏洞分析


代码中将value数组通过implode函数操作并组装成sql语句。通过报错信息中可以发现触发点在idx2参数中。(在最新版本中的zabbix已经使用zbx_dbstr对idx2变量进行单引号保护与转义。)


向上查找发现flush函数对insertDB进行了调用。


zabbix多版本注入漏洞分析


代码中通过判断私有变量是否为空,不为空则遍历变量并传入insertDB函数中,可以看到在遍历时并没有做任何过滤的操作。


接着在代码中搜索何处对CProfile::flush()函数进行调用,在\includes\page_footer.php中第46行调用了该函数,最后在jsrpc.php中的最后一行引入page_footer.php。


至此,整个函数的调用流程分析完成,接下来通过payload开始分析profileIdx2参数变量的组装与传递流程。


在jsrpc.php中178-219行,method=screen.get中


zabbix多版本注入漏洞分析


代码前半部将$_REQUEST获取的变量进行组装,然后传入CScreenBuilder::getScreen()中。


紧接着找到\includes\classes\screens\CScreenBuilder.php,getScreen()函数被定义在169-268行。


zabbix多版本注入漏洞分析


第197行开始判断传入的resourcetype参数并实例化对应的类,对应的类继承于CScreenBase类,并调用父类的构造函数。


zabbix多版本注入漏洞分析


在CScreenBase->__construct中,可以看到函数对变量赋值完成后传入了$this->calculateTime方法中。


zabbix多版本注入漏洞分析


代码中可以看到除了判断传入的变量外,函数在未过滤变量的情况下传入了CProfile::update()中。


代码在\includes\profiles.inc.php中136-172行


zabbix多版本注入漏洞分析


函数直接将传入的变量传入到私有变量,用于后面CProfile::flush()的调用(文章开头部分),最终导致注入的发生。


修复方案:

Zabbix 2.x找到\includes\profiles.inc.php文件,Zabbix 3.x找到\include\classes\user\CProfile.php,将insertDB函数中的'idx2' => $idx2改成'idx2' =>zbx_dbstr($idx2)即可。


参考:

http://seclists.org/fulldisclosure/2016/Aug/82

点击图片查看近期热点

看ISC技术论坛上专家们如何解读“威胁情报”



2016互联网安全大会   一场解封“洪荒之力”的大戏持续上演



你家收到信息安全等级保护限期整改通知书了吗?


恐怖袭击和寨卡病毒算什么?   这才是“里约大冒险”最难过的关卡


长按二维码,关注我们吧

安全狗,知名互联网安全品牌,领先的云安全服务与解决方案提供商。秉承“安全狗即服务”的理念,依托全球领先的安全技术与完善的大数据处理平台,帮助客户实现业务平台的安全、稳定、可靠运行。

以上是关于zabbix多版本注入漏洞分析的主要内容,如果未能解决你的问题,请参考以下文章

zabbix 爆高危 SQL 注入漏洞,可获系统权限(profileIdx 2 参数)

注意Zabbix高危SQL注入漏洞分析

请注意!Zabbix高危SQL注入漏洞分析

Zabbix-20160817-高危SQL注入漏洞

Zabbix SQL(jsrpc.php) 注入漏洞分析 (以3.0.2为例)

关于zabbix存在SQL注入高危漏洞的安全公告