com_fields組件出現漏洞,com_fields組件是在3.7版本添加的,如果你使用此版本,將受到影響,并應盡快更新。這個組件可以公開訪問,意味著任何能訪問你站點的用戶都可以發起攻擊。
漏洞細節

從上圖的代碼可以看出,它使用JPATH_COMPONENT_ADMINISTRATOR常量值設置$config['base_path']變量,該值代表管理員組件目錄的本地路徑,當訪問的view是fields,layout是modal的時候,程序會從JPATH_ADMINISTRATOR中加載com_fields,這就意味著普通用戶可以通過這樣的請求來使用管理員的com_fields,構造URL如下所示:
/index.php?option=com_fields&view=fields&layout=modal
訪問此URL可以根據各種參數進行排序的站點上可用的所有自定義字段的列表。
這是唯一可以訪問的管理員views字段, 將從管理員models獲取數據(我們前面討論的$config['base_path'])。在這種情況下,我們發現的漏洞位于.MarchModelFields模型(model)的./administrator/components/com_fields/models/fields.php中。
經查找,出問題方法是getListQuery。

如果不熟悉Joomla!處理SQL查詢,$query->order()是一個方法,其輸入將被連接到一個查詢的ORDER BY語句,假如我們未經檢測的用戶帶到這里,看看會發生什么樣的事情。

用戶輸入傳入到list.fullordering,因為FieldsModelFields模型繼承JModelList類,它同樣也包含上面的代碼段。你可能會注意到它對內容做了一些驗證,然后相應地設置list.direction和list.ordering,但是list.fullordering呢?

在switch語句之后,這個指令用我們可以控制的值來設置我們正在尋找的狀態,不管它是否生成了一個有效的list.direction或者list.ordering狀態。
所以為了利用這個漏洞,攻擊者必須做的是為URL添加適當的參數,以便注入嵌套的SQL查詢。
結論
這是一個嚴重的漏洞,請大家盡快更新!
|