網站漏洞修補之ECshop4.0跨站指令碼攻擊修復

網站安全發表於2019-03-25

ecshop目前最新版本為4.0,是國內開源的一套商城系統,很多外貿公司,以及電商平臺都在使用,正因為使用的人數較多,很多攻擊者都在挖掘該網站的漏洞,就在最近ecshop被爆出高危漏洞,該漏洞利用跨站偽造函式,來對網站資料庫進行攻擊。

ecshop 漏洞詳情

該網站漏洞發生的根本原因是根目錄下的user.php檔案,在第315-365行裡的程式碼裡,該程式碼主要是處理使用者註冊,使用者登入的一些功能請求處理,與資料庫進行通訊查詢使用者的賬號密碼是否正確,以及寫入資料庫中使用者的註冊資料等資訊。我們使用一臺windows2008伺服器來搭建下ecshop系統的環境,我們使用IIS7.5+mysql資料庫,php的版本為5.3,在官方下載最新版。

我們來看下發生問題的user.php程式碼,如下圖:

網站漏洞修補之ECshop4.0跨站指令碼攻擊修復

從上面的程式碼可以看出,使用者在登入的時候會先將變數值action傳入到login進行賦值變成登入的主要程式碼,當登入請求的時候,系統會將referer裡的值傳遞給back_act這個引數裡,導致網站漏洞發生,由於傳入的引數可以傳遞給assign的函式中去,導致模板註冊給改變了變數,可以插入跨站指令碼攻擊程式碼進去,直接插入到html檔案裡。

本身ecshop網站,當初設計的時候就有安全攔截系統,對一些非法的引數,攻擊程式碼進行了強制的轉換與攔截,有一些安全的攔截規則,我們可以從includes目錄下的safety.php檔案可以看出來,如下圖:

網站漏洞修補之ECshop4.0跨站指令碼攻擊修復

網站系統的攔截規則寫的非常簡單,只是過濾了常用的html標籤以及eval一句話程式碼的特徵,一些敏感的特殊字元,像《》*%#都攔截掉了。但是ecshop官方疏忽了JS跨站彈窗的一個函式,confirm可以直接插入程式碼進行使用,漏洞的使用就是繞過ecshop安全攔截規則,把攻擊程式碼直接寫入到html裡。我們可以使用html的編碼方式進行繞過,構造如下的程式碼:

GET /ECShop4.0/user.php

HTTP/1.1

Referer:" /><a href=j&#97v&#97:&#97lert

('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:

利用get的提交方式將我們構造的惡意程式碼寫入到資料包中,提交到網站裡。這樣直接繞過了ecshop的安全檢測,該漏洞的使用需要使用者點選圖片才可以使漏洞正常使用。

網站漏洞修補之ECshop4.0跨站指令碼攻擊修復

關於ecshop網站漏洞的修復建議:

對ecshop safety.php檔案進行安全過濾,對#97以及href,,進行強制的攔截,html實體編碼也進行攔截,如果對程式碼不是太懂的話,也可以對模板檔案進行安全許可權限制,ecshop官方目前沒有對此跨站漏洞進行漏洞修復與升級補丁,建議使用4.0版本的網站,刪除user.php註冊功能,如果自己懂程式,那就可以自己針對程式碼的漏洞進行ecshop漏洞修復,不懂的話,可以找專業的網站安全公司來修復ecshop漏洞,國內像SINE安全、綠盟安全、啟明星辰都是比較專業的安全公司,很多攻擊者之所以能植入木馬病毒,就是抓住了ecshop網站程式碼上的漏洞。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31542418/viewspace-2639275/,如需轉載,請註明出處,否則將追究法律責任。

相關文章