資源描述:
《SQL注入攻擊漏洞研究與防范措施論文正稿》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、.....SQL注入攻擊漏洞研究與防范措施StructuredQueryLanguageInjectionLeakStudyAndDefenseMeasure姜志坤摘要:在當今的數(shù)字世界中,人們發(fā)現(xiàn)在維持公開的Internet連接的同時,保護網(wǎng)絡和計算機系統(tǒng)的安全變得越來越困難。病毒、木馬、后門、蠕蟲等攻擊層出不窮,虛假網(wǎng)站的釣魚行為也讓警惕性不高的公眾深受其害。為了減輕信息泄露及系統(tǒng)被攻擊帶來的風險,企業(yè)和機構開始對自己的系統(tǒng)進行滲透測試,找出其中存在的漏洞和薄弱環(huán)節(jié)。本文通過對目前最流行的SQL注入攻擊漏洞的攻擊方法做了逐一的分析,并提出了檢測和防范的措施。
2、關鍵字:SQL注入攻擊 腳本攻擊網(wǎng)絡安全攻擊防范模型有害代碼SQL注入(SQLInjection)攻擊是目前網(wǎng)上最流行最熱門的黑客腳本攻擊方法之一,那什么是SQL注入式攻擊呢?它是指黑客利用一些Web應用程序(論壇、留言本、文章發(fā)布系統(tǒng))中某些疏于防范的用戶可以提交或修改的數(shù)據(jù)的頁面,精心構造SQL語句,把特殊的SQL指令語句插入到系統(tǒng)實際SQL語句中并執(zhí)行它,以獲得用戶名、密碼等敏感信息,從而達到獲取主機控制權限的攻擊方法。1.SQL注入攻擊原理1.1SQL注入攻擊實現(xiàn)原理結構化查詢語言(SQL)是一種用來和數(shù)據(jù)庫交互的文本語言,SQLInjection就是利
3、用某些數(shù)據(jù)庫的外部接口把用戶數(shù)據(jù)插入到實際的數(shù)據(jù)庫操作語言當中,從而達到入侵數(shù)據(jù)庫乃至操作系統(tǒng)的目的。它的產(chǎn)生主要是由于程序?qū)τ脩糨斎氲臄?shù)據(jù)沒有進行細致的過濾,導致非法數(shù)據(jù)的導入查詢。SQL注入攻擊主要是通過構建特殊的輸入,這些輸入往往是SQL語法中的一些組合,這些輸入將作為參數(shù)傳入Web應用程序,通過執(zhí)行SQL語句而執(zhí)行入侵者想要的操作,下面以登錄驗證中的模塊為例,說明SQL注入攻擊的實現(xiàn)方法。學習參考.....在Web應用程序的登錄驗證程序中,一般有用戶名(username)和密碼(password)兩個參數(shù),程序會通過用戶所提交輸入的用戶名和密碼來執(zhí)行授權
4、操作。其原理是通過查找user表中的用戶名(username)和密碼(password)的結果來進行授權訪問,典型的SQL查詢語句為:Select*fromuserswhereusername=′admin′andpassword=′smith′如果分別給username和password賦值“admin'or1=1--”和“aaa”。那么,SQL腳本解釋器中的上述語句就會變?yōu)?select*fromuserswhereusername=′admin′or1=1--andpassword=′aaa′該語句中進行了兩個判斷,只要一個條件成立,則就會執(zhí)行成功,而1=
5、1在邏輯判斷上是恒成立的,后面的“--”表示注釋,即后面所有的語句為注釋語句。同理通過在輸入?yún)?shù)中構建SQL語法還可以刪除數(shù)據(jù)庫中的表,查詢、插入和更新數(shù)據(jù)庫中的數(shù)據(jù)等危險操作:(1)droptableauthors—如果存在authors表則刪除。(2)unionselectsum(username)fromusers—從users表中查詢出username的個數(shù)。(3)insertintousersvalues(666,′attacker′,′foobar′,0xffff)—在user表中插入值。(4)unionselect@@version,1,1,1--
6、查詢數(shù)據(jù)庫的版本。(5)execmaster.xp_cmdshell′dir′通過xp_cmdshell來執(zhí)行dir命令。1.2SQL注入攻擊分析SQL注入可以說是一種漏洞,也可以說是一種攻擊。當程序中的變量處理不當,對用戶提交的數(shù)據(jù)過濾不足,都可能產(chǎn)生這個漏洞。它的攻擊原理就是利用用戶提交或可修改的數(shù)據(jù),把想要的SQL語句插入到系統(tǒng)實際SQL語句中,輕則獲得敏感的信息,重則控制服務器。例如Web應用有一個登錄頁面,這個登錄頁面控制著用戶是否有權訪問應用,要求用戶輸入一個名稱和密碼。攻擊者在用戶名字和密碼輸入框中輸入1'or'1'='1之類的內(nèi)容。該內(nèi)容提交給服
7、務器之后,服務器運行上面的代碼構造出查詢用戶的SQL命令,但由于攻擊者輸入的內(nèi)容非常特殊,所以最后得到的SQL命令變成:“select*fromuserswhereusername=''or'1'='1'andpassword=''or'1'='1'”。學習參考.....服務器執(zhí)行查詢或存儲過程,將用戶輸入的身份信息和服務器中保存的身份信息進行對比,由于SQL命令實際上已被注入式攻擊修改,已經(jīng)不能真正驗證用戶身份,所以系統(tǒng)會錯誤地授權給攻擊者。SQL注入是通過目標服務器的80端口進行的,這和普通的Web頁面訪問沒什么兩樣,所以一般的防火墻不會對這種攻擊發(fā)出警告或
8、攔截。這種攻擊可能引起的