域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過(guò)
目前ecshop漏洞大面積爆發(fā),包括最新版的ecshop 3.0,ecshop 4.0,ecshop2.7.3全系列版本都存在著高危網(wǎng)站漏洞,導(dǎo)致網(wǎng)站被黑,被篡改,被掛馬,許多商城系統(tǒng)深受其漏洞的攻擊,給商城的運(yùn)營(yíng)者以及網(wǎng)站運(yùn)營(yíng)者帶來(lái)很大的經(jīng)濟(jì)損失,甚至有些ecshop還被跳轉(zhuǎn)到了一些惡意網(wǎng)站上去。那么ecshop漏洞如何修復(fù)呢?
首先我們要先了解下ecshop漏洞的發(fā)生根源,我們SINE安全工程師對(duì)其所有版本的代碼進(jìn)行了全面的人工安全檢測(cè),以及網(wǎng)站漏洞檢測(cè),發(fā)現(xiàn)ecshop根目錄下的user.php文件存在遠(yuǎn)程代碼執(zhí)行sql注入漏洞,我們對(duì)ecshop的user.php進(jìn)行查看,在302行里我們發(fā)現(xiàn)了安全問(wèn)題:
back_act這個(gè)變量的值來(lái)自于前端post提交方式的數(shù)據(jù)中,包含的http_referer這個(gè)函數(shù)里,這個(gè)函數(shù)可以插入惡意的sql注入代碼,為什么可以插入呢?原理很簡(jiǎn)單,ecshop商城使用的模板引擎是采用smarty引擎,這個(gè)引擎在國(guó)內(nèi)是比較有名的,大多數(shù)都會(huì)調(diào)用到一些常用的參數(shù),比如assign,display這兩個(gè)常用的引擎函數(shù),由于assign的函數(shù)是需要模板執(zhí)行的時(shí)候才能賦值,所以首先運(yùn)行的就是smarty模板引擎,前端會(huì)讀取模板文件然后將值給賦值到函數(shù)當(dāng)中去,那么傳遞過(guò)來(lái)的值就可以插入惡意的遠(yuǎn)程執(zhí)行代碼,并傳入到服務(wù)器端進(jìn)行執(zhí)行。
我們來(lái)看下模板引擎文件,如下圖所示:
從上圖中的函數(shù)echash,首先會(huì)調(diào)用一個(gè)user password的一個(gè)模板文件,在這個(gè)模板文件中來(lái)變量賦值,進(jìn)行模板引擎的解析操作,也就是說(shuō)會(huì)把引擎里的assign函數(shù)注冊(cè)到變量里去,并進(jìn)行模板解析,返回到insert_mod函數(shù)進(jìn)行網(wǎng)站交互處理。
ecshop漏洞利用 使用exp代碼,在post數(shù)據(jù)包中我們抓取一下,然后偽造referer:插入:
Referer: 554fcae493e564ee0dc75bdf2ebf94caads|a:2:
{s:3:”num”;s:72:”0,1 procedure analyse(extractvalue(rand(),concat
(0x7e,version())),1)– -“;s:2:”id”;i:1;}
這個(gè)是查詢(xún)數(shù)據(jù)庫(kù)版本的一個(gè)sql注入語(yǔ)句,執(zhí)行后會(huì)返回?cái)?shù)據(jù)到前端,如下圖:
上圖已經(jīng)返回了數(shù)據(jù)庫(kù)的版本信息,那么攻擊者就可以構(gòu)造遠(yuǎn)程代碼執(zhí)行數(shù)據(jù)庫(kù)操作,上傳木馬后門(mén)到網(wǎng)站里去,并進(jìn)行篡改網(wǎng)站即可。
ecshop 3.0版本的漏洞,是因?yàn)槁┒串a(chǎn)生的原因在于includes目錄下safety.php 文件,這個(gè)代碼文件主要是限制一些惡意參數(shù)的寫(xiě)入,會(huì)自動(dòng)匹配一些數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)句,不管是加密還是都會(huì)攔截這些惡意的參數(shù),包括數(shù)據(jù)庫(kù)的執(zhí)行語(yǔ)句,但是在整個(gè)代碼的安全檢測(cè)中我們發(fā)現(xiàn)這個(gè)ecshop3.0竟然可以執(zhí)行命令,利用playload進(jìn)行編碼繞過(guò),就可以執(zhí)行遠(yuǎn)程命令,包括可以使用union聯(lián)合查詢(xún)。
ecshop 漏洞修復(fù)
關(guān)于ecshop4.0 漏洞修復(fù)我們可以對(duì)根目錄下的includes文件夾下的lib_insert.php這個(gè)文件進(jìn)行編寫(xiě),將asrr [num]跟ID這兩個(gè)值,進(jìn)行強(qiáng)制的轉(zhuǎn)換成整數(shù)型,這樣導(dǎo)致SQL語(yǔ)句無(wú)法執(zhí)行了,就可以修復(fù)ecshop4.0版的漏洞,那么ecshop2.7.3以及.ecshop3.0版本的網(wǎng)站,目前官方并沒(méi)有漏洞修復(fù)補(bǔ)丁,建議網(wǎng)站運(yùn)營(yíng)者先將user.php改名,或者刪除,并對(duì)網(wǎng)站進(jìn)行防篡改部署,限制修改,只允許讀取操作,對(duì)網(wǎng)站進(jìn)行sql防注入部署,對(duì)http_referer里的值進(jìn)行非法參數(shù)攔截,并做攔截日志記錄,如果對(duì)安全不是太懂的話建議找專(zhuān)業(yè)的網(wǎng)站安全公司來(lái)修復(fù)漏洞,做好網(wǎng)站安全部署,國(guó)內(nèi)SINE安全公司,綠盟,啟明星辰,都是比較不錯(cuò)的安全公司。
申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!