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
本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站
相关文章
|
25天前
|
SQL 存储 数据可视化
手机短信SQL分析技巧与方法
在手机短信应用中,SQL分析扮演着至关重要的角色
|
2月前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
489 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
19天前
|
SQL 存储 安全
如何防护SQL注入
在互联网中,SQL注入攻击是网站和应用面临的主要安全威胁之一。攻击者通过在输入字段中插入恶意SQL代码,企图非法访问或操控数据库。防范措施包括限制查询长度、使用参数化查询、采用ORM框架、遵循最小权限原则、定期更新系统以及使用SCDN等专业安全产品,以增强防护能力,保护数据安全。
|
2月前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
114 5
|
24天前
|
SQL 运维 安全
怎样可以找到SQL漏洞:技巧与方法详解
SQL漏洞,特别是SQL注入漏洞,是Web应用中常见的安全威胁之一
|
2月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
60 5
|
2月前
|
SQL 安全 数据安全/隐私保护
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
在构建Python Web应用时,安全性至关重要。本文通过三个真实案例,探讨了如何防范SQL注入、XSS和CSRF攻击。首先,通过参数化查询替代字符串拼接,防止SQL注入;其次,利用HTML转义机制,避免XSS攻击;最后,采用CSRF令牌验证,保护用户免受CSRF攻击。这些策略能显著增强应用的安全性,帮助开发者应对复杂的网络威胁。安全是一个持续的过程,需不断学习新知识以抵御不断变化的威胁。
99 1
|
2月前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
在Python Web开发中,构建安全应用至关重要。本文通过问答形式,详细解析了三种常见Web安全威胁——SQL注入、XSS和CSRF,并提供了实用的防御策略及示例代码。针对SQL注入,建议使用参数化查询;对于XSS,需对输出进行HTML编码;而防范CSRF,则应利用CSRF令牌。通过这些措施,帮助开发者有效提升应用安全性,确保网站稳定运行。
46 1
|
2月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,但安全挑战不容小觑。本文剖析Python Web应用中的三大安全威胁:SQL注入、XSS及CSRF,并提供防御策略。通过示例代码展示如何利用参数化查询、HTML转义与CSRF令牌构建安全防线,助您打造更安全的应用。安全是一场持久战,需不断改进优化。
40 3
|
2月前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
83 6

推荐镜像

更多