亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于DVWA 平臺(tái)的SQL 注入滲透測(cè)試*

        2022-11-04 02:22:52虞菊花喬虹
        科技與創(chuàng)新 2022年21期
        關(guān)鍵詞:頁(yè)面數(shù)據(jù)庫(kù)用戶

        虞菊花,喬虹

        (常州信息職業(yè)技術(shù)學(xué)院網(wǎng)絡(luò)空間安全學(xué)院,江蘇常州 213164)

        在信息化時(shí)代,萬(wàn)物皆可數(shù)據(jù)。互聯(lián)網(wǎng)中的信息可以用指定的數(shù)據(jù)形式表征,該表征數(shù)據(jù)以不同的方式被存儲(chǔ),待使用者需要時(shí)再進(jìn)行獲取和處理。當(dāng)然,最常見的便是將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。但是,隨著網(wǎng)絡(luò)安全問(wèn)題越來(lái)越嚴(yán)重,數(shù)據(jù)庫(kù)中的數(shù)據(jù)被不法分子通過(guò)各種技術(shù)手段非法竊取,成為了經(jīng)常發(fā)生的惡性安全事件。

        OWASP(Open Web Application Security Project,開放式Web 應(yīng)用程序安全項(xiàng)目)組織發(fā)布的“十大安全漏洞列表”,具有較高的權(quán)威性。注入型漏洞在歷年發(fā)布的漏洞列表中都是榜上有名的,其中,SQL 注入漏洞是導(dǎo)致數(shù)據(jù)泄露的主要原因之一。為了研究SQL注入漏洞,像OWASP 研制的WebGoat、RandomStorm公司的開源項(xiàng)目DVWA 是漏洞分析和滲透測(cè)試實(shí)戰(zhàn)的首選[1]。

        本文基于SQL 注入的工作原理,在DVWA 開源平臺(tái)的漏洞測(cè)試環(huán)境中進(jìn)行SQL 注入滲透測(cè)試實(shí)戰(zhàn),并根據(jù)SQL 注入初級(jí)滲透測(cè)試的流程,明確SQL 注入攻擊的實(shí)現(xiàn)方式,最后探索SQL 注入漏洞的防護(hù)方法。

        1 DVWA 平臺(tái)概述

        DVWA(Damn Vulnerable Web App,非常脆弱的Web 應(yīng)用)存在著各種各樣的漏洞。在正式的生產(chǎn)環(huán)境中,安全技術(shù)人員如果對(duì)真實(shí)的上線網(wǎng)站進(jìn)行各種漏洞的滲透測(cè)試,會(huì)觸犯現(xiàn)存的網(wǎng)絡(luò)安全法律法規(guī),因此,安全相關(guān)從業(yè)人員需要一個(gè)合法的實(shí)戰(zhàn)環(huán)境來(lái)測(cè)試自己的技能和工具。DVWA 的出現(xiàn)就很好地解決了這個(gè)問(wèn)題,為安全人員提供了一個(gè)滲透測(cè)試環(huán)境,讓其自主練習(xí),助其更好地理解各個(gè)漏洞的產(chǎn)生原理,以更好地防范各類攻擊的發(fā)生。

        DVWA 的Web 應(yīng)用后端使用PHP 語(yǔ)言開發(fā)的,并且使用MySQL 數(shù)據(jù)庫(kù)存儲(chǔ)網(wǎng)站中的數(shù)據(jù)。該平臺(tái)主要包括暴力破解、命令注入、跨站請(qǐng)求偽造CSRF、文件包含、文件上傳、不安全的驗(yàn)證碼、SQL 注入、SQL盲注、反射型跨站腳本XSS、存儲(chǔ)型跨站腳本XSS 共10 個(gè)經(jīng)典模塊以供使用者對(duì)學(xué)習(xí)的技能進(jìn)行驗(yàn)證。

        2 SQL 注入工作原理

        SQL 注入指攻擊者通過(guò)拼接正常的用戶輸入構(gòu)造特殊的SQL 語(yǔ)句,該語(yǔ)句通過(guò)HTTP 請(qǐng)求被傳輸?shù)胶蠖朔?wù)器,服務(wù)器在邏輯處理時(shí)沒有對(duì)其進(jìn)行嚴(yán)格的檢驗(yàn),導(dǎo)致SQL 語(yǔ)句傳輸?shù)綌?shù)據(jù)庫(kù)服務(wù)器中被執(zhí)行,攻擊者獲取到了惡意SQL 語(yǔ)句執(zhí)行后的結(jié)果,得到了相應(yīng)的數(shù)據(jù)信息[2]。

        攻擊者在正常的Web 應(yīng)用訪問(wèn)尋找SQL注入的用戶輸入點(diǎn),如URL 參數(shù)、頁(yè)面表單的文本框等。在SQL 注入點(diǎn)的原輸入?yún)?shù)中拼接SQL 語(yǔ)句,從而構(gòu)造惡意的SQL 語(yǔ)句,實(shí)現(xiàn)攻擊者的目的;該語(yǔ)句隨著HTTP 請(qǐng)求發(fā)送到Web 服務(wù)器,Web 服務(wù)器處理后直接將其發(fā)給數(shù)據(jù)庫(kù)服務(wù)器執(zhí)行;數(shù)據(jù)庫(kù)服務(wù)器接收到SQL 語(yǔ)句后執(zhí)行該語(yǔ)句,并向Web 服務(wù)器返回執(zhí)行后的結(jié)果;Web 服務(wù)器將結(jié)果返回給攻擊者,攻擊者就看到了自己構(gòu)造的SQL 語(yǔ)句執(zhí)行后的信息,獲取到了相應(yīng)的數(shù)據(jù),或者根據(jù)執(zhí)行結(jié)果進(jìn)行下一步的攻擊。

        SQL 注入主要分為2 種類型,數(shù)字型注入和字符型注入。數(shù)字型類型是指用戶輸入的參數(shù)為數(shù)值型,在類似PHP 的弱類型語(yǔ)言中,數(shù)字型SQL 注入類型較為常見,如常用的查詢指定ⅠD 的SQL 語(yǔ)句“SELECT*FROM TABLE WHERE id=3”;字符型類型是指用戶輸入的參數(shù)為字符串,如常用的查詢指定用戶名的SQL 語(yǔ)句“SELECT * FROM TABLE WHERE user='admin'”。由2 個(gè)示例語(yǔ)句可以看到,2 個(gè)SQL 注入類型最大區(qū)別在于是否用單引號(hào)將參數(shù)閉合。

        3 SQL 注入滲透測(cè)試

        DVWA平臺(tái)的SQL注入不同等級(jí)的滲透測(cè)試流程都是相同的,本文以SQL 注入初級(jí)為例,如圖1 所示。

        圖1 SQL 注入滲透測(cè)試流程圖

        SQL 注入滲透測(cè)試需要在Web 頁(yè)面中現(xiàn)查找注入點(diǎn),如搜索框、用戶名和密碼的文本框、URL 等,判斷是否存在SQL 注入漏洞;找到SQL 注入點(diǎn)后,判斷SQL 注入是數(shù)字型還是字符型的注入;根據(jù)SQL 注入類型判斷的結(jié)果,在正常的用戶輸入?yún)?shù)后,使用特定的方式拼接構(gòu)造SQL 語(yǔ)句獲取當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)名;獲取數(shù)據(jù)庫(kù)名后,構(gòu)造SQL 語(yǔ)句獲取當(dāng)前數(shù)據(jù)庫(kù)的所有數(shù)據(jù)表的表名;根據(jù)表名判斷,獲取指定表所有字段的字段名;最后,獲取指定字段對(duì)應(yīng)的數(shù)據(jù)[3]。當(dāng)然,部分?jǐn)?shù)據(jù)是加密的,需要解密后才能看到原始數(shù)據(jù)。

        3.1 查找注入點(diǎn)

        初級(jí)SQL 注入的頁(yè)面是一個(gè)查找指定用戶ⅠD 的用戶信息的界面,只需要輸入用戶的ⅠD,則會(huì)顯示用戶的“First name”和“Surname”。在頁(yè)面的文本框中輸入“2'”,頁(yè)面返回報(bào)錯(cuò)提示信息,表明單引號(hào)被帶入SQL 語(yǔ)句中被執(zhí)行了,即SQL 注入漏洞可能是存在的。用戶ⅠD 參數(shù)的輸入文本框?yàn)镾QL 注入點(diǎn)。

        3.2 判斷SQL 注入類型

        SQL 注入可能是數(shù)字型的,也可能是字符型的,不同的類型對(duì)應(yīng)的SQL 語(yǔ)句構(gòu)造方式不同,需要通過(guò)永真條件“1=1”來(lái)判斷SQL 注入的類型。輸入“2'or 1=1#”,頁(yè)面返回了所用用戶的信息。這說(shuō)明原參數(shù)存在閉合的成對(duì)單引號(hào),右側(cè)的單引號(hào)被“#”注釋了,左側(cè)的單引號(hào)被數(shù)字2 后的單引號(hào)閉合,輸入?yún)?shù)閉合后正確執(zhí)行了該語(yǔ)句,因此,該SQL 注入為字符型注入。

        3.3 獲取數(shù)據(jù)庫(kù)名

        基于SQL 注入點(diǎn)和注入類型的判斷結(jié)果,就可以開始構(gòu)造獲取數(shù)據(jù)庫(kù)相關(guān)信息的SQL 語(yǔ)句。首先獲取的是當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)名。

        獲取數(shù)據(jù)庫(kù)名的路徑為:首先考慮使用MySQL數(shù)據(jù)庫(kù)中的database()函數(shù)獲取數(shù)據(jù)庫(kù)名,使用該函數(shù)就需要使用union 語(yǔ)句,使用union 語(yǔ)句就需要該語(yǔ)句前后兩個(gè)SELECT 子句的字段數(shù)相同。由于頁(yè)面顯示了每個(gè)用戶的“First name”和“Surname”,可判斷SELECT 語(yǔ)句可能是2 個(gè)字段。因此,輸入“2'union select 1,database()#”,頁(yè)面在用戶的“Surname”即第2個(gè)字段處顯示了“dvwa”,表明union 前的select 子句確實(shí)是2 個(gè)字段,當(dāng)前數(shù)據(jù)庫(kù)名為“dvwa”。

        3.4 獲取數(shù)據(jù)表名

        獲取數(shù)據(jù)庫(kù)名后就可以構(gòu)造SQL 語(yǔ)句獲取該數(shù)據(jù)庫(kù)的所有數(shù)據(jù)表名。

        MySQL 數(shù)據(jù)庫(kù)中沒有函數(shù)能夠獲取所有數(shù)據(jù)表的名稱,因此,考慮通過(guò)MySQL 數(shù)據(jù)庫(kù)的默認(rèn)數(shù)據(jù)庫(kù)information_schema 的TABLES 表來(lái)獲取指定數(shù)據(jù)庫(kù)“dvwa”的數(shù)據(jù)表名。TABLES 表存儲(chǔ)了所有數(shù)據(jù)庫(kù)對(duì)應(yīng)的所有數(shù)據(jù)表名,表中的“TABLE_SCHEMA”字段為數(shù)據(jù)庫(kù)名,“TABLE_NAME”字段為數(shù)據(jù)表名。因此,使用MySQL 數(shù)據(jù)庫(kù)的group_concat()函數(shù)將所有的數(shù)據(jù)表名連接顯示,結(jié)合union語(yǔ)句,輸入“2'union select 1, group_concat(table_name) from information_schema.tables where table_schema='dvwa'#”,頁(yè)面在用戶的“Surname”處顯示了“guestbook,users”,表明“dvwa”數(shù)據(jù)庫(kù)中有2 個(gè)表,分別為“guestbook”和“users”。

        3.5 獲取字段名

        從獲取到的數(shù)據(jù)表名“guestbook”和“users”,可以知道,首先猜解的應(yīng)該是“users”表中的數(shù)據(jù)。因此,接下來(lái),獲取users 表中的所有字段名。

        與獲取數(shù)據(jù)表名類似,使用information_schema數(shù)據(jù)庫(kù)的COLUMNS 表來(lái)獲取指定數(shù)據(jù)表“users”的字段名。COLUMNS 表存儲(chǔ)了所有數(shù)據(jù)表對(duì)應(yīng)的所有字段名,表中的“TABLE_NAME”字段為數(shù)據(jù)表名,“COLUMN_NAME”字段為字段名。因此,輸入“2'union select 1,group_concat (column_name) from information_schema.columns where table_name='users'#”,頁(yè)面在“Surname”處顯示了所有字段名連接后的字符串,觀察該字符串可以看到,較為關(guān)注的字段是“user”和“password”。

        3.6 獲取數(shù)據(jù)

        一般情況下,攻擊者只關(guān)注部分字段對(duì)應(yīng)的數(shù)據(jù),如用戶名、密碼、身份證號(hào)碼等,因此,接下來(lái)只獲取“user”和“password”對(duì)應(yīng)的數(shù)據(jù),輸入“2'union select user,password from users#”,顯示了數(shù)據(jù)庫(kù)中所有用戶名和MD5 加密后的密碼。通過(guò)在線網(wǎng)站或者加解密工具來(lái)進(jìn)行解密,如admin 的密碼通過(guò)CMD5 在線網(wǎng)站解密,可以得到為“password”。攻擊者獲取Web應(yīng)用的管理員賬號(hào)密碼后,就可以進(jìn)行后續(xù)的攻擊行為。

        4 SQL 注入漏洞的防護(hù)

        SQL 注入漏洞產(chǎn)生需要2 個(gè)條件:攻擊者能夠控制輸入?yún)?shù);惡意構(gòu)造的SQL 語(yǔ)句被執(zhí)行。只要阻止這2 個(gè)條件中的任意一個(gè)發(fā)生,就可以有效防范Web應(yīng)用中的SQL 注入攻擊[4]。

        嚴(yán)格過(guò)濾輸入的參數(shù)或?qū)斎脒M(jìn)行數(shù)據(jù)驗(yàn)證,是常用的防護(hù)方法之一。如:在輸入郵箱時(shí),使用正則表達(dá)式進(jìn)行匹配,不滿足郵箱格式的字符串都被過(guò)濾;在輸入用戶ⅠD 時(shí),用戶只能在文本框中輸入數(shù)字,不能輸入字符串。

        采用SQL語(yǔ)句預(yù)編譯是目前較好的SQL注入防護(hù)方法[5]。預(yù)編譯保證SQL 語(yǔ)句的語(yǔ)法結(jié)構(gòu)不被改變,即使用戶構(gòu)造了拼接后的惡意語(yǔ)句,也只會(huì)被當(dāng)作字符串處理,不會(huì)被當(dāng)作SQL 命令被執(zhí)行。

        5 結(jié)束語(yǔ)

        不法分子通過(guò)SQL 注入攻擊獲取數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù),給Web 應(yīng)用的維護(hù)者和使用者都帶來(lái)了信息安全的困擾?;贒VWA 平臺(tái)的SQL 注入滲透測(cè)試,明確了SQL 注入的工作原理,系統(tǒng)地實(shí)現(xiàn)了注入流程,并提出了相應(yīng)的防護(hù)方法。但是,在實(shí)際的Web 應(yīng)用中,業(yè)務(wù)更復(fù)雜、攻擊方式更多變,需要持續(xù)更新技術(shù)技能,才能更好地應(yīng)對(duì)各種網(wǎng)絡(luò)安全事件的發(fā)生。

        猜你喜歡
        頁(yè)面數(shù)據(jù)庫(kù)用戶
        大狗熊在睡覺
        刷新生活的頁(yè)面
        數(shù)據(jù)庫(kù)
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        數(shù)據(jù)庫(kù)
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        如何獲取一億海外用戶
        操国产丝袜露脸在线播放| 国产免费午夜福利蜜芽无码| 综合91在线精品| 日本少妇被爽到高潮的免费| 国产av无码专区亚洲aⅴ| 免费福利视频二区三区| 日韩av最新在线地址| 国产女主播一区二区三区| 亚洲一区二区三区蜜桃| 亚洲欧美综合精品成人网站| 国产精品a免费一区久久电影| 国产揄拍国产精品| 久久伊人色av天堂九九| 国产精品久久久久久久久免费观看 | 一区二区三区四区在线观看日本| 国产人妻熟女高跟丝袜| 国产无套乱子伦精彩是白视频| 在线亚洲+欧美+日本专区| 亚洲xxxx做受欧美| 男人天堂av在线成人av| 国产伦理自拍视频在线观看| 精品精品国产一区二区性色av| 人妻制服丝袜中文字幕| 中文字幕亚洲无线码在线一区| 精品久久久久久成人av| 亚洲最大天堂无码精品区| 亚洲电影中文字幕| 国产日韩一区二区精品| 一区二区三区日本视频| 国产成a人亚洲精品无码樱花| a级毛片毛片免费观看久潮喷| 亚洲欧洲日产国码久在线| 大又黄又粗又爽少妇毛片| 91九色熟女潮喷露脸合集| 蜜臀亚洲av无码精品国产午夜.| 真人作爱免费视频| 一区二区国产在线观看| 日韩成人精品日本亚洲| 国产黄色一级到三级视频| 麻豆国产精品一区二区三区 | 久久99热狠狠色精品一区|