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

SQL漏洞研究及實戰分析

2018-02-25 02:39:06盧成浪鄭城仁
電子技術與軟件工程 2018年7期

盧成浪 鄭城仁

摘要 SQL漏洞是眾多web漏洞中最常見的漏洞之一,也是黑帽子黑客最常見的攻擊手段之一。隨著SQL漏洞被頻頻曝光,對于SQL用戶的隱私保護得到人們的廣泛關注。文章主要研究SQL漏洞原理及各種攻擊手段,同時通過實戰分析來總結防范措施。文章主要通過四方面進行描述,第一章描述SQL漏洞的歷史及當前現狀;第二章分析SQL的原理;第三章描述SQL的攻擊模型及檢測方法;第四章進行總結并展望。

【關鍵詞】SQL 漏洞 Web 用戶隱私

1 SQL注入漏洞的歷史及現狀

1.1 SQL漏洞發現歷史

SQL注入最早是由Jeff Forristal在1998年發現的,在1998年的10月份,Forristal寫了一篇關于如何在Windows NT服務器上進行攻擊的文章,他發現,那時候大部分的網站都使用的是Access數據庫,并通過分析源代碼,程序員在寫SQL語法中存在邏輯上的錯誤,于是,他通過分析SQL語法及后端連接數據庫程度,成功從數據庫中返回用戶的敏感信息,通過SQL漏洞,數據庫被成功滲透。

1.2 SQL漏洞的現狀

SQL注入在2007年被認為是在web應用程序中十大漏洞之一,在2010年作為主要的研究對象在公開的web應用安全項目中,在2013年,SQL注入攻擊在OWASP十大攻擊中是最常見的攻擊手法之一。具體例子如下(以下涉及的網站注入己修復):

(1)在2002年二月,Jeremiah Jacks發現Guess.com網站存在SQL注入漏洞,允許任何人能夠重構URL參數來訪問數據庫,使得數據庫返回20000個用戶名、銀行卡號以及用戶的其它敏感信息;

(2)在2005年11月,一個青年黑客利用SQL注入來破壞臺灣的一家信息安全雜志社網站,并且竊取了用戶的信息;

(3)在2006年一月,俄羅斯的電腦犯罪者通過SQL漏洞進入了愛爾蘭的一家政府網站并竊取了用戶的銀行卡號等敏感信息,然后在網站將這些信息公開販賣;

(4)在2006年三月,一個黑客發現了offical印度官方旅游網站的一個SQL漏洞;

(5)在2007年六月,一名電腦罪犯利用SQL注入漏洞破壞了微軟在英國的網站,微軟發言人確認了網站存在該漏洞;

(6)在2007年九月和2009年一月,土耳其黑客組織mOsted通過SQL注入來利用微軟的SQL服務器攻擊美國軍事工程網站;

(7)在2008年一月,有成千上萬裝有微軟SQL數據庫的PC機感染了SQL注入攻擊,該攻擊主要是利用應用程序中脆弱的代碼實現的;

(8)在2008年五月,在中國的一名程序員通過google搜索工具來自動查找SQL服務網站,并通過自動化SQL注入工具來進行大范圍攻擊;

(9)在2009年八月,美國司法部門逮捕了一名叫Albert Gonzalez的美國公民和兩名俄羅斯公民,原因是他們使用SQL注入攻擊來竊取了1300萬的信用卡數據。這一事件被當時稱為‘美國歷史上最大的竊取個人信息案犯罪分子通過信用卡數據在支付平臺上進行大規模的金錢交易,不僅造成個人財產損失,也使支付平臺造成混亂;

(10)在2010年七月,瑞士選舉期間,黑客企圖重寫SQL命令來進行代碼注入,使得產生大量非人為的選票;

(11)在2011年三月,MySQL官方網站mysql.com被黑客利用SQL盲注實現了攻擊,導致大量的數據庫信息泄露;

(12)在2013年十一月,黑客組織RaptorSwag聲稱利用SQL注入攻擊了中國國際運動事務所中71家中國政府數據庫,并通過匿名的形式將這些信息公開泄露。

2 SQL原理分析

2.1 原理簡介

SQL(結構化查詢語句)注入攻擊主要使通過構造特殊的輸入參數傳入到Web應用程序中,這些輸入參數大部分是由合法的SQL組合構成,從而使的數據庫溢出敏感信息。

2.2 Web應用程序框架

當我們訪問一個網站,然后網站返回我們需要的內容,這看上去只是一個簡單的request和response的過程,但是對于數據的轉化和訪問過程,具體包括如下:

2.2.1 界面層/表示層

這層主要是呈現用戶需要的內容,主要是由瀏覽器將HTML代碼轉化為適合人們閱讀的內容。

2.2.2 業務邏輯層/領域層

這層主要是利用后臺服務器語言(如:PHP、ASP、JSP等)將表示層上的代碼轉化、連接到下一層(數據訪問層),同時將數據訪問層返回的數據解析成HTML代碼,發送至表示層。

2.2.3 數據訪問層/存儲層

這層主要是存儲數據的,由上一層腳本來連接DBMS(數據庫管理系統),并執行SQL語言將數據添加或取出,然后傳回結果給Web服務器。

2.3 SQL注入產生

如果只是簡單的訪問一個網站,沒有提交數據表單,一般是不會存在SQL注入的,我們稱這種訪問為線性訪問。但是在大多數情況下,訪問一個網站是需要結合用戶的輸入數據,從而返回用戶需要的內容,這種網站一般是動態網站,具體的實現方式將會在下一章描述。

3 攻擊模型及檢測方法

3.1 實驗環境

本實驗運行在Kali linux平臺上,處理器:Intel(R) Core(TM) 15-3210M cpu @2.50GHz2.50GHz;內存(RAM): 6.OOGB;版本號:Linuxkali 4.9.O-kali3-amd64

3.2 攻擊模型

首先我們分析漏洞的檢測技術,具體包含以下五個方面:

3.2.1 基于布爾的盲注檢測

基于布爾的盲注在注入布爾語法時,服務器僅僅會返回兩種結果,True或False,但是并不能獲取我們需要的信息,比如數據庫的大小、長度和數據庫名等,所以我們需要構造SQL語法使得數據庫返回我們需要的內容,比如:原始URL(同一資源定位符)為http://127.O.O.l/s qlilabs/Less-5/?id=l;我們獲取數據庫長度的最終URL為:http://127.O.O.l/sqlilabs/Less-5/?id=l' andlength(database(》=8%23;此時如果頁面返回正確結果,則說明數據庫的長度為8。

3.2.2 基于時間的盲注

基于時間的盲注顧名思義就是根據時間的長短來判斷是否有漏洞,我們在查找SQL漏洞時,經常會發現有些漏洞難以被識別,及Web頁面不會返回任何信息,所以無法檢索到任何信息。雖然Web頁面不會返回任何信息,但當我們向數據庫注入一個時間延遲時,可以根據服務器響應時間的長短來判斷是否有漏洞的存在,具體的參數構造如下:

‘and (select* from (select(sleep(20》)a)--+;

這條語句主要的功能是讓服務器延遲20秒返回響應,在具體的攻擊環節可以根據不同需求而改變。

3.2.3 基于錯誤的檢測

基于錯誤的檢測是當構造一個參數(比如加一個括號或加一個單引號)傳給服務器時,服務器會判斷你的語法是否正確,如果錯誤,會返回一個錯誤信息,當用戶在瀏覽器中看到返回的錯誤信息時,基本可以判斷該數據庫存在注入漏洞,因為這就說明服務器并沒有對用戶的輸入進行過濾或者轉義。

3.2.4 基于UNION的聯合查詢檢測

Union語句可聯合兩個或多個select查詢語句,但是前提是多個查詢需要滿足相同的列數及數據類型相同才能正確返回查詢結果。簡單的查詢語句可以是:

SELECT column name FROM table__ nameUNION SELECT column name FROM tablename,

3.2.5 基于堆疊查詢的檢測

因為在SQL語句中,分號(;)表示一個語句的結束,因此,當我們在一條SQL語句后面在插入一條SQL語句,相當于就執行了兩條SQL語句,從而達到攻擊者的需求。例如以下:

SELECT * FROM product WHEREid=l;DELETE FROM product;

因此,如果在服務器端沒有進行過濾,當攻擊者插入這條語句時,首先它會顯示product表中id為1的信息,然后再刪除product這張表,從而破壞用戶的數據。

以上我們分析了多種攻擊檢測方式,但其實歸結起來就是兩方面的類型:基于數字型注入和基于字符型注入。

(1)基于數字型注入:假如原始URL為:http://xxX /abc.php?id=x我們再后面添加參數,構成新的URL:http://xxx/abc.php?id=x and1=1和http://xxx/abc.php?id=x and l=2。如果分別返回正確頁面和錯誤頁面,則說明該注入為數字型注入。因為1=1為真,1=2為假,所以分別會返回正確和錯誤。

(2)基于字符型注入:同理,假設原URL為http://xxx/abc.php?id=x插入參數后,新 的URL為http://xxx/abc.php?id=x' and'l=1和http://xxx/abc.php?id=x' and'1=2。如果分別返回正確頁面和錯誤頁面,則說明該漏洞為字符型漏洞。上面兩個插入參數都閉合了單引號,所以還是判斷1=1和1=2的真假情況。

3.3 攻擊實戰

接下來,我們用具體的實戰形式進行演示操作。圖1是一個大概的攻擊模型,首先從客戶端發起攻擊,然后讓服務器返回結果。

因為手動檢測相對來說效率低,并且比較麻煩,所以我們使用自動化測試攻擊sqlmap,下面我們簡單介紹sqlmap的用法。

-u表示需要檢測的URL地址

-g表示使用google搜索來作為一個URL地址

--current-user表示查找當前數據庫管理系統的所有用戶

--currenr-db表示查找當前的所有數據庫

--passwords表示查找用戶的所有密碼哈希值

--tables表示查找一個數據庫中的表

--columns表示查找一個表中的列

--dump表示查找表中的值

這里,我們以http://www.xxx.com/subcatphp?id=2網站為例,因為sqlmap集成了上述五種的注入檢測方法,首先,我們查看該網站是否有漏洞存在:

sqlmap -u “http://www.xxx.com/subcatphp?id=2”

返回結果顯示,id存在漏洞注入,則獲取數據庫:

sqlmap -u “http://www.xxx.com/subcatphp?id=2” dbs會返回所有數據庫(bibleglossary. bible_history、information schema.keywords、kidsdict)

查看數據庫keywords中的表有哪些:

sqlmap -u “http://www.xxx.com/subcatphp?id=2”-D keywords -tables結果返回所有表(admin、proj ects、style)。查看表admin的列字段:

sqlmap -u “http://www.xxx.com/subcat

4 總結并展望

SQL漏洞注入的危害很大,若遭到攻擊后,小則網站無法訪問,大則數據庫遭到破壞,用戶敏感信息泄露,不但造成經濟上的損失,還可能給人精神和心里造成創傷,所以,對于SQL漏洞注入的防范是必不可少的,下面將進行一個簡單的歸納和總結。

(1)封裝客戶端的提交信息。

(2)屏蔽出錯信息。

(3)對用戶的輸入信息進行轉義和過濾處理。

(4)不要使用字符串來連接SQL查詢語句,而是使用SQL變量來處理。

(5)將權限設置為最小化,盡量不要賦予寫的權限。

(6)去掉或修改Web服務器上危險的命令,比如ftp、telnet、cmd等。

(7)將密碼設置的更加復雜,包含大小寫、英文字符、特殊字符等,并且使用混合加密而不是單單的md5加密方式。

(8)將SQL語句進行預編譯。本文主要是描述了當前SQL注入漏洞的檢測,同時借助自動化測試工具sqlmap進行自動化檢測并攻擊,在最后根據漏洞注入的原理提出了一些防范措施,對防范措施的具體實現過程及分析將是下一步研究的目標。

參考文獻

[1] Yu

Jing. GaoFeng, XuLianghua,et al.Research on penetration testingbased on SQL injection[J].Computer Engineering andDesign, 2007, 28 (15): 3577-3579.

[2]Williams J,Wichers D.OWASP top 10-2010 rcl [R]. Washington: OWASP, 2010.

[3]Zhang Zhuo. SQL injection attacktechniques and countermeasuresanalysis [D]. Shanghai Jiao TongUniversity, 2007.

[4] Shelly D A, Tront J G, Chair S F,et al. Using a Web Server TestBed to Analyze the Limitationsof Web Application VulnerabilityScanners [J] . Virginia Tech, 2 010.

[5] Shelly, David A,et al. "Using a WebServer Test Bed to Analyze theLimitations of Web ApplicationVulnerability Scanners. "VirginiaTech, 2010.

[6] Shelly, D. A. , Tront, J. G. , Chair,S. F. ,Midkiff, R. C. , Marchany, &Shelly,A. (2010).Using a web servertest bed to analyze the limitationsof web application vulnerabilityscanners. Virginia Tech.

[7]Tabatabaei S A,Asadpour M.Study ofInfluential Trends, Communities,and Websites on the Post-electionEvents of Iranian PresidentialElection in Twitter[M].SocialNetwork Analysis-Community Detectionand Evolution. Springer InternationalPublishing, 2014: 71-87.

[8]張勇,李力,薛倩.Web環境下SQL注A攻擊的檢測與防御 [J].現代電子技術,2004,182(15):105-107.

主站蜘蛛池模板: 青青久视频| 亚洲第一区在线| 88av在线| 免费国产在线精品一区| 国产亚洲男人的天堂在线观看| 亚洲日本精品一区二区| 亚洲男人天堂网址| av大片在线无码免费| 激情综合网址| 9啪在线视频| 色窝窝免费一区二区三区| 91黄视频在线观看| 国产成人91精品免费网址在线| а∨天堂一区中文字幕| 亚洲一区二区无码视频| 亚洲欧美日韩动漫| 小13箩利洗澡无码视频免费网站| 中文字幕在线观| 亚洲欧洲日韩综合| 91在线国内在线播放老师| 国产精品不卡片视频免费观看| 精品无码专区亚洲| 日韩一区二区在线电影| 亚洲综合色婷婷中文字幕| 欧美日韩专区| 久久午夜夜伦鲁鲁片无码免费| 久996视频精品免费观看| 免费人成网站在线高清| 国产精品偷伦在线观看| 91成人在线免费观看| 一本大道无码高清| 亚洲精品日产AⅤ| 国产精品免费福利久久播放| 亚洲日韩精品无码专区| www精品久久| 亚欧成人无码AV在线播放| A级全黄试看30分钟小视频| 国内自拍久第一页| 欧美亚洲一区二区三区导航| 国产欧美中文字幕| 91色爱欧美精品www| 欧美伦理一区| 久久精品最新免费国产成人| 一区二区无码在线视频| 久久免费视频播放| 国产免费好大好硬视频| 国产精品亚洲天堂| AV熟女乱| 亚洲 成人国产| 久久香蕉国产线看观看亚洲片| 在线观看国产黄色| 五月天综合婷婷| 国产男女XX00免费观看| 成人午夜亚洲影视在线观看| 国产AV无码专区亚洲精品网站| 激情综合网激情综合| 五月婷婷欧美| 中文字幕在线看| 亚洲成aⅴ人在线观看| 免费一极毛片| 天堂久久久久久中文字幕| 无码中文字幕精品推荐| 欧美日韩久久综合| 亚洲综合欧美在线一区在线播放| 日韩精品免费一线在线观看| 日韩无码视频网站| 成人午夜精品一级毛片| 亚洲国产欧美国产综合久久| 欧美日本一区二区三区免费| 国产精品入口麻豆| 国产三级国产精品国产普男人| 高清精品美女在线播放| 伊人成人在线| 欧美日韩国产精品综合| 色精品视频| 久久综合伊人 六十路| 国产香蕉国产精品偷在线观看 | 亚洲 欧美 日韩综合一区| 99久久免费精品特色大片| 在线观看热码亚洲av每日更新| 欧美人与牲动交a欧美精品| 18黑白丝水手服自慰喷水网站|