Magento是一套開源的電子商務系統,是主要面向企業的應用,可處理電子商務各方面的需求,包括像購物、航運、產品評論等等,最終為建設一個多用途和適用面廣的電子商務網站提供幫助。
Magento項目小組目前已經發布補丁,修復Magento上一個高危的安全漏洞。
漏洞信息
這個漏洞是一個存儲型XSS,是安全廠商Sucuri于2015年11月10日發現的,可實施攻擊的場景為:當用戶注冊一個新賬戶時或者當用戶更改當前賬戶的郵件地址時等涉及到郵箱賬號提交的場景。
該問題關鍵在于CMS(內容管理系統)如何過濾在用戶側輸入的包含郵件地址信息的數據。據Sucuri的研究發現,Magento并沒有有效地對郵件地址中可能存在的惡意字符進行過濾。
這種不安全的數據過濾機制能夠讓攻擊者在輸入電子郵箱的同時附加上惡意代碼。
漏洞分析
這個問題存在于Magento中的app/design/adminhtml/default/default/template/sales/order/view/info.phtml
正如從上面的代碼段中看到的,template會將getcustomeremail方法的返回值(即用戶填入的郵箱地址)傳遞到管理面板上。而繼續我們的分析,在以下代碼段中也有所發現:
根據上述的代碼段編寫的規則,Magento可以接受兩種不同的郵件格式:
1、一種較為常見,沒有雙引號,沒有“<”符號等等;
2、另外一種,為引用字符串格式,它幾乎可以接受任何可打印字符,只要輸入數據的周圍有兩個雙引號。
此刻,從理論上,我們嘗試使用比如“>”@sucuri.net 作為用戶賬號郵箱,提交一個訂單,接著觀察當管理員在后臺管理面板上查看我們提交的訂單時會發生什么情況?
上圖的結果證實了我們的猜測,Magento確實存在一個XSS漏洞。
漏洞的易利用性
正如前面的POC結果展示的,如果攻擊者接著利用像上述所說的帶有惡意代碼的郵箱地址的賬戶下了一個訂單,當網站管理員在后臺打開這個訂單時,那么惡意代碼將會執行。而基于攻擊的原理,該漏洞其實對于任何攻擊者來說都是容易掌握利用的。
比如JS代碼能被用于訪問cookies,所以攻擊者可以通過竊取管理員的cookies,隨后用于非法訪問站點。當然,也可以實施其他的攻擊,攻擊的方式也取決于攻擊者的技術能力。
WordPress站點此前也面臨同樣問題
從原理上來看, 該漏洞類似于Sucuri在10月份發現的存在于 Jetpack WordPress plugin的一個XSS漏洞。Jetpack WordPress plugin的XSS漏洞同樣也是攻擊者可以通過將惡意代碼附加到郵箱地址,并通過反饋的形式發送到后臺,因此導致在后臺執行惡意代碼。
受影響版本
目前受影響的版本包括Magento 社區版1.9.2.3及更早版本,Magento 企業版 1.14.2.3及更早版本,當前的2.x版本并未受該問題的影響。
如果還運行著Magento的老版本,網站管理員需盡快升級在線商城。