Zabbix SQL注入漏洞技术分析与防护方案

简介:

Zabbix软件被爆存在SQL注入漏洞,经过分析发现Zabbix默认开启了guest权限,且默认密码为空。随后Zabbix V3.0.4版本修复了2个SQL注入漏洞,本文对其公布的PoC进行分析,并给出检测及防护方案。

Zabbix公布了2个POC,如下:

  • /zabbix/jsrpc.php?sid=0bcd4ade648214dc&type=9&method=screen.get&timestamp=1471054088083&mode=2&screenid=&groupid=&hostid=0&pageFile=history.php&profileIdx=web.item.graph&profileIdx2=2’3297&updateProfile=true&screenitemid=&period=3600&stime=20170813040734&resourcetype=17&itemids%5B23297%5D=23297&action=showlatest&filter=&filter_task=&mark_color=1
  • latest.php?output=ajax&sid=&favobj=toggle&toggle_open_state=1&toggle_ids[]=15385); select * from users where (1=1

以下为第一个poc的调用链:

Jsrpc.php:413 require_once dirname(__FILE__).'/include/page_footer.php';

include/page_footer.php:40  $result = CProfile::flush();

include/class/user/Cprofile.php:63 function flush()

include/class/user/Cprofile.php:277 function insertDB ()

再看第二个poc的调用链:

Latest.php:88  CProfile::update('web.latest.toggle_other', $_REQUEST['toggle_open_state'], PROFILE_TYPE_INT, $hostId);

Latest.php:829 require_once dirname(__FILE__).'/include/page_footer.php';

include/page_footer.php:40  $result = CProfile::flush();

include/class/user/Cprofile.php:63 function flush()

include/class/user/Cprofile.php:277 function insertDB ()

Zabbix SQL注入漏洞过程分析

以第一个调用链为例,我们来看文件

\zabbix-3.0.0beta2\frontends\php\jsrpc.php。

当method等于screen.get时,profileIdx2参数进入options中,然后options进入CScreenBuilder::getScreen($options),继续跟进文件\zabbix-3.0.0beta2\frontends\php\include\classes\screens\CScreenBuilder.php。

profileIdx2参数又进入CScreenBase::calculateTime()函数,继续跟进文件\zabbix-3.0.0beta2\frontends\php\include\classes\screens\CScreenBase.php。

profileIdx2参数又进入CProfile::update()函数中,继续跟进\zabbix-3.0.0beta2\frontends\php\include\classes\user\CProfile.php。

这里的profileIdx2参数就是这里的idx2,进入到profile中,然后profile进入insert中最后进入到insertDB()函数中。

insertDB中的处理过程如下:

insertDB函数中,对一些关键参数(idx,value),用zbx_dbstr()函数进行了过滤,但对idx2没有过滤,导致产生了sql注入漏洞。

分析过滤函数zbx_dbstr()函数,位于文件zabbix-3.0.0beta2\zabbix-3.0.0beta2\frontends\php\include\db.inc.php。

可以看到这个就是zabbix的全局过滤函数,根据各种数据库类型,过滤sql注入的。

从开始到最后进入sql语句中的参数有三个:$options['profileIdx']、$options['period']、$options['profileIdx2'],只有$options['profileIdx2']全程没有过滤,直接进入sql语句中。

看官方的3.0.4修复版本的Cprofile::insertDB函数,其关键参数idx2也做了过滤,如下图:

当然,要使请求最终到达这个漏洞函数,中间还有一些限制条件,主要看Cprofile::flush函数,如下:

$profiles和$isModified()都会在前面的update()函数内会保证为真,而要满足userDeatails[‘suerid’]>0,则需要用户登录或系统开启guest模式。

Zabbix SQL注入漏洞检测及防护方案

监控系统监控着每个企业的核心资产,一旦被黑客入侵控制,等同为黑客进一步渗透企业敞开了大门。绿盟科技针对此次漏洞提供了以下解决方案:

1、对于受影响的版本,建议升级到最新版本,获取地址:

http://www.zabbix.com/download.php

2、禁用访客账户,例如Windows下的guest账户

3、绿盟科技免费在线检测:

https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?pid=0&sid=1

4、绿盟科技在线云检测,登陆绿盟科技云,申请极光自助扫描服务试用:

https://cloud.nsfocus.com/#/krosa/views/initcdr/productandservice?pid=0&sid=0

5、使用绿盟科技的远程评估系统(RSAS/WVSS)对内网进行安全评估,RSAS插件升级包获取地址: http://update.nsfocus.com/update/listRsasDetail/v/vulweb ,WVSS插件升级包获取地址: http://update.nsfocus.com/update/listWvssDetail/v/6/t/plg

6、使用绿盟科技检测类产品(IDS)进行检测,各版本对应升级包分别为 5.6.10.14273 、 5.6.9.14273 、 5.6.8.594、 5.6.7.594 、 5.6.0.500

7、使用绿盟科技防护类产品(IPS/NF/SG)进行防护,各版本对应升级包分别为 5.6.10.14273 、 5.6.9.14273 、 5.6.8.594 、 5.6.7.594 、 5.6.0.500

8、已经购买了绿盟科技相关服务的客户可与售后联系,进行检测与防护

9、短期服务:绿盟科技工程师现场处理。确保第一时间消除网络内相关风险点,控制事件影响范围,并提供事件分析报告

10、中期服务:提供 3-6个月的风险监控与巡检服务。根除风险,确保事件不复发

11、长期服务:基金行业业务风险解决方案(威胁情报+攻击溯源+专业安全服务)

官方公告页面: https://support.zabbix.com/browse/ZBX-11023

漏洞报告详情: http://seclists.org/fulldisclosure/2016/Aug/82


原文发布时间:2017年3月24日
本文由:绿盟科技 发布,版权归属于原作者
原文链接:http://toutiao.secjia.com/zabbix-sql-injection-vulnerabilities-technical-analysis-and-protection-solution
本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站
相关文章
|
7月前
|
SQL 数据可视化 关系型数据库
MCP与PolarDB集成技术分析:降低SQL门槛与简化数据可视化流程的机制解析
阿里云PolarDB与MCP协议融合,打造“自然语言即分析”的新范式。通过云原生数据库与标准化AI接口协同,实现零代码、分钟级从数据到可视化洞察,打破技术壁垒,提升分析效率99%,推动企业数据能力普惠化。
577 3
|
8月前
|
SQL Web App开发 安全
SQL Server 2025 年 8 月更新 - 修复 CVE-2025-49759 SQL Server 特权提升漏洞
SQL Server 2025 年 8 月更新 - 修复 CVE-2025-49759 SQL Server 特权提升漏洞
677 2
SQL Server 2025 年 8 月更新 - 修复 CVE-2025-49759 SQL Server 特权提升漏洞
|
7月前
|
SQL Web App开发 安全
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
435 0
SQL Server 2025 年 9 月更新 - 修复 CVE-2025-47997 SQL Server 信息泄露漏洞
|
9月前
|
SQL Web App开发 安全
SQL Server 2025年7月更新 - 修复 CVE-2025-49718 Microsoft SQL Server 信息泄露漏洞
SQL Server 2025年7月更新 - 修复 CVE-2025-49718 Microsoft SQL Server 信息泄露漏洞
789 0
SQL Server 2025年7月更新 - 修复 CVE-2025-49718 Microsoft SQL Server 信息泄露漏洞
|
SQL 安全 数据库
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
970 173
|
11月前
|
SQL 关系型数据库 MySQL
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路
凌晨2点报警群炸了:一条sql 执行200秒!搞定之后,我总结了一个慢SQL查询、定位分析解决的完整套路
|
11月前
|
SQL 算法 数据挖掘
【SQL周周练】:利用行车轨迹分析犯罪分子作案地点
【SQL破案系列】第一篇: 如果监控摄像头拍下了很多车辆的行车轨迹,那么如何利用这些行车轨迹来分析车辆运行的特征,是不是能够分析出犯罪分子“踩点”的位置
299 15
|
12月前
|
SQL 关系型数据库 MySQL
【MySQL】SQL分析的几种方法
以上就是SQL分析的几种方法。需要注意的是,这些方法并不是孤立的,而是相互关联的。在实际的SQL分析中,我们通常需要结合使用这些方法,才能找出最佳的优化策略。同时,SQL分析也需要对数据库管理系统,数据,业务需求有深入的理解,这需要时间和经验的积累。
417 12
|
SQL 安全 PHP
thinkphp5之sql注入漏洞-builder处漏洞
在Web应用开发中,SQL注入是一种需要高度警惕的安全漏洞。通过深入理解ThinkPHP5中的SQL查询机制,并结合安全编码实践,开发者可以有效防止SQL注入攻击,保障应用的安全性和稳定性。
559 13