新聞中心
前言: Ecshop是國內(nèi)的一款開源的電商框架,在國內(nèi)應用較為廣泛,當前新版本為4.0.0,最近對其代碼進行了簡單的分析,發(fā)現(xiàn)可以繞過其filter觸發(fā)XSS。

一、漏洞利用方式
發(fā)送GET請求包如下:
其中漏洞觸發(fā)代碼為:
- Referer:https://127.0.0.1" />
實現(xiàn)繞過過濾規(guī)則,觸發(fā)XSS漏洞的效果。
二、相關(guān)環(huán)境
版本:ECShop4.0.0
漏洞類型:反射型XSS
本地環(huán)境:php5.6.27+ Apache + Mysql
三、漏洞分析
該XSS漏洞路口點在user.php文件,查看user.php:328行
在用戶登入界面的處理代碼中,首先變量$action賦值為login進入主體代碼,若變量$back_act為空并且請求包中存在REFERER字段,則將REFERER字段中的內(nèi)容賦值給變量$back_act,這是導致該漏洞的直接原因,對$back_act變量賦值過后傳入assign函數(shù)進行處理,其中$smarty是模版類cls_template的實例化:/includes/init.php:170行
所以查看assign函數(shù)時跟進到模版類cls_template中查看:/includes/ cls_template.php:70行
對傳入變量名和變量值進行變量注冊,我們可以傳入非數(shù)組數(shù)據(jù)對$back_act進行變量注冊,注冊完畢回到user.php代碼,繼續(xù)跟進模版類中的display函數(shù):/includes/ cls_template.php:100行
調(diào)用fetch函數(shù)進行user_passport.dwt文件的頁面顯示,也就是顯示用戶登入頁面,其中在user_passport.dwt文件中:
$back_act值被賦值給input標簽中的value,所以我們控制了$back_act變量值便可以在html頁面中插入js代碼。
四、繞過全局Waf觸發(fā)XSS
Ecshop中定義了全局安全過濾規(guī)則,查看代碼:/includes/safety.php
這個過濾規(guī)則比較簡單粗暴,利用’on[a-zA-Z]{3,15}’ 過濾了所有的on開頭js事件,所以用事件觸發(fā)是較為困難了,并且
其中javascript:alert(‘Cyc1e_test’)可以繞過xss過濾規(guī)則的匹配從而繞過服務端的安全過濾植入html頁面中,經(jīng)過html編碼解析會恢復成javascript:alert(‘Cyc1e_test’),從而觸發(fā)執(zhí)行,效果如圖:
通過點擊圖片可以直接觸發(fā)
漏洞繞過觸發(fā)的方式不僅有的。
五、總結(jié)
漏洞挖掘主要在于一定的技術(shù)基礎(chǔ),充分的經(jīng)驗積累以及一些運氣所在,挖掘的漏洞不在大小,每一漏洞都是一次成長,新手挖掘文章,希望大牛們批評指正。
文章標題:ECShop 4.0反射型XSS漏洞分析
當前路徑:http://www.5511xx.com/article/cdshhoc.html


咨詢
建站咨詢
