張鑫+++張婷+++段新東+++林玉香
【 摘 要 】 由于Web應用系統的開發周期較短,同時開發人員安全編程意識不足,Web應用程序會存在漏洞。因此,檢測Web應用系統的安全性是安全領域的亟待解決的問題。SQL注入漏洞檢測工具模擬黑客攻擊的方式,采用網絡爬蟲技術建立需檢測的URL庫,依據SQL注入模板精心構造URL,并從根據瀏覽器返回信息,判定是否存在SQL注入點??梢蕴崆耙庾R到Web應用存在的漏洞,并及時修補,降低系統受攻擊的風險,是有效的Web安全防護手段。
【 關鍵詞 】 SQL注入;漏洞檢測;Web安全
【 中圖分類號 】 TP311
1 引言
采用B/S架構,并通過HTTP或HTTPS協議提供訪問的應用服務統稱為Web應用。目前,幾乎所有政府、通信、證券、銀行以及電子商務都支持在線交易和查詢服務,包括個人賬戶、用戶信息、交易記錄等在內的用戶的敏感信息,都通過Web應用系統存儲在數據庫中,一旦數據被盜取或篡改,都會造成巨大損失。為降低系統受攻擊的風險,可利用Web應用安全漏洞掃描技術,可以實現在線的Web應用健康檢查,提醒網站管理員進行修補,是效果好的Web安全防護手段。
2 Web 應用中常見漏洞攻擊
Web 應用大多涉及服務器端的動態處理,同時,開發人員可能在開發過程中疏忽參數的輸入檢查,因此會出現各種Web 應用安全問題,會產生相關漏洞,例如文件包含漏洞,目錄遍歷漏洞,信息泄露漏洞和SQL 注入漏洞給攻擊者留下可乘之機。
由于SQL 注入漏洞利用Web應用開放的端口,通常防火墻等設備無法檢測到,所以其隱蔽性高,如果攻擊者不留下痕跡,或者管理員沒有查看數據庫日志的習慣,基本不會發現。
根據美國國家漏洞數據庫(NVD)的統計,SQL注入在針對Web應用攻擊手段中名列榜首,是互聯網危害最大的安全漏洞。SQL注入攻擊的幾個過程。
(1)判斷Web應用是否可以進行SQL注入。如果URL僅是對靜態網頁的訪問,不存在SQL注入問題。只有存在數據庫動態查詢請求的URL,才可能存在SQL注入,如:http://www.***.cn/web.jsp?id=36,其中id=36表示數據庫查詢變量。
(2)尋找SQL注入點。完成帶參URL的查找后,通過構造一些特殊SQL語句,替換原有的URL參數值,再根據瀏覽器返回信息,判斷該URL是否為SQL注入點。
(3)猜解用戶名和密碼。軟件開發人員設計的數據庫表名、字段名通常是有規律可循的。通過構建SQL語句在數據庫中查找表名、字段名、用戶名和密碼的長度等內容。
(4)尋找Web系統管理后臺入口。通常Web系統后臺管理的界面不向普通用戶開放,要尋找到后臺的登錄路徑,可以利用掃描工具,測試可能的后臺入口地址進行。
(5)實施入侵和破壞。成功登錄管理系統后,接下來就可以任意進行讀寫,篡改網頁、木馬上傳、修改、泄漏用戶信息等,并進一步入侵數據庫服務器。
由于大多數Web應用檢測軟件成本較高,不適合中小型網站,所以需要一種簡單方便的網站檢測服務。該漏洞檢測工具針對MySQL數據庫服務器,對用戶提交的URL進行安全檢測,對漏洞劃分不同的危險等級,發現問題后顯示危險URL,不顯示其他敏感信息。
3 SQL注入漏洞檢測工具的設計
3.1 SQL注入漏洞檢測方法
可以采用模仿黑客攻擊的方法來檢測是否存在SQL注入漏洞,與SQL注入攻擊的步驟類似,如圖1所示。
(1)在檢測過程中,采用網絡爬蟲技術,先將整個網站的所有網頁抓取完成。將重復的 URL以及鏈接到被檢測網站外的URL剔除后,存入網頁URL數據庫。
(2)訪問網頁URL的數據庫,獲得一條URL。
(3)對網頁URL數據庫中存儲的URL進行檢測,檢測的步驟同攻擊過程。為了提高檢測的效率,采用模板參數填充的方法。可需要根據實際情況對表1所示的SQL 注入模板的參數進行填充,以構成可執行的SQL攻擊語句。其中u表示URL;%s表示SQL語句的條件部分;~u表示將URL中SQL語句的條件取反。如果構建的SQL語句未通過URL檢測,那么該URL不存在SQL注入漏洞,轉步驟2。如果構建的SQL語句通過URL檢測,那么存在SQL注入漏洞,轉步驟4。
(4)以MySQL4及以上版本為例,列出檢測信息。構建SQL語句,進一步獲取基本信息,猜解數據和列名,并讀取和寫入文件。
(5)如果網頁URL的數據庫的每一條URL都檢測過后,算法終止。
3.2 整體架構圖
注入漏洞檢測工具的基礎構架如圖2所示。分為三個功能模塊:(1)網絡爬蟲:創建網頁URL數據庫;(2)SQL注入檢測引擎:采用圖2所示的流程進行SQL注入漏洞檢測;(3)公共組件:支持前兩個模塊相應功能的實現。
4 SQL注入檢測引擎的實現
4.1 SQL注入漏洞掃描
1)構造不同類型的payload:參照表2所示的SQL 注入模板的參數對URL進行填充。
2)根據http response來判斷是否存在注入點:根據參數m_HttpUrl從指定的URL得到相應的返回內容;獲取或設置用于向 Internet Http資源的請求進行身份驗證的網絡憑據,并使用正則表達式("
3)分析具體的注入類型:根據不同的注入類型構造不同的URL。
4.2 猜解數據與列名表名
1)獲取數據庫的基本信息
MySQL4及以上版本支持union查詢,可以通過折半查找,逐步猜解信息。用到的內置函數如下:(1)VERSION():獲得當前的數據庫版本信息;(2)USER():獲得當前的數據庫用戶名;(3)DATABASE():獲得當前數據庫名;(4)PASSWORD():獲得相關用戶的密碼。獲取數據庫的基本信息如圖4所示。
2)猜解表名
在MySQL4及以上版本中,可在注入點URL后添加如下代碼:and(select count(*)from table_name)>0。如果返回正常,那么說明數據表的名字是存在的,否則不存在。
3)猜解列名
在MySQL4及以上版本中,可在SQL注入點URL后添加如下代碼:and (select count(column_name)from table_name)>0。如果返回正常,那么列名是正確的,否則反之。把常見列名保存在一個文本文檔中,猜解時打開,構造URL進行猜解,遍歷所有字段名。猜解數據與列名表名如圖5所示。
4.3 讀取和寫入文件
1)利用函數load_file()讀取文件,為避開單引號,使用16進制表示文件路徑。2)利用函數into outfile() 實現寫文件的功能。
5 結束語
SQL注入漏洞檢測工具通過構造HTTP協議請求,獲取服務器響應信息,分析網絡頁面信息,來分析檢測??梢詭椭芾韱T更好的管理網站,可立刻查詢URL的各項記錄,并顯示上次掃描時間,同時標明漏洞類型,能更直觀的了解網站的安全狀況。管理員可以根據這些信息對網站進行整修,填補漏洞,使網站更加安全。但是在SQL注入檢測引擎的運行時會存在一定延時,并只針對SQL注入漏洞進行檢查,因此,會進一步豐富掃描知識庫,并開展更多類型漏洞(如XSS漏洞、危險端口預警、敏感目錄檢測、蜘蛛屏蔽掃描等)的研究工作,使其更高效準確地為用戶提供服務。
參考文獻
[1] 楊林,楊勇.Web應用漏洞攻擊分析及防御實現[J].中國教育網絡,2011,Z1:79-82.
[2] National Vulnerability Database National vulnerability database(NVD) CVE.statistics[EB/OL].http://web.nvd.nist.gov/view/vuln/statistics-results.
[3] 彭賡,范明鈺.基于改進網絡爬蟲技術的SQL注入漏洞檢測[J].計算機應用研究,2010,27(07):2605-2607.
[4] 張令通,羅森林.SQL盲注入快速攻擊方法研究[J].信息網絡安全,2013,05:15-18.
[5] 蘇忠,林闖,封富君等.無線傳感器網絡密鑰管理的方案和協議[J].軟件學報, 2007, 18(5):1218-1231.
[6] 馬凱,蔡皖東,姚燁.Web2.0環境下SQL注入漏洞注入點提取方法[J].計算機技術與發展,23(3):121-128.
基金項目:
河南省科技計劃項目(142300410108);河南省教育廳科學技術研究重點項目基礎研究(14A520056);南陽師范學院校級項目(QN2013047)。
作者簡介:
張鑫(1985-),男,河北石家莊人,碩士,講師;主要研究方向和關注領域:信息安全、網絡安全與攻防。endprint
MySQL4及以上版本支持union查詢,可以通過折半查找,逐步猜解信息。用到的內置函數如下:(1)VERSION():獲得當前的數據庫版本信息;(2)USER():獲得當前的數據庫用戶名;(3)DATABASE():獲得當前數據庫名;(4)PASSWORD():獲得相關用戶的密碼。獲取數據庫的基本信息如圖4所示。
2)猜解表名
在MySQL4及以上版本中,可在注入點URL后添加如下代碼:and(select count(*)from table_name)>0。如果返回正常,那么說明數據表的名字是存在的,否則不存在。
3)猜解列名
在MySQL4及以上版本中,可在SQL注入點URL后添加如下代碼:and (select count(column_name)from table_name)>0。如果返回正常,那么列名是正確的,否則反之。把常見列名保存在一個文本文檔中,猜解時打開,構造URL進行猜解,遍歷所有字段名。猜解數據與列名表名如圖5所示。
4.3 讀取和寫入文件
1)利用函數load_file()讀取文件,為避開單引號,使用16進制表示文件路徑。2)利用函數into outfile() 實現寫文件的功能。
5 結束語
SQL注入漏洞檢測工具通過構造HTTP協議請求,獲取服務器響應信息,分析網絡頁面信息,來分析檢測??梢詭椭芾韱T更好的管理網站,可立刻查詢URL的各項記錄,并顯示上次掃描時間,同時標明漏洞類型,能更直觀的了解網站的安全狀況。管理員可以根據這些信息對網站進行整修,填補漏洞,使網站更加安全。但是在SQL注入檢測引擎的運行時會存在一定延時,并只針對SQL注入漏洞進行檢查,因此,會進一步豐富掃描知識庫,并開展更多類型漏洞(如XSS漏洞、危險端口預警、敏感目錄檢測、蜘蛛屏蔽掃描等)的研究工作,使其更高效準確地為用戶提供服務。
參考文獻
[1] 楊林,楊勇.Web應用漏洞攻擊分析及防御實現[J].中國教育網絡,2011,Z1:79-82.
[2] National Vulnerability Database National vulnerability database(NVD) CVE.statistics[EB/OL].http://web.nvd.nist.gov/view/vuln/statistics-results.
[3] 彭賡,范明鈺.基于改進網絡爬蟲技術的SQL注入漏洞檢測[J].計算機應用研究,2010,27(07):2605-2607.
[4] 張令通,羅森林.SQL盲注入快速攻擊方法研究[J].信息網絡安全,2013,05:15-18.
[5] 蘇忠,林闖,封富君等.無線傳感器網絡密鑰管理的方案和協議[J].軟件學報, 2007, 18(5):1218-1231.
[6] 馬凱,蔡皖東,姚燁.Web2.0環境下SQL注入漏洞注入點提取方法[J].計算機技術與發展,23(3):121-128.
基金項目:
河南省科技計劃項目(142300410108);河南省教育廳科學技術研究重點項目基礎研究(14A520056);南陽師范學院校級項目(QN2013047)。
作者簡介:
張鑫(1985-),男,河北石家莊人,碩士,講師;主要研究方向和關注領域:信息安全、網絡安全與攻防。endprint
MySQL4及以上版本支持union查詢,可以通過折半查找,逐步猜解信息。用到的內置函數如下:(1)VERSION():獲得當前的數據庫版本信息;(2)USER():獲得當前的數據庫用戶名;(3)DATABASE():獲得當前數據庫名;(4)PASSWORD():獲得相關用戶的密碼。獲取數據庫的基本信息如圖4所示。
2)猜解表名
在MySQL4及以上版本中,可在注入點URL后添加如下代碼:and(select count(*)from table_name)>0。如果返回正常,那么說明數據表的名字是存在的,否則不存在。
3)猜解列名
在MySQL4及以上版本中,可在SQL注入點URL后添加如下代碼:and (select count(column_name)from table_name)>0。如果返回正常,那么列名是正確的,否則反之。把常見列名保存在一個文本文檔中,猜解時打開,構造URL進行猜解,遍歷所有字段名。猜解數據與列名表名如圖5所示。
4.3 讀取和寫入文件
1)利用函數load_file()讀取文件,為避開單引號,使用16進制表示文件路徑。2)利用函數into outfile() 實現寫文件的功能。
5 結束語
SQL注入漏洞檢測工具通過構造HTTP協議請求,獲取服務器響應信息,分析網絡頁面信息,來分析檢測。可以幫助管理員更好的管理網站,可立刻查詢URL的各項記錄,并顯示上次掃描時間,同時標明漏洞類型,能更直觀的了解網站的安全狀況。管理員可以根據這些信息對網站進行整修,填補漏洞,使網站更加安全。但是在SQL注入檢測引擎的運行時會存在一定延時,并只針對SQL注入漏洞進行檢查,因此,會進一步豐富掃描知識庫,并開展更多類型漏洞(如XSS漏洞、危險端口預警、敏感目錄檢測、蜘蛛屏蔽掃描等)的研究工作,使其更高效準確地為用戶提供服務。
參考文獻
[1] 楊林,楊勇.Web應用漏洞攻擊分析及防御實現[J].中國教育網絡,2011,Z1:79-82.
[2] National Vulnerability Database National vulnerability database(NVD) CVE.statistics[EB/OL].http://web.nvd.nist.gov/view/vuln/statistics-results.
[3] 彭賡,范明鈺.基于改進網絡爬蟲技術的SQL注入漏洞檢測[J].計算機應用研究,2010,27(07):2605-2607.
[4] 張令通,羅森林.SQL盲注入快速攻擊方法研究[J].信息網絡安全,2013,05:15-18.
[5] 蘇忠,林闖,封富君等.無線傳感器網絡密鑰管理的方案和協議[J].軟件學報, 2007, 18(5):1218-1231.
[6] 馬凱,蔡皖東,姚燁.Web2.0環境下SQL注入漏洞注入點提取方法[J].計算機技術與發展,23(3):121-128.
基金項目:
河南省科技計劃項目(142300410108);河南省教育廳科學技術研究重點項目基礎研究(14A520056);南陽師范學院校級項目(QN2013047)。
作者簡介:
張鑫(1985-),男,河北石家莊人,碩士,講師;主要研究方向和關注領域:信息安全、網絡安全與攻防。endprint