近日,我們防御吧在對客戶的網(wǎng)站進(jìn)行網(wǎng)站漏洞檢測與修復(fù)發(fā)現(xiàn)該網(wǎng)站存在嚴(yán)重的sql注入漏洞以及上傳webshell木馬文件漏洞,該網(wǎng)站使用的是某CMS系統(tǒng),采用PHP語言開發(fā),mysql數(shù)據(jù)庫的架構(gòu),該網(wǎng)站源碼目前是開源的狀態(tài)。
某CMS是專注于提供付費(fèi)知識的社交CMS系統(tǒng),知識付費(fèi)在目前的互聯(lián)網(wǎng)中有這很高的需求,該系統(tǒng)可以對文檔進(jìn)行分享,收費(fèi)下載,用戶發(fā)布的知識內(nèi)容可以隱藏,提供給付費(fèi)客戶閱讀。代碼比較精簡深受廣大站長們的喜歡,該網(wǎng)站漏洞主要發(fā)生在上傳壓縮包的同時(shí),構(gòu)造惡意解壓代碼講zip包里的webshell解壓到指定目錄,導(dǎo)致漏洞發(fā)生。該CMS還存在sql注入漏洞,我們一一的來詳細(xì)分解漏洞。
SQL注入漏洞詳情與修復(fù)方案
對網(wǎng)站的代碼數(shù)據(jù)庫配置文件進(jìn)行查看,看到數(shù)據(jù)庫的連接函數(shù)使用的是pdo模式,再仔細(xì)的追蹤代碼查看到還使用了一些特殊符號的轉(zhuǎn)義操作,有些sql注入代碼并沒有對齊進(jìn)行全面的安全過濾,導(dǎo)致發(fā)生sql注入攻擊,代碼截圖如下:

以上代碼使用就是select查詢功能,我們著重的來看下他的cond函數(shù),通過對代碼的詳細(xì)查看確定這個(gè)函數(shù)是用來對接前端的用戶寫入的值,當(dāng)前端用戶提交惡意的代碼的時(shí)候就會傳入到id這個(gè)值當(dāng)中,我們來拼接SQL語句,對id的值進(jìn)行變量覆蓋操作,可以配合IN,like等sql語句來進(jìn)行攻擊數(shù)據(jù)庫,查看數(shù)據(jù)庫的賬號密碼,以及修改數(shù)據(jù)庫。
對sql注入漏洞的修復(fù),在GET請求,以及POST請求里,過濾非法字符的輸入!痔栠^濾 --過濾%20特殊字符過濾,單引號過濾,%百分號,and過濾,tab鍵值等的的安全過濾。啟用php魔術(shù),防止一些非法參數(shù)進(jìn)行傳輸以及構(gòu)造。
網(wǎng)站上傳webshell漏洞
網(wǎng)站是公開免費(fèi)注冊用戶的,也算是普通的用戶,在對其上傳功能進(jìn)行全面的安全檢測的時(shí)候發(fā)現(xiàn)存在上傳zip壓縮包的漏洞,上傳doc等文件是需要審核,但是zip直接寫入到數(shù)據(jù)庫中,我們通過上面發(fā)現(xiàn)的sql注入漏洞對數(shù)據(jù)庫進(jìn)行查看,可以看到zip的文件地址。

如何上傳webshell,我們通過sql注入漏洞查詢到網(wǎng)站后臺的管理員賬號密碼,登錄網(wǎng)站后臺,后臺的各項(xiàng)功能都不存在漏洞,但是在查看源碼當(dāng)中發(fā)現(xiàn)有一段可以對zip文件解壓的功能代碼,無需使用用戶權(quán)限就可以進(jìn)行解壓,那么我們來構(gòu)造參數(shù)直接對該解壓代碼文件進(jìn)行訪問,post請求過去,直接將我們的zip文件解壓到了當(dāng)前文件中,我們就可以將我們的webshell木馬上傳上去。
關(guān)于網(wǎng)站上傳漏洞的修復(fù),建議管理員關(guān)閉掉解壓功能,或者對其解壓的文件進(jìn)行權(quán)限判斷,是管理員用戶有解壓功能,還是普通會員權(quán)限擁有解壓文檔的權(quán)限,對權(quán)限進(jìn)行合理的安全分配,再一個(gè)對上傳的目錄進(jìn)行無腳本權(quán)限設(shè)置,防止webshell木馬后門的運(yùn)行。如果您對網(wǎng)站漏洞修復(fù)不熟悉的話,建議找專業(yè)的網(wǎng)站安全公司幫您修復(fù)網(wǎng)站漏洞.