• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Web滲透測試的SQL注入研究

      2018-12-10 02:59:14曾佩璇湯艷君錢麗納
      關(guān)鍵詞:攻擊者漏洞語句

      ◆曾佩璇 湯艷君 錢麗納

      ?

      基于Web滲透測試的SQL注入研究

      ◆曾佩璇 湯艷君 錢麗納

      (中國刑事警察學(xué)院 遼寧 110854)

      在大數(shù)據(jù)時代的背景下,互聯(lián)網(wǎng)安全問題受到重視,網(wǎng)絡(luò)數(shù)據(jù)安全也面臨威脅和挑戰(zhàn)。本文對滲透測試技術(shù)的過程、分類進行了介紹,系統(tǒng)分析了SQL注入常用的攻擊方式以及具體實現(xiàn)的方法。

      Web;滲透測試;SQL注入

      0 引言

      隨著計算信息技術(shù)的迅猛發(fā)展,計算機和互聯(lián)網(wǎng)的應(yīng)用越來越廣泛。與此同時,不法分子以互聯(lián)網(wǎng)為平臺,利用網(wǎng)絡(luò)技術(shù)手段攻擊Web網(wǎng)站,以達到竊取網(wǎng)站數(shù)據(jù)、篡改網(wǎng)頁內(nèi)容或劫持網(wǎng)頁等目的。在多種Web安全威脅中,sql注入攻擊影響較大。在Web網(wǎng)站的開發(fā)過程中,由于開發(fā)者的疏忽、不嚴謹,沒有過濾掉用戶所輸入的不良信息,導(dǎo)致SQL注入漏洞在Web系統(tǒng)中很常見且對Web安全威脅很高。[1]

      1 滲透測試技術(shù)簡介

      滲透測試指的是對受測試系統(tǒng)進行模擬入侵攻擊,對其安全性進行評估。[2]該測試主要用來幫助用戶發(fā)現(xiàn)其管理的系統(tǒng)中潛在安全漏洞并且能直觀、動態(tài)地將攻擊過程展示給用戶,使用戶充分了解他們當(dāng)前管理的系統(tǒng)的安全狀況。滲透攻擊要求攻擊者不僅需要有強大的攻擊手段,還需要有豐富的經(jīng)驗進行合理判斷,其中常用的攻擊方法包括腳本注入式攻擊、ARP 欺騙攻擊、后門攻擊等。[3]

      滲透測試的過程如圖1所示。

      圖1 滲透測試過程示意圖

      1.1 明確目標(biāo)

      主要明確測試目標(biāo)的范圍,比如ip地址、域名、內(nèi)外網(wǎng)等。然后確定規(guī)則,測試其能滲透到哪種程度,能否直接修改進行上傳,確定能不能提取相關(guān)權(quán)限。最后根據(jù)漏洞的類型,比如web應(yīng)用的漏洞(新上線程序)、人員權(quán)限管理漏洞等,來確定具體的需求。

      1.2 信息收集

      信息收集主要利用主動掃描和開放搜索的方式獲取所需要的重要信息。包括基礎(chǔ)信息(ip,網(wǎng)段,域名等)、系統(tǒng)信息、應(yīng)用信息(web應(yīng)用,郵件應(yīng)用等)、版本信息、人員信息(域名注冊人員信息,web應(yīng)用中網(wǎng)站發(fā)帖人的id等)、防護信息。

      1.3 獲取所需要的信息

      基礎(chǔ)信息包括網(wǎng)絡(luò)連接、基礎(chǔ)設(shè)施的相關(guān)內(nèi)容。隨后進一步進行滲透,入侵內(nèi)網(wǎng),找到敏感信息。也可以一直進行滲透,但一般不建議。主要是通過添加管理賬號(容易被發(fā)現(xiàn)),駐扎手法等。最后將相關(guān)日志痕跡,上傳的文件進行清理還原。

      1.4 信息整理

      信息管理主要是整理滲透工具,滲透過程中收集的信息與發(fā)現(xiàn)的漏洞信息。主要包括滲透過程中用到的代碼,poc,exp等,收集到的一切重要以及遇到的各種漏洞,各種位置信息。

      2 滲透測試的分類

      2.1 方法分類

      (1)黑箱測試

      黑箱測試指的是攻擊者對于受測試目標(biāo)的情況沒有任何了解,對受測試目標(biāo)進行遠程攻擊,測評網(wǎng)絡(luò)的安全性,并討論相關(guān)解決方案。黑箱測試的初始信息主要源自郵件、DNS信息以及多種對外開放的服務(wù)器等。

      (2)白盒測試

      白盒測試是一種完全內(nèi)部測試,這種測試對受測試目標(biāo)的情況有著較為全面的了解,如受測試目標(biāo)的相關(guān)服務(wù)版本、網(wǎng)絡(luò)拓撲結(jié)構(gòu)、程序代碼等重要信息。[4]然后通過掃描、驗證測試等手段,對受測試目標(biāo)進行檢驗測評,發(fā)現(xiàn)問題。因此白盒測試相對黑盒測試實用性更高,目的性更強,花費代價也相對來說較小。

      2.2 目標(biāo)分類

      滲透測試的目標(biāo)主要有四類,分別為操作系統(tǒng)、網(wǎng)絡(luò)設(shè)備、應(yīng)用程序、數(shù)據(jù)庫。[5]操作系統(tǒng)滲透測試主要針對的是Windows、Mac OS、Linux等主機系統(tǒng)。當(dāng)滲透測試的目標(biāo)是網(wǎng)絡(luò)設(shè)備時,主要內(nèi)容包括防火墻、入侵檢測系統(tǒng),路由器以及交換機等。應(yīng)用程序滲透測試的目標(biāo)是安裝在受測試目標(biāo)上的各種軟件、應(yīng)用。數(shù)據(jù)庫滲透測試的目標(biāo)是各種主流數(shù)據(jù)庫,如MySql、SQLite、Oracle、MS SQL Server、Access等。

      3 SQL注入攻擊概述

      3.1 SQL注入攻擊原理

      Web前端與后臺數(shù)據(jù)庫的交互是通過傳遞請求與應(yīng)答消息來實現(xiàn)的。這一前后端分離機制為Web網(wǎng)站帶來了很強的靈活性的同時,也留下了安全隱患——前端與后端之間的傳遞的消息命令有可能被惡意修改。SQL注入就是惡意攻擊者利用這一漏洞,將特定的SQL語句插入到數(shù)據(jù)庫查詢代碼中,根據(jù)程序返回的結(jié)果,獲得某些他想得知的數(shù)據(jù)(如用戶名、密碼等)。[6]SQL注入的前提是Web網(wǎng)站對輸入的參數(shù)不進行檢查和過濾。

      圖2 SQL注入攻擊原理示意圖

      3.2 SQL注入類型

      (1)SQL常規(guī)注入

      攻擊者執(zhí)行惡意SQL語句,分析系統(tǒng)回應(yīng)的報錯消息,從中分析提取有用的信息,這些信息包含數(shù)據(jù)庫表名、數(shù)據(jù)庫類型等。

      (2)SQL盲注

      SQL盲注是指攻擊者實施攻擊之后,無法看到系統(tǒng)返回的錯誤內(nèi)容,其必須利用其他的方法進行判斷。因為此特點,所以這種注入才叫做“盲注入”,具體方法是利用服務(wù)端返回的“TRUE/FALSE”進行推測。當(dāng)系統(tǒng)返回錯誤信息時,SQL常規(guī)方法的效率更高,但如果系統(tǒng)屏蔽了錯誤信息,盲注便能發(fā)揮出作用。[7]

      3.3 SQL注入的步驟

      (1)SQL注入判斷

      使用動態(tài)頁面(靜態(tài)的HTML網(wǎng)頁則沒有這個)或使用數(shù)據(jù)庫調(diào)用(參數(shù)傳遞)的Web網(wǎng)站往往存在SQL注入漏洞。動態(tài)架構(gòu)Web網(wǎng)站的數(shù)據(jù)存儲于后臺數(shù)據(jù)庫,當(dāng)打開某一個網(wǎng)頁時,Web服務(wù)器會根據(jù)Web前端傳遞過來的參數(shù)在后臺數(shù)據(jù)庫中進行查詢?nèi)缓蠓祷財?shù)據(jù)。因此,形如:http://xxx.xxx.xxx/xxx.asp?id=xxx等帶有參數(shù)的動態(tài)網(wǎng)頁中很可能存在SQL注入漏洞。

      (2)尋找SQL注入點

      在對Web網(wǎng)站發(fā)起SQL注入攻擊之前,需要尋找SQL注入漏洞的所在位置,也就是尋找所謂的SQL注入點。網(wǎng)站的數(shù)據(jù)填寫頁面、信息查找頁面或登錄頁面等,這些頁面中的可以查找或修改數(shù)據(jù)的位置一般有SQL注入點。判斷某個Web鏈接有沒有SQL注入點,可以通過對其傳入的可控參數(shù)進行簡單的構(gòu)造,通過服務(wù)端的返回信息進行判斷是否有SQL注入點。

      (3)判斷數(shù)據(jù)庫類型

      Web網(wǎng)站的架設(shè)方式有很多種,ASP最常搭配Access或SQL Server數(shù)據(jù)庫,PHP一般搭配MySql數(shù)據(jù)庫,JSP則經(jīng)常搭配Oracle數(shù)據(jù)庫。對于不同的數(shù)據(jù)庫,其注入的方法、函數(shù)都存在著不同點。需要先了解目標(biāo)Web網(wǎng)站使用的數(shù)據(jù)庫的類型再進行注入操作。

      (4)實施注入并提升權(quán)限

      攻擊者獲取到足夠的信息(注入點、數(shù)據(jù)庫類型等)之后,構(gòu)造SQL注入語句進行注入嘗試。在注入攻擊成功后,獲取到數(shù)據(jù)庫的賬戶密碼等信息,然后利用賬戶密碼登錄Web后臺,使用上傳木馬、webshell等手段,提升自身權(quán)限,設(shè)置后門。

      3.4 SQL注入攻擊方式

      目前,SQL注入攻擊包括有四種廣泛使用的攻擊方法,分別是:使用服務(wù)器變量注入、利用Cookie注入、用戶輸入注入和二階注入。[8]下面對這四種形式的攻擊進行簡要介紹:

      (1)利用服務(wù)器變量注入

      服務(wù)器變量主要指環(huán)境網(wǎng)絡(luò)、消息報頭、及HTTP中包含的變量。如果不對Web前端向后端服務(wù)器提交的數(shù)據(jù)請求執(zhí)行過濾,那么使用服務(wù)器變量生成的SQL語句將被發(fā)送到數(shù)據(jù)庫端,攻擊者可以修改HTTP及網(wǎng)絡(luò)消息的報頭值,然后構(gòu)造修改SQL語句,實施SQL注入。

      (2)利用Cookie注入

      Cookie用途是當(dāng)用戶瀏覽網(wǎng)站需要登錄賬戶時,可以將登錄名、密碼以加密的形式進行記錄下來。當(dāng)再次瀏覽同一網(wǎng)頁時,將自動登錄并反饋給用戶。Cookies 給用戶提供極大便利的同時,如果攻擊者獲取到Web網(wǎng)站的Cookie信息,使用Cookie中的信息構(gòu)造SQL查詢語句,然后將SQL注入攻擊插入Cookie一起上傳發(fā)動SQL注入攻擊,還會導(dǎo)致用戶個人隱私遭到泄露。

      (3)利用用戶輸入注入

      用戶輸入注入方式主要是利用GET方法與POST請求兩種方式提交SQL注入語句。GET方法主要是利用搜索或者直接輸入網(wǎng)站域名,在該鏈接中可以直接看到其包含的參數(shù)。此時攻擊方可對用戶訪問或輸入的域名中的參數(shù)進行修改,執(zhí)行攻擊。但POST方式不會顯示參數(shù),需要進行報文的截獲加上專門的修改工具才能夠完成SQL注入。

      (4)二階注入

      二階注入與一階注入相關(guān),它們造成的傷害是一致的,都允許攻擊者訪問數(shù)據(jù)庫。二階注入是一種觸發(fā)型攻擊,攻擊者提交兩個或兩個以上的請求,將惡意數(shù)據(jù)上傳到數(shù)據(jù)庫中,一旦這些數(shù)據(jù)被使用,則攻擊被觸發(fā)。且二階注入很微妙,主要依靠測試人員對該系統(tǒng)功能設(shè)置有充分了解以及對經(jīng)常出錯的位置能夠進行經(jīng)驗判斷,但經(jīng)驗判斷不能代表測試結(jié)果。

      4 基于Web滲透測試的SQL注入的實現(xiàn)

      SQL注入攻擊者經(jīng)常采用盲注的方法進行手動攻擊。SQL盲注不能直接獲得后臺的數(shù)據(jù)庫信息,需要根據(jù)多種檢測手段(例如基于報錯的檢測、布爾檢測等)返回的信息來進行分析判斷。然后構(gòu)造SQL注入語句獲取數(shù)據(jù)庫信息,獲得權(quán)限,進行上傳木馬、設(shè)置后門等操作。SQL手動注入的信息收集、分析、利用過程,也是Web滲透測試的一種應(yīng)用。SQL手動注入攻擊示意圖如圖2。

      圖2 手動注入攻擊流程示意圖

      4.1 SQL注入過程之尋找注入點

      使用metasploitable2為靶機,尋找SQL注入攻擊點。metasploitable是一個基于metasploit框架的的靶機,它自身帶有多種安全漏洞,可以提供可靠的滲透測試環(huán)境。使用kali作為發(fā)起攻擊端。kali系統(tǒng)中自帶的BurpSuit是一個功能強大的滲透測試工具,可以用來實施SQL注入攻擊。開啟metasploitable2的DVWA服務(wù),設(shè)置其安全級別為“Low”。第一步采用基于報錯的檢測方法,在DVWA的輸入框中輸入英文字符單引號“’”,點擊“Submit”提交,返回報錯信息“You have an error in your SQL syntax...”;第二步,依次輸入基于布爾檢測的兩條語句1’ and ‘1’=’1和1’ and ‘1’=’2,若提交后這兩條語句返回的結(jié)果不同,則可以判斷此處存在SQL注入漏洞;第三步可使用order by語句判斷字段數(shù),例如,輸入1′ or 1=1 order by 3 時報錯,改為1′ or 1=1 order by 2時未報錯,即可判定該注入點執(zhí)行的SQL查詢語句中存在兩個字段。

      4.2 獲取數(shù)據(jù)庫賬戶密碼

      在本次實驗中,使用布爾檢測,輸入order by 8后,頁面返回正常結(jié)果,說明數(shù)據(jù)庫表的列數(shù)為8列,有8個字段。接下來進一步分析判斷,使用聯(lián)合查詢,輸入“and 1=2 union select 1,2,3,4,5,6,7,8--”,顯示除該數(shù)據(jù)庫列的具體位置。之后,再使用一次union聯(lián)合查詢,輸入“union select user,password from users—”,數(shù)據(jù)庫中的表名都被查詢出來了。復(fù)制表名信息到text文本文檔。最后,再使用kali的John the Ripper快速密碼破解程序進行密碼爆破。密碼破解結(jié)果如下圖3所示。

      圖3 賬號密碼破解成功案例圖

      4.3 手動賬號密碼猜解

      使用kali密碼破解時,可能會出現(xiàn)破解不成功的情況??梢該Q一種思路,采用手動猜解的方式獲取賬號和密碼。使用update語句。輸入update users set user=“1234”where user=”admin”,接下來使用kali系統(tǒng)中的數(shù)據(jù)庫連接工具hexorbase,進入靶機后臺數(shù)據(jù)庫后在輸入框中輸入上述的SQL注入語句后,顯示示successfully executed query。之后在DVWA輸入框中輸入剛更改的賬號信息,登錄并進行驗證。

      5 結(jié)束語

      SQL注入是一種常見的滲透技術(shù),對網(wǎng)絡(luò)安全的威脅很高。通過對Web滲透測試與手動SQL注入的研究,可以對SQL注入攻擊的原理、步驟有更加深入的理解。SQL注入攻擊雖然手段成熟隱蔽,但通過分析Web網(wǎng)站的服務(wù)器日志、數(shù)據(jù)庫日志等信息,可以追溯到攻擊源。[9]打擊SQL注入這一惡意攻擊行為,維護網(wǎng)絡(luò)安全,這將是接下來研究的重點。

      [1]羅麗紅,柯靈,楊華瓊.web安全之SQL注入漏洞及其防御[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017(11):81-82.

      [2]魏星. 基于手工SQL注入的Web滲透測試技術(shù)研究[D].中北大學(xué),2015.

      [3]徐光.基于Kali Linux的Web滲透測試研究[J].信息安全與技術(shù),2015,6(03):56-58.

      [4]常艷,王冠.網(wǎng)絡(luò)安全滲透測試研究[J].信息網(wǎng)絡(luò)安全,2012(11):3-4.

      [5]蔡凱. WLAN安全協(xié)議測試技術(shù)與系統(tǒng)實現(xiàn)[D].西安電子科技大學(xué),2011.

      [6]高洪濤.SQL注入攻擊途徑及策略分析[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2011(03):14-16.

      [7]劉合葉. 多功能SQL注入檢測系統(tǒng)的實現(xiàn)及攻擊防范方法研究[D].北京交通大學(xué),2009.

      [8]郭軼. 基于滲透測試的SQL注入漏洞檢測及防范技術(shù)研究[D].哈爾濱工程大學(xué),2016.

      [9]金濤,張啟翔.基于SQL注入的Web滲透技術(shù)取證方法的研究[J].網(wǎng)絡(luò)空間安全,2017,8(Z3):55-58.

      猜你喜歡
      攻擊者漏洞語句
      漏洞
      基于微分博弈的追逃問題最優(yōu)策略設(shè)計
      重點:語句銜接
      正面迎接批判
      愛你(2018年16期)2018-06-21 03:28:44
      精彩語句
      三明:“兩票制”堵住加價漏洞
      漏洞在哪兒
      兒童時代(2016年6期)2016-09-14 04:54:43
      高鐵急救應(yīng)補齊三漏洞
      有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
      如何搞定語句銜接題
      語文知識(2014年4期)2014-02-28 21:59:52
      肇东市| 会东县| 黑山县| 保山市| 海盐县| 乐业县| 崇明县| 肇庆市| 额济纳旗| 始兴县| 大姚县| 文水县| 抚远县| 莲花县| 雅江县| 伊吾县| 南江县| 定结县| 民和| 乌审旗| 枣强县| 体育| 大厂| 大港区| 河津市| 富源县| 新竹县| 临夏市| 芒康县| 维西| 刚察县| 麻城市| 方正县| 格尔木市| 盈江县| 商丘市| 旌德县| 阳城县| 广河县| 承德市| 万源市|