天天看點

PHP網站有漏洞怎麼修複和查找漏洞

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

ecshop 漏洞詳情

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

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

PHP網站有漏洞怎麼修複和查找漏洞

從上面的代碼可以看出,使用者在登入的時候會先将變量值action傳入到login進行指派變成登入的主要代碼,當登入請求的時候,系統會将referer裡的值傳遞給back_act這個參數裡,導緻網站漏洞發生,由于傳入的參數可以傳遞給assign的函數中去,導緻模闆注冊給改變了變量,可以插入跨站腳本攻擊代碼進去,直接插入到html檔案裡。

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

PHP網站有漏洞怎麼修複和查找漏洞

網站系統的攔截規則寫的非常簡單,隻是過濾了常用的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的安全檢測,該漏洞的使用需要使用者點選圖檔才可以使漏洞正常使用。

PHP網站有漏洞怎麼修複和查找漏洞

關于ecshop網站漏洞的修複建議:

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

繼續閱讀