com_fields組件出現(xiàn)漏洞,com_fields組件是在3.7版本添加的,如果你使用此版本,將受到影響,并應(yīng)盡快更新。這個(gè)組件可以公開訪問,意味著任何能訪問你站點(diǎn)的用戶都可以發(fā)起攻擊。
漏洞細(xì)節(jié)

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

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

用戶輸入傳入到list.fullordering,因?yàn)镕ieldsModelFields模型繼承JModelList類,它同樣也包含上面的代碼段。你可能會(huì)注意到它對(duì)內(nèi)容做了一些驗(yàn)證,然后相應(yīng)地設(shè)置list.direction和list.ordering,但是list.fullordering呢?

在switch語句之后,這個(gè)指令用我們可以控制的值來設(shè)置我們正在尋找的狀態(tài),不管它是否生成了一個(gè)有效的list.direction或者list.ordering狀態(tài)。
所以為了利用這個(gè)漏洞,攻擊者必須做的是為URL添加適當(dāng)?shù)膮?shù),以便注入嵌套的SQL查詢。
結(jié)論
這是一個(gè)嚴(yán)重的漏洞,請(qǐng)大家盡快更新!
|