網(wǎng)絡(luò)安全及防御之SQL注入原理介紹
A.SQL注入概述
什么是SQL注入
所謂SQL注入,就是通過SQL命令插入到Web表單提交或輸入域名或頁(yè)面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令。具體來(lái)說,它是利用現(xiàn)有應(yīng)用程序,將(惡意的)SQL命令注入到后臺(tái)數(shù)據(jù)庫(kù)引擎執(zhí)行的能力,它可以通過在Web表單中輸入(惡意)SQL語(yǔ)句得到一個(gè)存在安全漏洞的網(wǎng)站上的數(shù)據(jù)庫(kù),而不是按照設(shè)計(jì)者意圖去執(zhí)行SQL語(yǔ)句。比如先前的很多影視網(wǎng)站泄露VIP會(huì)員密碼大多就是通過Web表單遞交查詢字符暴出的,這類表單特別容易受到SQL注入式攻擊。
SQL注入的原理
SQL注入攻擊指的是通過構(gòu)建特殊的輸入作為參數(shù)傳入Web應(yīng)用程序,而這些輸入大都是SQL語(yǔ)法里的一些組合,通過執(zhí)行SQL語(yǔ)句進(jìn)而執(zhí)行攻擊者所要的操作,其主要原因是程序沒有細(xì)致地過濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)。
SQL注入的地位
SQL注入的來(lái)源
SQL注入的主要特點(diǎn)
1.變種極多
有經(jīng)驗(yàn)的攻擊者會(huì)手工調(diào)整攻擊的參數(shù),致使攻擊的數(shù)據(jù)是不可枚舉的,這導(dǎo)致傳統(tǒng)的特征匹配方法僅能識(shí)別到相當(dāng)少的攻擊?;蛘呤亲畛R?guī)的攻擊,難以做到防范。
2.攻擊簡(jiǎn)單
攻擊過程簡(jiǎn)單,目前互聯(lián)網(wǎng)上流行的眾多SQL注入攻擊工具,攻擊者借助這些工具可以很快的對(duì)目標(biāo)網(wǎng)站進(jìn)行攻擊或者是破壞,危害大。
3.危害極大
由于web語(yǔ)言自身的缺陷,以及具有安全編程的開發(fā)人員較少,大多數(shù)web應(yīng)用系統(tǒng)均具有被SQL注入攻擊的可能,而攻擊者一旦攻擊成功,就可以對(duì)控制整個(gè)web應(yīng)用系統(tǒng)對(duì)數(shù)據(jù)做任何的修改或者是竊取,破壞力達(dá)到了極致。
SQL注入的危害
1.未經(jīng)授權(quán)狀況下操作數(shù)據(jù)庫(kù)中的數(shù)據(jù)
2.惡意篡改網(wǎng)頁(yè)內(nèi)容//登陸后臺(tái)后發(fā)布的內(nèi)容,也可以發(fā)布對(duì)首頁(yè)的更新,這時(shí)候更新可能就是一些非法信息,也可以對(duì)系統(tǒng)進(jìn)行添加賬戶或者是數(shù)據(jù)庫(kù)賬號(hào)。這個(gè)需要拿到web shell或者更高的權(quán)限
3.私自添加系統(tǒng)賬號(hào)或者是數(shù)據(jù)庫(kù)使用者賬號(hào)
4.網(wǎng)頁(yè)掛木馬//拿到web shell或者獲取到服務(wù)器的權(quán)限以后,我們將一些網(wǎng)頁(yè)木馬掛在服務(wù)器上,去攻擊別人。甚至再嚴(yán)重些我們可以控制整個(gè)web服務(wù)器,這個(gè)都是非常危險(xiǎn)的。
B.SQL注入攻擊
SQL注入攻擊
SQL注入攻擊是黑客對(duì)數(shù)據(jù)庫(kù)進(jìn)行攻擊的常用手段之一。隨著B/S模式應(yīng)用開發(fā)的發(fā)展,使用這種模式編寫應(yīng)用程序的程序員也越來(lái)越多。但是由于程序員的水平及經(jīng)驗(yàn)也參差不齊,相當(dāng)大一部分程序員在編寫代碼的時(shí)候,沒有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患。用戶可以提交一段數(shù)據(jù)庫(kù)查詢代碼,根據(jù)程序返回的結(jié)果,獲得某些他想的得知的數(shù)據(jù),這就是所謂的SQL Injection,即SQL注入。
SQL注入威脅表達(dá)方式
繞過認(rèn)證,獲得非法權(quán)限
拆解后臺(tái)數(shù)據(jù)庫(kù)全部的信息
注入可以借助數(shù)據(jù)庫(kù)的存儲(chǔ)過程進(jìn)行提權(quán)等操作
SQL注入典型攻擊手段
判斷應(yīng)用程序是否存在注入漏洞
收集信息、并判斷數(shù)據(jù)庫(kù)類型
根據(jù)注入?yún)?shù)類型,重構(gòu)生氣了語(yǔ)句的原貌
拆解表名、字段名
獲取賬戶信息、攻擊web或?yàn)橄乱徊焦糇鰷?zhǔn)備
SQL注入是否存在注入的判斷方式
SQL注入實(shí)戰(zhàn)步驟
按照注入點(diǎn)類型來(lái)分類
按照數(shù)據(jù)提交的方式來(lái)分類
按照?qǐng)?zhí)行效果來(lái)分類
- 基于布爾的盲注,即可以根據(jù)返回頁(yè)面判斷條件真假的注入。
- 基于時(shí)間的盲注,即不能根據(jù)頁(yè)面返回內(nèi)容判斷任何信息,用條件語(yǔ)句查看時(shí)間延遲語(yǔ)句是否執(zhí)行(即頁(yè)面返回時(shí)間是否增加)來(lái)判斷。
- 基于報(bào)錯(cuò)注入,即頁(yè)面會(huì)返回錯(cuò)誤信息,或者把注入的語(yǔ)句的結(jié)果直接返回在頁(yè)面中。
- 聯(lián)合查詢注入,可以使用union的情況下的注入。
- 堆查詢注入,可以同時(shí)執(zhí)行多條語(yǔ)句的執(zhí)行時(shí)的注入。
C.MySQL注入常用函數(shù)
MySQL的注釋風(fēng)格
MySQL——union操作符
union操作符用于拼接兩個(gè)或者多select查詢語(yǔ)句
union中的每個(gè)查詢必須擁有相同的列數(shù)
MySQL——常用函數(shù)
MySQL——字符串連接函數(shù)
concat(str1,str2...)函數(shù),直接連接
group_concat(str1,str2...)函數(shù),使用逗號(hào)做為分隔符
concat_ws(sep,str1,str2...)函數(shù),使用第一個(gè)參數(shù)做為分隔符
MySQL——information-schema結(jié)構(gòu)
D.SQL注入相關(guān)工具
sqlmap介紹
SQLMAP是一個(gè)開源的滲透測(cè)試工具,它主要用于自動(dòng)化地偵測(cè)和實(shí)施SQL注入攻擊以及滲透數(shù)據(jù)庫(kù)服務(wù)器。SQLMAP配有強(qiáng)大的偵測(cè)引擎,適用于高級(jí)滲透測(cè)試用戶,不僅可以獲得不同數(shù)據(jù)庫(kù)的指紋信息,還可以從數(shù)據(jù)庫(kù)中提取數(shù)據(jù),此外還能夠處理潛在的文件系統(tǒng)以及通過帶外數(shù)據(jù)連接執(zhí)行系統(tǒng)命令等。
Pangolin介紹
Pangolin能夠通過一系列非常簡(jiǎn)單的操作,達(dá)到最大化的攻擊測(cè)試效果。它從檢測(cè)注入開始到最后控制目標(biāo)系統(tǒng)都給出了測(cè)試步驟。Pangolin時(shí)目前國(guó)內(nèi)使用率最高的SQL注入測(cè)試的安全軟件,可以說是網(wǎng)站安全測(cè)試人員的必備工具之一。
啊D注入工具
啊D注入工具是一種主要用于SQL的注入工具,由彭岸峰開發(fā),使用了多線程技術(shù),能在極短的時(shí)間內(nèi)掃描注入點(diǎn)。使用者不需要經(jīng)過太多的學(xué)習(xí)就可以很熟練的操作。并且該軟件附帶了一些其他的工具,可以為使用者提供極大的方便。
Havij注入工具
HavijPro是一款自動(dòng)化地SQL注入工具,它能夠幫助滲透測(cè)試人員發(fā)現(xiàn)和利用Web應(yīng)用程序的SQL注入漏洞。Havij不僅能夠自動(dòng)挖掘可利用的SQL查詢,還能夠識(shí)別后臺(tái)數(shù)據(jù)庫(kù)類型、檢索數(shù)據(jù)的用戶名和密碼hash、轉(zhuǎn)儲(chǔ)表和列、從數(shù)據(jù)庫(kù)中提取數(shù)據(jù),甚至訪問底層文件系統(tǒng)和執(zhí)行系統(tǒng)命令,當(dāng)然前提是有一個(gè)可利用的SQL注入漏洞。Havij支持廣泛的數(shù)據(jù)庫(kù)系統(tǒng),比如MsSQL,MySQL,MSAccess and Oracle。Havij支持參數(shù)配置以躲避IDS,支持代理,后臺(tái)登陸地址掃描。
E.SQL注入防御
- 開發(fā)人員在開發(fā)過程中要有SQL注入防御的思想,對(duì)用戶輸入的所有內(nèi)容都要進(jìn)行過濾。
- 使用數(shù)據(jù)庫(kù)時(shí),命名應(yīng)該較為復(fù)雜,不應(yīng)出現(xiàn)admin,user這樣的庫(kù)以及username,password這樣的字段。
- 涉及密碼的時(shí)候一定要加密存儲(chǔ)。
- 使用一些框架及模板前檢查代碼是否有輸入內(nèi)容檢測(cè)。
- 測(cè)試階段,應(yīng)進(jìn)行SQL測(cè)試。
- 數(shù)據(jù)庫(kù)權(quán)限最小化,防止拿到webshell權(quán)限,不要用特權(quán)賬戶或者能夠登陸系統(tǒng)的賬戶啟動(dòng)數(shù)據(jù)庫(kù)。
本文參考:網(wǎng)絡(luò)安全培訓(xùn)、網(wǎng)絡(luò)安全工程師(奇安信)收藏夾吃灰系列_嗶哩嗶哩_bilibili
以上就是網(wǎng)絡(luò)安全及防御之SQL注入原理介紹的詳細(xì)內(nèi)容,更多關(guān)于網(wǎng)絡(luò)安全SQL注入的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
防止利用系統(tǒng)漏洞輕輕松松繞過你的驗(yàn)證碼的方法
防止利用系統(tǒng)漏洞輕輕松松繞過你的驗(yàn)證碼的方法...2007-03-03網(wǎng)絡(luò)安全流量分析工具蟻劍詳細(xì)介紹
蟻劍(AntSword)是一款開源的跨平臺(tái)WebShell管理工具,它主要面向于合法授權(quán)的滲透測(cè)試安全人員以及進(jìn)行常規(guī)操作的網(wǎng)站管理員,蟻劍推崇模塊化的開發(fā)思想,遵循開源,就要開得漂亮的原則,致力于為不同層次的人群提供最簡(jiǎn)單易懂、方便直接的代碼展示及其修改說明2022-09-09修改TTL值的具體實(shí)現(xiàn)方法,防內(nèi)網(wǎng)“窺視”
修改TTL值的具體實(shí)現(xiàn)方法,防內(nèi)網(wǎng)“窺視”...2007-02-02web網(wǎng)絡(luò)安全分析反射型XSS攻擊原理
這篇文章主要為大家介紹了web網(wǎng)絡(luò)安全分析反射型XSS攻擊原理詳細(xì)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-11-11Web網(wǎng)絡(luò)安全漏洞分析SQL注入原理詳解
這篇文章主要為大家介紹了Web網(wǎng)絡(luò)安全漏洞分析SQL注入的原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-11-11Web網(wǎng)絡(luò)安全漏洞分析XSS常用語(yǔ)句及編碼繞過詳解
這篇文章主要為大家介紹了Web網(wǎng)絡(luò)安全漏洞分析XSS常用語(yǔ)句及編碼繞過詳解,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11SQL注入詳細(xì)講解(萬(wàn)字長(zhǎng)文,全網(wǎng)最全!)
SQL注入是比較常見的網(wǎng)絡(luò)攻擊方式之一,它不是利用操作系統(tǒng)的BUG來(lái)實(shí)現(xiàn)攻擊,而是針對(duì)程序員編寫時(shí)的疏忽,下面這篇文章主要給大家介紹了關(guān)于SQL注入詳細(xì)講解的相關(guān)資料,需要的朋友可以參考下2023-03-03