基于模糊測試的web漏洞自動挖掘方法
【技術領域】
[0001]本發明屬于網絡與信息安全技術領域,是針對web應用軟件漏洞挖掘的一種新的方法。
【背景技術】
[0002]Web應用軟件安全漏洞是一個web系統的各個組件(包括web應用、web服務、數據庫等)在設計、實現以及安全策略上存在的安全缺陷。Owasp基金會將它稱之為威脅,2013年統計的最新web十大威脅主要是:注入,有問題的鑒別和會話管理,跨站腳本攻擊,不安全的直接對象的引用,安全配置錯誤,暴露敏感數據,函數級訪問控制缺失,跨站請求偽造(CSRF),使用存在已知的漏洞的組件,未驗證的重定向。
[0003]目前發現web漏洞的方法主要有:靜態分析技術和動態分析技術。靜態分析技術是在不運行目標系統的條件下,通過直接分析系統的源代碼或編譯后的二進制代碼,挖掘系統脆弱性的分析測試技術。現有的靜態分析方法主要有:詞法分析、語法分析、語義分析以及數據流分析等。動態分析技術有別于靜態分析技術,主要在目標系統運行過程中,通過測試向量,檢測系統的特定信息,由此判定系統脆弱性問題的分析測試技術。由于動態分析技術在對目標系統進行測試過程中,沒有近似估計和模型抽象處理。因此,其分析結果是絕對精準的。
[0004]web模糊測試可以分為人工模糊測試和自動化工具測試。在web應用方面的人工模糊測試是指安全人員通過經驗修改http報文等進行的滲透測試,人工模糊測試因為人的參與,最為智能,但其缺點是不能徹底的發現漏洞,且需要有經驗的web滲透測試工程師參與;自動化工具測試則是通過基于web模糊測試框架的工具測試,這種方法測試效率高,缺點是誤報率相對較高,需要少量人工的參與。
【發明內容】
[0005]本發明的目的在于提供一種基于模糊測試的漏洞自動挖掘系統,用于解決上述現有技術的問題。
[0006]本發明一種基于模糊測試的漏洞自動挖掘系統,其中,包括:模糊測試向量生成模塊、模糊測試模塊、異常分析模塊、服務器以及爬蟲模塊;模糊測試向量生成模塊,用于生成能夠與該服務器通信的報文或請求,作為模糊測試的輸入的測試向量;爬蟲模塊,用于通過爬蟲獲取所有的該服務器上所有URL文件;模糊測試模塊,包括:該執行主體,用于將獲取的URL文件與測試向量合成,并進行測試;以及該異常監控,用于獲取該執行主體測試過程中的異常信息;異常分析模塊,用于根據該執行主體測試過程中的異常信息,對其中出現的漏洞所引起的異常進一步排查,確定發現的漏洞及漏洞類型。
[0007]根據本發明的基于模糊測試的web漏洞自動挖掘系統的一實施例,其中,該服務器具有服務器端監控模塊,用于監控服務器端在測試過程中的異常。
[0008]根據本發明的基于模糊測試的web漏洞自動挖掘系統的一實施例,其中,該爬蟲模塊采用的對網站所有路徑進行掃描的方法,從根目錄開始,提取出網站所有頁面的標簽包含href和src的關鍵字,通過href和src關鍵字獲取頁面的相對路徑,將獲取頁面的路徑提取出來組合成URL,并將所有的URL進行過濾處理,去掉其中的死鏈接和重復的鏈接,供后續的執行模糊測試使用。
[0009]根據本發明的基于模糊測試的web漏洞自動挖掘系統的一實施例,其中,測試向量生成包括模糊測試向量生成和web模糊測試向量知識庫兩種方式,Web模糊測試向量知識庫是預存的測試向量;該智能模糊測試向量在已有測試向量知識庫的基礎上,將其作為第一代個體,運用遺傳算法幫助進行web模糊測試向量生成。
[0010]根據本發明的基于模糊測試的web漏洞自動挖掘系統的一實施例,其中,該模塊測試模塊采用HTTP通信的方式,執行主體自動提交http請求給服務端進行測試。
[0011]根據本發明的基于模糊測試的web漏洞自動挖掘系統的一實施例,其中,該異常分析模塊用于分析http響應內容、http響應的狀態碼、web服務器的出錯信息、斷開連接、日志文件和事件日志。
[0012]綜上,本發明基于模糊測試的web漏洞自動挖掘系統,解決了人工發現web應用的缺陷或漏洞過程中低效率且需要過多人工參與的問題。通過使用模糊測試向量對web應用服務進行模糊測試,從而發現web應用存在的漏洞。
【附圖說明】
[0013]圖1所示為針對web應用進行模糊測試的系統的示意圖;
[0014]圖2所示為模糊測試的執行過程示意圖。
【具體實施方式】
[0015]為使本發明的目的、內容、和優點更加清楚,下面結合附圖和實施例,對本發明的【具體實施方式】作進一步詳細描述。
[0016]由于web應用一般都是通過遠程進行訪問,所以web應用的模糊測試目前來說為遠程web模糊測試(當然在本地也能夠測試)。web應用進行模糊測試的系統包括四個部分組成:Web模糊測試向量生成,web模糊測試,異常監控,日志分析。圖1所示為針對web應用進行模糊測試的系統的示意圖,如圖1所示,web應用進行模糊測試的系統包括:模糊測試向量生成模塊1、模糊測試模塊3、異常分析模塊5、服務器9以及爬蟲模塊7。
[0017]參考圖1,web模糊測試向量生成模塊1生成能夠與web服務器9通信的報文或請求,作為模糊測試的輸入。測試向量生成目前有兩種方法:預生成測試向量,隨機生成測試向量。預生成測試向量是采用預先定義好的,保存在一個文件中的模糊輸入向量。隨機生成測試向量是采用程序隨機生成,或者使用一種智能的算法進行生成。模糊測試模塊3是整個模糊的執行體,包括執行主體31和異常監控模塊32。執行主體31采用發送http報文的方式將生成的測試向量輸入到測試web應用程序,應用程序在處理模糊執行體發送的測試向量可能會引發安全問題(如跨站腳本執行、sql注入、文件包含等),或者服務器發生異常,在此我們將其統稱為異常。異常監控負責整個模糊測試的異常收集和記錄,并寫入到日志文件。異常監控可以分為異常監控模塊32和服務器端監控91。異常監控模塊32是模糊測試模塊3記錄響應包實現的監控。服務器端監控91是在在服務器端安裝監控軟件,還可以通過直接分析服務器自己的日志實現的一種監控。異常分析模塊5進行模糊測試日志分析,對監控日志的進一步處理和分析,對其中出現的漏洞所引起的異常進一步排查,確定發現的漏洞及漏洞類型。爬蟲模塊7是在web應用測試目標的獲取方面可以采用爬蟲,通過爬蟲獲取所有的服務器上所有URL等。另外,Web的模糊測試可以在以上結構的基礎上增加其他組成部分,如測試向量預處理,篩選出最容易觸發漏洞的測試向量。
[0018]進一步來看,參考圖1,爬蟲模塊7可以采用的對網站所有路徑進行掃描的方法,從根目錄開始,提取出網站所有頁面的標簽包含href和src的關鍵字,通過href和src關鍵字獲取頁面的相對路徑,然后將獲取頁面的路徑提取出來組合成URL,并將所有的URL進行過濾處理,去掉其中的死鏈接和重復的鏈接,然后將其緩存至隊列、存儲到數據庫中,或保存到一個url文本文件中,以此供后續的執行模糊測試使用。為了提高爬蟲效率,將爬蟲模塊設置為多線程。
[0019]參考圖1,模糊測試向量生成模塊1用于測試向量(一句或一段腳本代碼)生成,測試向量例如可以為:〈script>alert (1) </script>xss。測試向量生成可以包括模糊測試向量生成和web模糊測試向量知識庫兩種方式。Web模糊測試向量知識庫是根據經驗總結出來的一部分漏洞觸發率比較高的測試向量,如用于測試跨站腳本漏洞的XSS Cheatsheat,用于測試sql注入漏洞的邏輯語句及sql拼接語句,用于測試命令執行的一些常用的命令,用于測試