999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Web APP的SQL注入攻擊路徑探析及防范研究

2014-12-12 08:58:06尹向兵
巢湖學(xué)院學(xué)報(bào) 2014年6期
關(guān)鍵詞:數(shù)據(jù)庫(kù)

尹向兵 周 婷

(1 安徽警官職業(yè)學(xué)院教務(wù)處,安徽 合肥 230031)(2 安徽城市管理職業(yè)學(xué)院國(guó)際商務(wù)系,安徽 合肥 230011)

1 引言

在Web應(yīng)用程序架構(gòu)中,大部分都是配合數(shù)據(jù)庫(kù)來(lái)保存相關(guān)的數(shù)據(jù)。例如會(huì)員登錄、留言板、討論區(qū)的賬號(hào)、密碼、真實(shí)姓名、住址及聯(lián)系電話等個(gè)人信息,或是購(gòu)物系統(tǒng)的商品與價(jià)格等數(shù)據(jù)記錄,都是動(dòng)態(tài)存儲(chǔ)在數(shù)據(jù)庫(kù)中。

Web應(yīng)用程序使用SQL語(yǔ)句來(lái)操作數(shù)據(jù)庫(kù)。例如,select表達(dá)式用來(lái)讀取數(shù)據(jù)庫(kù)的記錄,insert表達(dá)式用來(lái)在數(shù)據(jù)庫(kù)中插入新的記錄,delete表達(dá)式用來(lái)刪除數(shù)據(jù)庫(kù)中的記錄。設(shè)置了SQL語(yǔ)句的字符串后,使用數(shù)據(jù)庫(kù)query這類的函數(shù)來(lái)將SQL語(yǔ)句傳遞給數(shù)據(jù)庫(kù)系統(tǒng)處理,數(shù)據(jù)庫(kù)處理完后,會(huì)返回Web應(yīng)用程序所需要的數(shù)據(jù)庫(kù)記錄。

SQL注入攻擊(SQL Injection)是利用在客戶端的網(wǎng)頁(yè)中輸入數(shù)據(jù),例如,在會(huì)員登錄文本框中輸入用戶的賬號(hào)和密碼,用戶在提交會(huì)員登錄文本框的數(shù)據(jù)后,Web應(yīng)用程序會(huì)將這些賬號(hào)和密碼與網(wǎng)站數(shù)據(jù)庫(kù)中的相關(guān)記錄相比較,或是插入到數(shù)據(jù)庫(kù)內(nèi)。

2 SQL注入基本原理

2.1 什么是SQL注入

一般來(lái)說(shuō),SQL注入是應(yīng)用SQL命令插入到Web網(wǎng)頁(yè)頁(yè)面表單中輸入查詢值,或者是輸入域名或頁(yè)面請(qǐng)求的值傳遞查詢字符串,從而完成欺騙服務(wù)器,在站點(diǎn)數(shù)據(jù)庫(kù)中執(zhí)行惡意的SQL命令。如前幾年很多娛樂(lè)網(wǎng)站和部分交易所站點(diǎn)泄露站點(diǎn)會(huì)員信息等情況,大多數(shù)就是利用動(dòng)態(tài)網(wǎng)站表單遞交查詢字符暴出來(lái)的,這類表單特別容易受到SQL注入式攻擊[1]。

當(dāng)應(yīng)用程序使用輸入內(nèi)容來(lái)構(gòu)造動(dòng)態(tài)SQL語(yǔ)句以訪問(wèn)數(shù)據(jù)庫(kù)時(shí),會(huì)發(fā)生SQL注入攻擊。如果代碼使用存儲(chǔ)過(guò)程,而這些存儲(chǔ)過(guò)程作為包含未篩選的用戶輸入的字符串來(lái)傳遞,也會(huì)發(fā)生SQL注入。

2.2 SQL注入攻擊原理

當(dāng)客戶端訪問(wèn)服務(wù)器數(shù)據(jù)庫(kù)時(shí),有時(shí)產(chǎn)生錯(cuò)誤信息,SQL注入攻擊需要利用服務(wù)器返回出錯(cuò)信息判斷進(jìn)行網(wǎng)絡(luò)攻擊。當(dāng)然,攻擊的網(wǎng)站是動(dòng)態(tài)網(wǎng)站才有可能存在注入漏洞,如ASP、PHP、ASP.NET、JSP等服務(wù)端技術(shù)開(kāi)發(fā)的網(wǎng)站。一般訪問(wèn)地址存在參數(shù)傳遞,有時(shí)有一個(gè)參數(shù),有時(shí)有多個(gè)參數(shù), 形式如 http://www.sina.com.cn/abc.aspx?id=xx等,參數(shù)可以是整型或字符串。總之,對(duì)于動(dòng)態(tài)連接數(shù)據(jù)庫(kù)的網(wǎng)站都可能存在SQL注入漏洞[2]。

當(dāng)訪問(wèn)帶參數(shù)地址連接時(shí),SQL注入攻擊利用構(gòu)建特殊的值輸入,通過(guò)現(xiàn)有的SQL語(yǔ)句,再組合輸入的特殊字符,完成SQL語(yǔ)句組合,將輸入的值作為傳入服務(wù)器程序,當(dāng)服務(wù)器執(zhí)行到構(gòu)建的SQL語(yǔ)句從而執(zhí)行攻擊者語(yǔ)句,完成他們想要的操作。以應(yīng)該程序的用戶管理表中數(shù)據(jù)的查詢情況為例,說(shuō)明SQL注入攻擊的一般原理。

用戶登錄后臺(tái)網(wǎng)站,首先應(yīng)進(jìn)行登錄驗(yàn)證,一般是用戶管理表一類,在此表中對(duì)用戶名和密碼兩個(gè)字段值進(jìn)行查詢,通過(guò)SELECT語(yǔ)句完成查詢操作,在SELECT語(yǔ)句中通過(guò)比對(duì)用戶名和密碼,完成身份驗(yàn)證進(jìn)行授權(quán)訪問(wèn),一般使用的查詢語(yǔ)句為:

Select*from XXX where 用戶名=“tbxname.Text”and 密碼=“tbxpwd.Text”;

上述語(yǔ)句中,若我們給用戶名和密碼字段內(nèi)賦值“用戶名’or 1=1--”和”qqq”,則查詢分析器中顯示為select*from users where用戶名=’admin’or 1=1--and 密碼=’qqq’,這個(gè)查詢語(yǔ)句分別進(jìn)行兩個(gè)判斷,我們都知道1=1在邏輯判斷上始終是恒成立的,完成萬(wàn)能秘鑰輸入判斷[3]。

3 常用注入工具及攻擊過(guò)程介紹

3.1 以明小子工具為例

本部分內(nèi)容是基于實(shí)驗(yàn)室模擬沙盤(pán)實(shí)現(xiàn):某公司的web服務(wù)器IP為 192.168.72.81,, 存在SQL注入漏洞,明小子是專門檢測(cè)和入侵這樣的網(wǎng)站,在互聯(lián)網(wǎng)上用明小子等工具來(lái)攻擊這樣網(wǎng)站的方法大致如下:

步驟一:用明小子測(cè)試該 192.168.72.69(內(nèi)網(wǎng)沙盤(pán)服務(wù)器地址)網(wǎng)站是否存在這樣漏洞,如有繼續(xù)。否則重復(fù)步驟一;

步驟二:對(duì)表進(jìn)行猜解;

步驟三:對(duì)表中的字段進(jìn)行猜解;

步驟四:對(duì)表中的字段內(nèi)容進(jìn)行猜解;

步驟五:對(duì)管理入口進(jìn)行掃描;

步驟六:用剛才猜解得到的管理員賬號(hào)進(jìn)行登錄,進(jìn)入網(wǎng)站后臺(tái);

步驟七:上傳文件即小馬;

最后上傳大馬獲取webshell,再慢慢提權(quán),這就是web滲透的全過(guò)程。

3.2 萬(wàn)能密碼攻擊

本部分內(nèi)容是基于實(shí)驗(yàn)室模擬沙盤(pán)實(shí)現(xiàn):某公司的 web 服務(wù)器 IP 為 192.168.72.81,端口號(hào)8080,存在SQL注入漏洞,萬(wàn)能密碼就是攻擊方法之一,進(jìn)入該公司web服務(wù)器的主頁(yè)面即為登錄頁(yè)面,我們知道該公司的登錄賬號(hào)是aaaaaa,但是不知道該賬號(hào)的密碼,現(xiàn)在我們用萬(wàn)能密碼來(lái)進(jìn)行攻擊,登錄成功后顯示該網(wǎng)站的賬號(hào)及密碼信息。

方法一:在賬號(hào)文本框中輸入用戶名和萬(wàn)能密碼,密碼框?yàn)榭眨员纠}為例如:aaaaa’or’1’=’1;

方法二:在賬號(hào)框和密碼框都輸入萬(wàn)能密碼,以本例題為例如:’or’1’=’1。進(jìn)入網(wǎng)站后臺(tái)。

3.3 互聯(lián)網(wǎng)中實(shí)戰(zhàn)

步驟一:尋找互聯(lián)網(wǎng)中動(dòng)態(tài)網(wǎng)站,復(fù)制帶參數(shù)的地址,如安徽某制藥有限公司新聞頁(yè)面地址http://XXXXXXX.20.sinchen.cn/news/shownews.asp?id=122,將地址拷貝到“旁注WEB綜合檢測(cè)程序Ver3.6專用版”軟件的注入點(diǎn)一欄中,然后點(diǎn)擊“開(kāi)始檢測(cè)”,若網(wǎng)站存在漏洞,則提示“恭喜,改URL可以注入!數(shù)據(jù)庫(kù)類型:XXX數(shù)據(jù)庫(kù)”,本例結(jié)果如圖1所示,得出此網(wǎng)站存在SQL注入;

步驟二:根據(jù)在圖1界面,接著依次點(diǎn)擊“猜解表名—猜解列名—猜解內(nèi)容”,得出如圖2結(jié)果,根據(jù)此次操作猜解出網(wǎng)站后臺(tái)登錄用戶名和密碼值;

步驟三:將步驟一中網(wǎng)站地址復(fù)制到“管理入口掃描”界面的注入點(diǎn)中,再點(diǎn)擊“掃描后臺(tái)地址”,得到此網(wǎng)站后臺(tái)登錄地址列表,如圖3;

步驟四:根據(jù)步驟三掃描到的后臺(tái)地址,進(jìn)入網(wǎng)站后臺(tái)登錄界面,再根據(jù)步驟二猜解的用戶名(kui)和密碼(admin)登錄進(jìn)入后臺(tái),此時(shí)進(jìn)行后臺(tái)管理;

步驟五:找到后臺(tái)上傳界面,上傳事前設(shè)置好的大馬程序,獲取網(wǎng)站web shell,達(dá)到攻擊服務(wù)器IIS應(yīng)用程序目的。

圖1

圖2

圖3

4 SQL注入攻擊防范

基于腳本的SQL注入防范主要是利用網(wǎng)站的獲取參數(shù)的地方,要防止ASP.NET Web APP被SQL注入式攻擊并不是一件特別簡(jiǎn)單的事情,主要的注入攻擊防范措施有如下幾個(gè)方面:

4.1 URL 傳值防范

對(duì)于普通id傳遞數(shù)值一般沒(méi)什么問(wèn)題,當(dāng)傳遞的值是嵌套查詢時(shí),那么sql查詢語(yǔ)句就變成了“select*from table1 where partid=(id delete from table2)”。一次提交多條語(yǔ)句,這個(gè)既方便了操作,同時(shí)給數(shù)據(jù)庫(kù)帶來(lái)很大的安全隱患,當(dāng)SQL語(yǔ)句執(zhí)行后,數(shù)據(jù)庫(kù)table2中的數(shù)據(jù)則就被刪除了。

解決辦法則是驗(yàn)證傳遞過(guò)來(lái)值得數(shù)據(jù)類型,如果是整型值就不存在注入,反之則有注入的危險(xiǎn)。通過(guò)TryParse、正則表達(dá)式或自己編寫(xiě)代碼驗(yàn)證。

4.2 防猜解

此方法就是根據(jù)個(gè)人的經(jīng)驗(yàn)猜表名,一般來(lái)說(shuō),通過(guò)語(yǔ)句進(jìn)行判斷,如 HTTP://xxx.xxx.xxx/abc.asp?p=YY and (select count(*)from TestDB.dbo.表名)>0若表名存在,則abc.asp工作正常,否則異常。如此循環(huán),直到猜到系統(tǒng)帳號(hào)表的名稱。

數(shù)據(jù)庫(kù)表名稱、表和字段名稱命名既要見(jiàn)名知意又要添加特殊符號(hào)防猜解,特別對(duì)于用戶表,如 uersname,password,user_name,pwd 等如前面提及啊D和明小子工具,這些攻擊工具內(nèi)保存大量常用的已知表和字段名稱,很容易猜解出來(lái)。

4.3 替換單引號(hào)。 如 select*from Admin where username= ″or′1′=′1′AND password= ″or ′1′=′1′,將出現(xiàn)單引號(hào)的地方都替換為雙引號(hào),防止注入攻擊。

4.4 限制表單或查詢字符串輸入的長(zhǎng)度。如果用戶的登錄名字最多只有10個(gè)字符,那么不要認(rèn)可表單中輸入的10個(gè)以上的字符,這將大大增加攻擊者在SQL命令中插入有害代碼的難度[4]。

4.5 數(shù)據(jù)庫(kù)中賬號(hào)類表數(shù)據(jù)加密。加密(如MD5加密)用戶輸入的數(shù)據(jù),然后再將它與數(shù)據(jù)庫(kù)中保存的數(shù)據(jù)比較,這相當(dāng)于對(duì)用戶輸入的數(shù)據(jù)進(jìn)行了“消毒”處理,用戶輸入的數(shù)據(jù)不再對(duì)數(shù)據(jù)庫(kù)有任何特殊的意義,從而也就防止了攻擊者注 入 SQL 命 令 。 System.Web.Security.FormsAuthentication類 有 一 個(gè) HashPassword-ForStoringInConfigFile,非常適合于對(duì)輸入數(shù)據(jù)進(jìn)行消毒處理[5]。

5 結(jié)語(yǔ)

隨著Web應(yīng)用技術(shù)的普及,SQL注入攻擊被攻擊者廣泛地使用,人們對(duì)于SQL攻擊已經(jīng)越來(lái)越重視。本文對(duì)SQL注入攻擊的方法、原理以及攻擊實(shí)施過(guò)程進(jìn)行闡述和總結(jié),并給出了常用攻擊方法。本文通過(guò)虛擬機(jī)在Server 2008+SQL Server 2008環(huán)境測(cè)試中通過(guò)。

[1]高明,辛陽(yáng).SQL注入攻擊防范方案的分析與設(shè)計(jì)[A].2011年通信與信息技術(shù)新進(jìn)展——第八屆中國(guó)通信學(xué)會(huì)學(xué)術(shù)年會(huì)論文集[C].2011.

[2]盧俊.SQL注入與XSS攻擊防范方法的研究以及防范模型的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2011.

[3]褚龍現(xiàn).ASP.NET 應(yīng)用中 SQL 注入攻擊的分析與防范[J].計(jì)算機(jī)與現(xiàn)代化,2014,(3).

[4]陳智堅(jiān).數(shù)據(jù)庫(kù) SQL 注入攻擊技術(shù)與防范[J].福建電腦,2013,(2).

[5]黃輝.基于SP防范SQL注入攻擊的三層信息系統(tǒng)安全設(shè)計(jì)研究[D].情報(bào)探索,2013,(10).

猜你喜歡
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
兩種新的非確定數(shù)據(jù)庫(kù)上的Top-K查詢
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 激情無極限的亚洲一区免费| 日本亚洲国产一区二区三区| 久久久久亚洲av成人网人人软件| 亚洲一区二区三区国产精华液| 国产永久在线视频| 日本道综合一本久久久88| 亚洲欧州色色免费AV| 日韩视频免费| 九九热视频精品在线| www.日韩三级| 91九色最新地址| 久久先锋资源| 日日噜噜夜夜狠狠视频| 久草青青在线视频| 片在线无码观看| 国产情侣一区二区三区| 呦女亚洲一区精品| 欧美天天干| 国产亚洲精品资源在线26u| 视频国产精品丝袜第一页| 最新午夜男女福利片视频| 搞黄网站免费观看| 亚洲国产精品一区二区第一页免| 午夜三级在线| a级毛片免费网站| 久久综合亚洲鲁鲁九月天| 国产成人你懂的在线观看| 精品伊人久久久香线蕉| 亚洲综合色婷婷中文字幕| 男人天堂伊人网| 91成人精品视频| 波多野结衣中文字幕一区二区| 亚洲天堂网在线播放| 日本一区高清| 人妻少妇乱子伦精品无码专区毛片| 丁香婷婷综合激情| 免费中文字幕在在线不卡| 亚洲欧洲AV一区二区三区| 成人av专区精品无码国产 | 99热亚洲精品6码| 国产精品任我爽爆在线播放6080| 国产久操视频| 伊人成色综合网| 国产午夜精品鲁丝片| 色老二精品视频在线观看| 91麻豆精品视频| 五月婷婷综合网| 久久情精品国产品免费| 一级爆乳无码av| 99r在线精品视频在线播放| 亚洲AV无码一区二区三区牲色| 看av免费毛片手机播放| 亚洲欧美不卡| 国产成人av一区二区三区| 欧美日本激情| 99精品在线看| 国精品91人妻无码一区二区三区| 国产区91| 亚洲无码电影| 成人在线第一页| 亚洲69视频| 黄片一区二区三区| 欧美成人午夜视频免看| 日韩一级二级三级| 亚洲无码91视频| 日韩a级毛片| 动漫精品啪啪一区二区三区| 亚洲欧美色中文字幕| 国产精品成人AⅤ在线一二三四| 日本91视频| a级毛片网| 美女视频黄频a免费高清不卡| 亚洲高清在线播放| 69av免费视频| 亚洲手机在线| 亚洲国产午夜精华无码福利| 国产精品毛片一区视频播| 免费jizz在线播放| 香蕉久人久人青草青草| 久久精品国产91久久综合麻豆自制| jizz在线免费播放| 国产高潮视频在线观看|