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

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

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

虞菊花,喬虹

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

在信息化時(shí)代,萬物皆可數(shù)據(jù)。互聯(lián)網(wǎng)中的信息可以用指定的數(shù)據(jù)形式表征,該表征數(shù)據(jù)以不同的方式被存儲(chǔ),待使用者需要時(shí)再進(jìn)行獲取和處理。當(dāng)然,最常見的便是將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。但是,隨著網(wǎng)絡(luò)安全問題越來越嚴(yán)重,數(shù)據(jù)庫中的數(shù)據(jù)被不法分子通過各種技術(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 是漏洞分析和滲透測試實(shí)戰(zhàn)的首選[1]。

本文基于SQL 注入的工作原理,在DVWA 開源平臺(tái)的漏洞測試環(huán)境中進(jìn)行SQL 注入滲透測試實(shí)戰(zhàn),并根據(jù)SQL 注入初級(jí)滲透測試的流程,明確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)行各種漏洞的滲透測試,會(huì)觸犯現(xiàn)存的網(wǎng)絡(luò)安全法律法規(guī),因此,安全相關(guān)從業(yè)人員需要一個(gè)合法的實(shí)戰(zhàn)環(huán)境來測試自己的技能和工具。DVWA 的出現(xiàn)就很好地解決了這個(gè)問題,為安全人員提供了一個(gè)滲透測試環(huán)境,讓其自主練習(xí),助其更好地理解各個(gè)漏洞的產(chǎn)生原理,以更好地防范各類攻擊的發(fā)生。

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

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

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

3 SQL 注入滲透測試

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

圖1 SQL 注入滲透測試流程圖

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

3.1 查找注入點(diǎn)

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

3.2 判斷SQL 注入類型

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

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

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

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

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

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

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

3.5 獲取字段名

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

與獲取數(shù)據(jù)表名類似,使用information_schema數(shù)據(jù)庫的COLUMNS 表來獲取指定數(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'#”,頁面在“Surname”處顯示了所有字段名連接后的字符串,觀察該字符串可以看到,較為關(guān)注的字段是“user”和“password”。

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

一般情況下,攻擊者只關(guān)注部分字段對(duì)應(yīng)的數(shù)據(jù),如用戶名、密碼、身份證號(hào)碼等,因此,接下來只獲取“user”和“password”對(duì)應(yīng)的數(shù)據(jù),輸入“2'union select user,password from users#”,顯示了數(shù)據(jù)庫中所有用戶名和MD5 加密后的密碼。通過在線網(wǎng)站或者加解密工具來進(jìn)行解密,如admin 的密碼通過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 語句被執(zhí)行。只要阻止這2 個(gè)條件中的任意一個(gè)發(fā)生,就可以有效防范Web應(yīng)用中的SQL 注入攻擊[4]。

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

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

5 結(jié)束語

不法分子通過SQL 注入攻擊獲取數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù),給Web 應(yīng)用的維護(hù)者和使用者都帶來了信息安全的困擾。基于DVWA 平臺(tái)的SQL 注入滲透測試,明確了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ā)生。

猜你喜歡
頁面數(shù)據(jù)庫用戶
大狗熊在睡覺
刷新生活的頁面
數(shù)據(jù)庫
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
數(shù)據(jù)庫
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數(shù)據(jù)庫
數(shù)據(jù)庫
如何獲取一億海外用戶
主站蜘蛛池模板: 国产视频自拍一区| 午夜视频免费试看| av在线人妻熟妇| 亚洲天堂777| 狠狠久久综合伊人不卡| 亚洲日韩AV无码一区二区三区人 | 国产成人福利在线| a级毛片免费网站| 国产微拍一区| 午夜精品区| 亚洲侵犯无码网址在线观看| 日韩A∨精品日韩精品无码| 国产精品青青| 免费观看成人久久网免费观看| 欧美三級片黃色三級片黃色1| 国产日韩精品欧美一区喷| jijzzizz老师出水喷水喷出| 国产精品无码一区二区桃花视频| 亚洲国产成人麻豆精品| 色婷婷狠狠干| 狠狠亚洲婷婷综合色香| 一本色道久久88| 国产在线小视频| 日韩一级二级三级| 成人国产免费| 国产乱子伦无码精品小说| 国内精品久久久久久久久久影视| 色综合久久综合网| 激情综合婷婷丁香五月尤物| 91视频区| yy6080理论大片一级久久| 亚洲妓女综合网995久久| 国产精品网曝门免费视频| 国产成人久久综合777777麻豆| 欧美区国产区| 成人亚洲国产| 国产九九精品视频| 国产免费a级片| 国产成人精品亚洲77美色| 成人免费网站久久久| 欧美日韩在线国产| 国产极品粉嫩小泬免费看| 狠狠ⅴ日韩v欧美v天堂| 国产成年女人特黄特色毛片免 | 自拍中文字幕| 免费jjzz在在线播放国产| av在线无码浏览| 成人精品视频一区二区在线 | 亚洲人在线| 四虎永久在线| 久久国产亚洲欧美日韩精品| 亚洲一区二区约美女探花| 久久黄色免费电影| www精品久久| 亚洲av日韩av制服丝袜| 好紧太爽了视频免费无码| 五月六月伊人狠狠丁香网| 黄色在线不卡| 免费一级α片在线观看| 欧美性天天| 日韩av无码精品专区| 国产精品视频第一专区| 亚国产欧美在线人成| 亚洲国内精品自在自线官| 亚洲无码免费黄色网址| 国产精品亚洲片在线va| 自拍亚洲欧美精品| 国产精品蜜臀| 无码中文字幕加勒比高清| 国产免费羞羞视频| 久久国产精品夜色| 亚洲男人天堂网址| 国产国语一级毛片在线视频| 国产精品成人不卡在线观看| 国产特一级毛片| 不卡无码h在线观看| 欧美色综合久久| 日韩精品一区二区三区免费| 制服丝袜亚洲| 国产精品女同一区三区五区| 国产乱人伦精品一区二区| 97人妻精品专区久久久久|