資源描述:
《SQL注入漏洞攻擊研究及防范措施》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、基于SQL的Web系統(tǒng)安全防范——SQL注入漏洞攻擊研究及防范措施SQL-BasedWebSystemSecurity——StructuredQueryLanguageInjectionLeakAttackStudyAndDefenseMeasure摘要:在當(dāng)今的數(shù)字世界中,人們發(fā)現(xiàn)在維持公開的Internet連接的同時(shí),保護(hù)網(wǎng)絡(luò)和計(jì)算機(jī)系統(tǒng)的安全變得越來越困難。病毒、木馬、后門、蠕蟲等攻擊層出不窮,虛假網(wǎng)站的釣魚行為也讓警惕性不高的公眾深受其害。據(jù)有關(guān)部門統(tǒng)計(jì),2008年一季度,我國有15萬臺(tái)主機(jī)被植入木馬,網(wǎng)站篡改數(shù)量迅速增加,預(yù)計(jì)已
2、達(dá)5835個(gè),其中政府網(wǎng)站達(dá)484個(gè),每月564次的安全事件報(bào)告。為了減輕信息泄露及系統(tǒng)攻擊帶來的風(fēng)險(xiǎn),企業(yè)和機(jī)構(gòu)開始對(duì)自己的系統(tǒng)進(jìn)行滲透性測試,找出其中存在的漏洞和安全隱患。本文通過對(duì)目前最流行的SQL注入漏洞攻擊的過程做了逐一的分析,并提出了檢測方法和防范措施。關(guān)鍵字:SQL注入漏洞攻擊 腳本攻擊SQL注入點(diǎn)檢測防范模型有害代碼-17-SQL注入(SQLInjection)漏洞攻擊是目前網(wǎng)上最流行最熱門的黑客腳本攻擊方法之一,那什么是SQL注入漏洞攻擊呢?它是指黑客利用一些Web應(yīng)用程序(如:網(wǎng)站、論壇、留言本、文章發(fā)布系統(tǒng)等)中某些
3、存在不安全代碼或SQL語句不縝密的頁面,精心構(gòu)造SQL語句,把非法的SQL語句指令轉(zhuǎn)譯到系統(tǒng)實(shí)際SQL語句中并執(zhí)行它,以獲取用戶名、口令等敏感信息,從而達(dá)到控制主機(jī)服務(wù)器的攻擊方法。1.SQL注入漏洞攻擊原理1.1SQL注入漏洞攻擊實(shí)現(xiàn)原理SQL(StructuredQueryLanguage)是一種用來和數(shù)據(jù)庫交互的語言文本。SQL注入的攻擊原理就是攻擊者通過Web應(yīng)用程序利用SQL語句或字符串將非法的數(shù)據(jù)插入到服務(wù)器端數(shù)據(jù)庫中,獲取數(shù)據(jù)庫的管理用戶權(quán)限,然后將數(shù)據(jù)庫管理用戶權(quán)限提升至操作系統(tǒng)管理用戶權(quán)限,控制服務(wù)器操作系統(tǒng),獲取重要信
4、息及機(jī)密文件。SQL注入漏洞攻擊主要是通過借助于HDSI、NBSI和Domain等SQL注入漏洞-17-掃描工具掃描出Web頁面中存在的SQL注入漏洞,從而定位SQL注入點(diǎn),通過執(zhí)行非法的SQL語句或字符串達(dá)到入侵者想要的操作。下面以一段身份驗(yàn)證的.NET代碼為例,說明一下SQL注入攻擊的實(shí)現(xiàn)方法。SqlConnectionnwConn=newSqlConnection((string)ConfigurationSettings.AppSettings["DBconnStrings"]);stringqueryStr="SELECTuse
5、rid,userpwd,username,typeFROMuserswhereuserid='"+Txtusername.Text+"'";DataSetuserSet=newDataSet();SqlDataAdapteruserAdapter=newSqlDataAdapter(queryStr,nwConn);userAdapter.Fill(userSet,"Users");Session["UserID"]=Txtusername.Text.ToString();Session["type"]=type.Text.ToStrin
6、g();Response.Redirect("/Myweb/admin/login.aspx");從上面的代碼中可以看出,程序在與數(shù)據(jù)庫建立連接得到用戶數(shù)據(jù)之后,直接將username的值通過session傳給login.aspx,沒有進(jìn)行任何的過濾和處理措施,直接用來構(gòu)造SQL語句,-17-其危險(xiǎn)系數(shù)是非常高的,攻擊者只要根據(jù)SQL語句的編寫規(guī)則就可以繞過身份驗(yàn)證,從而達(dá)到入侵的目的。1.2SQL注入漏洞攻擊分析SQL注入可以說是一種漏洞,也可以說是一種攻擊。當(dāng)程序中的變量處理不當(dāng),沒有對(duì)用戶提交的數(shù)據(jù)類型進(jìn)行校驗(yàn),編寫不安全的代碼,構(gòu)
7、造非法的SQL語句或字符串,都可能產(chǎn)生這個(gè)漏洞。例如Web系統(tǒng)有一個(gè)login頁面,這個(gè)login頁面控制著用戶是否有權(quán)訪問,要求用戶輸入一個(gè)用戶名和口令,連接數(shù)據(jù)庫的語句為:“select*fromuserswhereusername='username'andpassword='password'”攻擊者輸入用戶名為aaor1=1口令為1234or1=1之類的內(nèi)容。我們可以看出實(shí)際上攻擊者并不知道真正的用戶名、口令,該內(nèi)容提交給服務(wù)器之后,服務(wù)器執(zhí)行攻擊者構(gòu)造出的SQL命令,但由于攻擊者輸入的內(nèi)容非常特殊,所以最后得到的SQL命令變成
8、:“select*fromuserswhereusername='aa'or1=1andpassword='1234'or1=1”;-17-服務(wù)器執(zhí)行查詢或存儲(chǔ)過程,將用戶輸入的身份信息和數(shù)據(jù)