ECShop 4.0漏洞 偽造函數跨站攻擊利用與漏洞修復
ecshop目前最新版本為4.0,是國內開源的一套商城系統,很多外貿公司,以及電商平臺
都在使用,正因為使用的人數較多,很多攻擊者都在挖掘該網站的漏洞,就在最近ecshop被爆
出高危漏洞,該漏洞利用跨站偽造函數,來對網站資料庫進行攻擊。
ecshop 漏洞詳情
該網站漏洞發生的根本原因是根目錄下的user.php檔,在第315-365行裡的代碼裡,該代碼主
要是處理用戶註冊,用戶登錄的一些功能請求處理,與資料庫進行通信查詢使用者的帳號密碼是否
正確,以及寫入資料庫中使用者的註冊資料等資訊。我們使用一台windows2008伺服器來搭建下
ecshop系統的環境,我們使用IIS7.5+mysql資料庫,php的版本為5.3,在官方下載最新版。
我們來看下發生問題的user.php代碼,如下圖:
從上面的代碼可以看出,用戶在登錄的時候會先將變數值action傳入到login進行賦值變成登錄的
主要代碼,當登錄請求的時候,系統會將referer裡的值傳遞給back_act這個參數裡,導致網站漏
洞發生,由於傳入的參數可以傳遞給assign的函數中去,導致範本註冊給改變了變數,可以插入
跨站腳本攻擊代碼進去,直接插入到html檔裡。
本身ecshop網站,當初設計的時候就有安全攔截系統,對一些非法的參數,攻擊代碼進行了強制
的轉換與攔截,有一些安全的攔截規則,我們可以從includes目錄下的safety.php檔可以看出來
,如下圖:
網站系統的攔截規則寫的非常簡單,只是過濾了常用的html標籤以及eval一句話代碼的特徵,一
些敏感的特殊字元,像《》*%#都攔截掉了。但是ecshop官方疏忽了JS跨站彈窗的一個函數,
confirm可以直接插入代碼進行使用,漏洞的使用就是繞過ecshop安全攔截規則,把攻擊代碼直
接寫入到html裡。我們可以使用html的編碼方式進行繞過,構造如下的代碼:
GET /ECShop4.0/user.php
HTTP/1.1
Referer:https://safe.com" /><a href=javascript:alert
('Cyc1e_test')><imgsrc="xxxxx
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21
(KHTML, like Gecko)Chrome/41.0.2228.0
Safari/537.21Cookie:ECS_ID=17b608d2a679cf2c7e8611581478e6929dbfb34b;ECS
[visit_times]=2Connection:keep-aliveAccept: */*Accept-
Encoding:gzip,deflateHost: safe.com
利用get的提交方式將我們構造的惡意程式碼寫入到資料包中,提交到網站裡。這樣直接繞過了
ecshop的安全檢測,該漏洞的使用需要使用者點擊圖片才可以使漏洞正常使用。
關於ecshop網站漏洞的修復建議:
對ecshop safety.php檔進行安全過濾,對#97以及href,script,進行強制的攔截,html實體編
碼也進行攔截,如果對代碼不是太懂的話,也可以對範本檔進行安全許可權限制,ecshop官方
目前沒有對此跨站漏洞進行漏洞修復與升級補丁,建議使用4.0版本的網站,刪除user.php註冊功
能,如果自己懂程式,那就可以自己針對代碼的漏洞進行ecshop漏洞修復,不懂的話,可以找專
業的網站安全公司來修復ecshop漏洞,國內像esafe安全、綠盟安全、啟明星辰都是比較專業的
安全公司,很多攻擊者之所以能植入木馬病毒,就是抓住了ecshop網站代碼上的漏洞