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
本文来自云栖社区合作伙伴安全加,了解相关信息可以关注安全加网站
相关文章
|
2月前
|
SQL 安全 前端开发
Web学习_SQL注入_联合查询注入
联合查询注入是一种强大的SQL注入攻击方式,攻击者可以通过 `UNION`语句合并多个查询的结果,从而获取敏感信息。防御SQL注入需要多层次的措施,包括使用预处理语句和参数化查询、输入验证和过滤、最小权限原则、隐藏错误信息以及使用Web应用防火墙。通过这些措施,可以有效地提高Web应用程序的安全性,防止SQL注入攻击。
70 2
|
2月前
|
SQL 存储 算法
比 SQL 快出数量级的大数据计算技术
SQL 是大数据计算中最常用的工具,但在实际应用中,SQL 经常跑得很慢,浪费大量硬件资源。例如,某银行的反洗钱计算在 11 节点的 Vertica 集群上跑了 1.5 小时,而用 SPL 重写后,单机只需 26 秒。类似地,电商漏斗运算和时空碰撞任务在使用 SPL 后,性能也大幅提升。这是因为 SQL 无法写出低复杂度的算法,而 SPL 提供了更强大的数据类型和基础运算,能够实现高效计算。
|
3月前
|
SQL 存储 数据可视化
手机短信SQL分析技巧与方法
在手机短信应用中,SQL分析扮演着至关重要的角色
|
3月前
|
SQL 安全 数据库
sql注入技术
sql注入技术
|
4月前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
153 5
|
3月前
|
SQL 存储 安全
如何防护SQL注入
在互联网中,SQL注入攻击是网站和应用面临的主要安全威胁之一。攻击者通过在输入字段中插入恶意SQL代码,企图非法访问或操控数据库。防范措施包括限制查询长度、使用参数化查询、采用ORM框架、遵循最小权限原则、定期更新系统以及使用SCDN等专业安全产品,以增强防护能力,保护数据安全。
|
4月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
92 5
|
4月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,但安全挑战不容小觑。本文剖析Python Web应用中的三大安全威胁:SQL注入、XSS及CSRF,并提供防御策略。通过示例代码展示如何利用参数化查询、HTML转义与CSRF令牌构建安全防线,助您打造更安全的应用。安全是一场持久战,需不断改进优化。
63 3
|
4月前
|
SQL 安全 数据安全/隐私保护
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
在构建Python Web应用时,安全性至关重要。本文通过三个真实案例,探讨了如何防范SQL注入、XSS和CSRF攻击。首先,通过参数化查询替代字符串拼接,防止SQL注入;其次,利用HTML转义机制,避免XSS攻击;最后,采用CSRF令牌验证,保护用户免受CSRF攻击。这些策略能显著增强应用的安全性,帮助开发者应对复杂的网络威胁。安全是一个持续的过程,需不断学习新知识以抵御不断变化的威胁。
143 1
|
4月前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
在Python Web开发中,构建安全应用至关重要。本文通过问答形式,详细解析了三种常见Web安全威胁——SQL注入、XSS和CSRF,并提供了实用的防御策略及示例代码。针对SQL注入,建议使用参数化查询;对于XSS,需对输出进行HTML编码;而防范CSRF,则应利用CSRF令牌。通过这些措施,帮助开发者有效提升应用安全性,确保网站稳定运行。
71 1

推荐镜像

更多