本發(fā)明涉及一種識別漏洞的方法,具體涉及一種識別Web程序漏洞的方法。
背景技術(shù):
現(xiàn)有識別通用Web程序漏洞的方法,是通過收集網(wǎng)絡(luò)上已公開的通用Web程序的漏洞,分析Payload(針對漏洞觸發(fā)點(diǎn)的攻擊利用代碼)關(guān)鍵特征,然后建立漏洞庫,并在日志中用這些特征匹配請求日志,未被匹配上的請求日志也可能會存在0day(未公開的漏洞),需要人工進(jìn)一步分析;這種方法的思路類似殺毒軟件病毒特征庫,全程需要大量人工干預(yù),如:收集漏洞、提取Payload特征、分析未能匹配上的日志,都需要耗費(fèi)大量人力成本;而且還可能存在特征誤報(bào),Payload需要反復(fù)做抽檢才可以提高精度。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明公開了一種可以減輕人力成本,提高準(zhǔn)確率的識別Web程序漏洞的方法。
本發(fā)明采用的技術(shù)方案是:一種識別Web程序漏洞的方法,包括以下步驟:
A、獲取HTTP請求日志,選擇其中使用通用Web程序網(wǎng)站的日志;
B、將日志還原成HTTP請求格式,并將HTTP協(xié)議的Host字段修改為Web運(yùn)行環(huán)境的地址;
C、將還原后的HTTP置于Web運(yùn)行環(huán)境中,對函數(shù)的調(diào)用和SQL語句執(zhí)行進(jìn)行記錄;
D、如果調(diào)用了危險(xiǎn)函數(shù)或SQL語句有構(gòu)造SQL注入攻擊,則有漏洞觸發(fā)。
進(jìn)一步的,所述危險(xiǎn)函數(shù)指調(diào)用系統(tǒng)命令、執(zhí)行任意代碼的函數(shù)。
進(jìn)一步的,所述危險(xiǎn)函數(shù)包括system、exec、passthru和eval。
進(jìn)一步的,所述步驟C中Web運(yùn)行環(huán)境預(yù)先將底層函數(shù)調(diào)用和最終執(zhí)行的SQL語句輸出到文件中。
進(jìn)一步的,所述步驟A中從CDN節(jié)點(diǎn)獲取HTTP請求日志。
本發(fā)明的有益效果是:
(1)本發(fā)明可以從是否觸發(fā)漏洞行為來判斷是否是未知漏洞,對未知漏洞的識別率更高;
(2)本發(fā)明可以不必建立漏洞庫,減輕人力成本。
附圖說明
圖1為本發(fā)明流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對本發(fā)明做進(jìn)一步說明。
如圖1所示,一種識別Web程序漏洞的方法,包括以下步驟:
A、獲取HTTP請求日志,選擇其中使用通用Web程序網(wǎng)站的日志(例如Discuz!);
B、將日志還原成HTTP請求格式,并將HTTP協(xié)議的Host字段修改為Web運(yùn)行環(huán)境的地址;
C、將還原后的HTTP置于Web運(yùn)行環(huán)境中,對函數(shù)的調(diào)用和SQL語句執(zhí)行進(jìn)行記錄;
D、如果調(diào)用了危險(xiǎn)函數(shù)或SQL語句有構(gòu)造SQL注入攻擊,則有漏洞觸發(fā)。
進(jìn)一步的,所述危險(xiǎn)函數(shù)指調(diào)用系統(tǒng)命令、執(zhí)行任意代碼的函數(shù)。
進(jìn)一步的,所述危險(xiǎn)函數(shù)包括system、exec、passthru和eval;當(dāng)然并不限于列舉的這幾種函數(shù),也可以包括其他函數(shù)。
進(jìn)一步的,所述步驟C中Web運(yùn)行環(huán)境預(yù)先將底層函數(shù)調(diào)用和最終執(zhí)行的SQL語句輸出到文件中。
進(jìn)一步的,所述步驟A中從CDN節(jié)點(diǎn)獲取HTTP請求日志。
本發(fā)明將Web日志還原為正常HTTP請求到特定的Web環(huán)境中,看是否觸發(fā)漏洞行為來判斷是否是未知漏洞,從而減輕人力成本,并提高挖掘的準(zhǔn)確率;首先部署Web程序的運(yùn)行環(huán)境,該平臺運(yùn)行著通用的Web應(yīng)用程序,例如Discuz??;將收集的HTTP日志還原成完整的HTTP請求,將請求到事先布置好的Web運(yùn)行環(huán)境;Web運(yùn)行環(huán)境直線對底層的函數(shù)調(diào)用、最終執(zhí)行的SQL語句等關(guān)鍵調(diào)用信息單獨(dú)輸出到文件中;Web運(yùn)行環(huán)境會對語言的關(guān)鍵函數(shù)調(diào)用、SQL語句進(jìn)行記錄,最后通過分析調(diào)用的函數(shù)和SQL語句,判斷是否有漏洞出發(fā);使用此方法可以還原攻擊“現(xiàn)場”,通過回訪請求的方式發(fā)現(xiàn)其中的“0day攻擊”能將未知漏洞識別工作80%以上自動化。
文中:CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò);SQL全稱是Structured Query Language,結(jié)構(gòu)化查詢語言;Discuz!全稱是Crossday Discuz!Board是一套通用的社區(qū)論壇軟件系統(tǒng);system、exec、passthru和eval是一種windows操作系統(tǒng)下的函數(shù)語言。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。