目前ecshop漏洞大面積爆發,包括最新版的ecshop 3.0,ecshop 4.0,ecshop2.7.3全系列
版本都存在著高危網站漏洞,導致網站被駭,被篡改,被掛馬,許多商城系統深受其漏洞的攻
擊,給商城的運營者以及網站運營者帶來很大的經濟損失,甚至有些ecshop還被跳轉到了一些
惡意網站上去。那麼ecshop漏洞如何修復呢?
首先我們要先瞭解下ecshop漏洞的發生根源,我們eSafe白帽資安網工程師對其所有版本的代碼進行
了全面的人工安全檢測,以及網站漏洞檢測,發現ecshop根目錄下的user.php文件存在遠程
代碼執行sql注入漏洞,我們對ecshop的user.php進行查看,在302行裡我們發現了安全問題:
了全面的人工安全檢測,以及網站漏洞檢測,發現ecshop根目錄下的user.php文件存在遠程
代碼執行sql注入漏洞,我們對ecshop的user.php進行查看,在302行裡我們發現了安全問題:
back_act這個變量的值來自於前端post提交方式的數據中,包含的http_referer這個函數里,
這個函數可以插入惡意的sql注入代碼,為什麼可以插入呢?原理很簡單,ecshop商城使用的
模板引擎是採用smarty引擎,這個引擎在國內是比較有名的,大多數都會調用到一些常用的
參數,比如assign,display這兩個常用的引擎函數,由於assign的函數是需要模板執行的時候
才能賦值,所以首先運行的就是smarty模板引擎,前端會讀取模板文件然後將值給賦值到函
數當中去,那麼傳遞過來的值就可以插入惡意的遠程執行代碼,並傳入到主機端進行執行。
這個函數可以插入惡意的sql注入代碼,為什麼可以插入呢?原理很簡單,ecshop商城使用的
模板引擎是採用smarty引擎,這個引擎在國內是比較有名的,大多數都會調用到一些常用的
參數,比如assign,display這兩個常用的引擎函數,由於assign的函數是需要模板執行的時候
才能賦值,所以首先運行的就是smarty模板引擎,前端會讀取模板文件然後將值給賦值到函
數當中去,那麼傳遞過來的值就可以插入惡意的遠程執行代碼,並傳入到主機端進行執行。
我們來看下模板引擎文件,如下圖所示:
從上圖中的函數echash,首先會調用一個user password的一個模板文件,在這個模板文件中
來變量賦值,進行模板引擎的解析操作,也就是說會把引擎裡的assign函數註冊到變量裡去,
並進行模板解析,返回到insert_mod函數進行網站交互處理。
來變量賦值,進行模板引擎的解析操作,也就是說會把引擎裡的assign函數註冊到變量裡去,
並進行模板解析,返回到insert_mod函數進行網站交互處理。
ecshop漏洞利用 使用exp代碼,在post數據包中我們抓取一下,然後偽造referer:插入:
Referer: 554fcae493e564ee0dc75bdf2ebf94caads|a:2:
Referer: 554fcae493e564ee0dc75bdf2ebf94caads|a:2:
{s:3:”num”;s:72:”0,1 procedure analyse(extractvalue(rand(),concat
(0x7e,version())),1)– -“;s:2:”id”;i:1;}
這個是查詢數據庫版本的一個sql注入語句,執行後會返回數據到前端,如下圖:
上圖已經返回了數據庫的版本信息,那麼攻擊者就可以構造遠程代碼執行數據庫操作,上傳
木馬後門到網站裡去,並進行篡改網站即可。
木馬後門到網站裡去,並進行篡改網站即可。
ecshop 3.0版本的漏洞,是因為漏洞產生的原因在於includes目錄下safety.php 文件,這個
代碼文件主要是限制一些惡意參數的寫入,會自動匹配一些數據庫查詢語句,不管是加密
還是base64都會攔截這些惡意的參數,包括數據庫的執行語句,但是在整個代碼的安全檢
測中我們發現這個ecshop3.0竟然可以執行命令,利用playload進行編碼繞過,就可以執行
遠程命令,包括可以使用union聯合查詢。
代碼文件主要是限制一些惡意參數的寫入,會自動匹配一些數據庫查詢語句,不管是加密
還是base64都會攔截這些惡意的參數,包括數據庫的執行語句,但是在整個代碼的安全檢
測中我們發現這個ecshop3.0竟然可以執行命令,利用playload進行編碼繞過,就可以執行
遠程命令,包括可以使用union聯合查詢。
ecshop 漏洞修復
關於ecshop4.0 漏洞修復我們可以對根目錄下的includes文件夾下的lib_insert.php這個文件
進行編寫,將asrr [num]跟ID這兩個值,進行強制的轉換成整數型,這樣導致SQL語句無法
執行了,就可以修復ecshop4.0版的漏洞,那麼ecshop2.7.3以及.ecshop3.0版本的網站,
目前官方並沒有漏洞修復補丁,建議網站運營者先將user.php改名,或者刪除,並對網站進
行防篡改部署,限制修改,只允許讀取操作,對網站進行sql防注入部署,對http_referer裡
的值進行非法參數攔截,並做攔截日誌記錄,如果對安全不是太懂的話建議找專業的網站
安全公司來修復漏洞,做好網站安全部署,國內eSafe白帽資安網公司,綠盟,啟明星辰,都是比
較不錯的安全公司。
進行編寫,將asrr [num]跟ID這兩個值,進行強制的轉換成整數型,這樣導致SQL語句無法
執行了,就可以修復ecshop4.0版的漏洞,那麼ecshop2.7.3以及.ecshop3.0版本的網站,
目前官方並沒有漏洞修復補丁,建議網站運營者先將user.php改名,或者刪除,並對網站進
行防篡改部署,限制修改,只允許讀取操作,對網站進行sql防注入部署,對http_referer裡
的值進行非法參數攔截,並做攔截日誌記錄,如果對安全不是太懂的話建議找專業的網站
安全公司來修復漏洞,做好網站安全部署,國內eSafe白帽資安網公司,綠盟,啟明星辰,都是比
較不錯的安全公司。