天天看點

Zabbix 再次被爆出存在 SQL 注入漏洞,影響雲上數百網站

        昨晚,zabbix 被爆出一個高危的 sql 注入漏洞。這個漏洞本身需要登入觸發,但因為大部分 zabbix 都啟用了 guest 賬号,導緻訪客在通路 zabbix 時預設都會帶上 guest 權限。有了 guest 權限後,觸發這個漏洞的條件“需要登入”就不存在了,相當于一個前台的 sql 注入漏洞<b>。是以,外部媒體轉載的文章中“無需登入”實際上是不嚴謹的說法。</b>

        由漏洞作者提供的 poc 得知,漏洞存在于 jsrpc.php 檔案中。發送到此檔案的所有參數會傳入 cscreenbuilder 中進行處理,過程中調用 cscreenbase 類的 calculatetime 方法的時候使用了 $options['profileidx2'],profileidx2 的值最終在 cprofile 的 flush() 函數内帶入到資料庫 insert 操作中。由于在傳入過程中沒有對參數内容進行過濾,最終導緻了 sql 注入漏洞的産生。

        雲盾在昨晚對雲上運作 zabbix 服務的機器進行安全掃描,發現開啟 guest 預設使用者且存在此漏洞的 ip 數量達到數百個,存在風險的 zabbix 服務數量占總數的一半以上。

       此外,官方公告中列出的漏洞影響範圍包括以下版本:

zabbix 2.2.x

zabbix 3.0.0 - 3.0.3

        而雲盾的掃描結果顯示,受漏洞影響的版本号一共 26 個,經過聚合後實際上的影響範圍如下:

<b>zabbix 2.0.x</b>

<b>zabbix 2.2.x</b>

<b>zabbix 2.4.x</b>

<b>zabbix 3.0.0 - 3.0.3</b>

        官方公告範圍不完整的原因,大概是因為漏洞作者在測試漏洞的時候沒有對所有版本進行測試,導緻漏掉了部分版本。

         1、在 zabbix 目錄中找到 frontends/php/include/classes/user/cprofile.php 檔案,定位代碼:

         把裡面的 $idx2 改為 intval($idx2)  。

         2、前往 zabbix 背景“管理”欄目中禁用 guest 使用者。

         3、更新 zabbix 到 3.0.4 或更高版本。