2017-2018-2 20179216 《网络攻防与实践》 SQL注入攻击
1. SQL語言
結(jié)構(gòu)化查詢語言(Structured Query Language)簡稱SQL:是一種特殊目的的編程語言,是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);同時也是數(shù)據(jù)庫腳本文件的擴展名。
2. SQL注入
SQL注入能使攻擊者繞過認證機制,完全控制遠程服務(wù)器上的數(shù)據(jù)庫。SQL是結(jié)構(gòu)化查詢語言的簡稱,它是訪問數(shù)據(jù)庫的事實標(biāo)準(zhǔn)。目前,大多數(shù)Web應(yīng)用都使用SQL數(shù)據(jù)庫來存放應(yīng)用程序的數(shù)據(jù)。幾乎所有的Web應(yīng)用在后臺都使用某種SQL數(shù)據(jù)庫。跟大多數(shù)語言一樣,SQL語法允許數(shù)據(jù)庫命令和用戶數(shù)據(jù)混雜在一起的。如果開發(fā)人員不細心的話,用戶數(shù)據(jù)就有可能被解釋成命令,這樣的話,遠程用戶就不僅能向Web應(yīng)用輸入數(shù)據(jù),而且還可以在數(shù)據(jù)庫上執(zhí)行任意命令了。
SQL注入技術(shù)是利用web應(yīng)用程序和數(shù)據(jù)庫服務(wù)器之間的接口來篡改網(wǎng)站內(nèi)容的攻擊技術(shù)。通過把SQL命令插入到Web表單提交框、輸入域名框或頁面請求框中,最終欺騙服務(wù)器執(zhí)行惡意的SQL命令。
3. SQL注入危害
- 非法讀取、篡改、添加、刪除數(shù)據(jù)庫中的數(shù)據(jù)。
- 盜取用戶的各類敏感信息,獲取利益。
- 通過修改數(shù)據(jù)庫來修改網(wǎng)頁上的內(nèi)容。
- 私自添加或刪除賬號。
- 注入木馬等等。
4. SQL注入攻擊的過程及原理
SQL注入攻擊是指攻擊者通過在應(yīng)用程序后臺數(shù)據(jù)庫的操作中插入一些惡意SQL語句來達到操作數(shù)據(jù)庫數(shù)據(jù)的目的。具體來講就是,SQL注入攻擊是攻擊者利用Web應(yīng)用程序,通過輸入非法字符,來構(gòu)造惡意的SQL語句,最終將惡意的SQL語句注入到應(yīng)用的后臺數(shù)據(jù)庫服務(wù)器中。數(shù)據(jù)庫服務(wù)器執(zhí)行這些惡意SQL語句后,不會按照數(shù)據(jù)庫數(shù)據(jù)表設(shè)計者的意圖去執(zhí)行某些操作,而是進行一些非法的操作,進而造成數(shù)據(jù)庫數(shù)據(jù)的丟失,損壞等后果。這種注入攻擊方式困擾著眾多Web應(yīng)用。
**5. SQL注入攻擊的手段
沒有正確過濾轉(zhuǎn)義字符
應(yīng)用系統(tǒng)的使用者輸入內(nèi)容,在沒有經(jīng)過前端驗證,字符串過濾的情況下,就會發(fā)生SQL注入攻擊。非法的輸入傳遞給后臺的SQL語句,SQL語句最終在數(shù)據(jù)庫中執(zhí)行非法的操作。Incorrect type handling
由于Web應(yīng)用使用者所輸入的參數(shù),在傳遞過程中并不是強類型,也沒有實施必要的類型轉(zhuǎn)換,那么就會發(fā)生Incorrect type handling這種情況。比如,應(yīng)用編碼者對用戶輸入的內(nèi)容并沒有進行合法性檢驗,原本應(yīng)該輸入數(shù)字,但是編碼者并未進行類型檢驗。數(shù)據(jù)庫自身的漏洞
某些數(shù)據(jù)庫由于自身設(shè)計以及實現(xiàn)的漏洞,就會導(dǎo)致攻擊者利用這些漏洞對數(shù)據(jù)庫服務(wù)器進行攻擊。SQLsever有些漏洞會導(dǎo)致攻擊者能夠越過訪問權(quán)限,執(zhí)行越權(quán)的操作,這樣對數(shù)據(jù)庫的危害也是極大的。因此應(yīng)該及時修補數(shù)據(jù)庫漏洞。盲目SQL注入式攻擊
如果應(yīng)用系統(tǒng)對于承受的SQL注入攻擊沒有察覺,沒有對攻擊者進行有效的防范,就會發(fā)生盲目的SQL注入攻擊。存在SQL注入攻擊點的網(wǎng)頁可能不會給攻擊者展示有用的信息,它會根據(jù)注入攻擊者注入到合法語句中的不同邏輯,進而顯示不同的網(wǎng)頁內(nèi)容,這種攻擊手段非常的耗費精力,需要攻擊者不斷的精心構(gòu)造注入語句,一旦發(fā)現(xiàn)注入點和注入目標(biāo)就可以很順利的獲取想要的信息。條件響應(yīng)
目前這種SQL注入攻擊方式能夠在應(yīng)用程序的網(wǎng)頁中進行邏輯計算。條件性差錯
通過構(gòu)造邏輯錯誤來判斷應(yīng)用程序是否具有注入點。總結(jié)歸納出該應(yīng)用所使用的數(shù)據(jù)庫的類型,數(shù)據(jù)庫中包含的一些數(shù)據(jù)表名,字段名等,這樣就可以為接下來注入點的尋找提供幫助。時間延誤
通過構(gòu)造SQL注入語句,使得數(shù)據(jù)庫判斷邏輯時間變長,通過判斷應(yīng)用頁面的加載時間來判斷構(gòu)造的SQL注入語句是否正確。
6. 攻擊的過程主要分為如下步驟
(1)通過多次輸入不同的內(nèi)容來測試當(dāng)前的應(yīng)用系統(tǒng)是否可以進行SQL注入,如果可以,那么進行第二步,如果不可以,則放棄。
(2)通過不斷的輸入測試數(shù)據(jù),進而尋找SQL注入攻擊點,找到SQL注入攻擊點后,接下來就要尋找網(wǎng)站中可以被利用的SQL注入的漏洞。在這里,我們可以通過輸入一些特殊字符,語句來尋找漏洞,同時我們也可以根據(jù)瀏覽器的返回的數(shù)據(jù)庫信息,進而可以判斷該Web應(yīng)用所使用的數(shù)據(jù)庫的類型。接下來,我們就可以構(gòu)造數(shù)據(jù)庫的查詢語句,從而找尋注入點。
(3)暴力猜解數(shù)據(jù)庫中存儲的一些用戶名和密碼,一般情況下,服務(wù)器的數(shù)據(jù)庫數(shù)據(jù)表中存放的表名、字段名,字段類型等信息都是有一定規(guī)律的。可以通過構(gòu)建特殊數(shù)據(jù)庫語句,這樣可以在數(shù)據(jù)庫通過查詢語句來獲得用戶的表名、字段名、用戶名和密碼的長度以及內(nèi)容,網(wǎng)絡(luò)上存在著大量的SQL自動化注入工具,這個暴力猜解的過程可以通過這些工具來快速的實現(xiàn)。
(4)可以著手尋找Web應(yīng)用管理后臺的入口。通常情況下,Web后臺管理的界面肯定是不會對于普通用戶進行開放的,因此后臺管理界面的路徑是未知的。不過可以利用網(wǎng)上的一些路徑掃描工具來尋找后臺真正的登陸路徑。這些路徑其實是有規(guī)律可循的,經(jīng)過不斷的嘗試就可以找到真正的管理后臺入口的地址。
(5)此時可以進行系統(tǒng)入侵和破壞了。因為剛剛得到了用戶表的用戶名和密碼,這樣一來,就能夠獲取到管理員的用戶名和密碼,從而擁有了管理員權(quán)限,登錄管理員賬號,進入應(yīng)用的管理后臺,隨后就可以進行篡改網(wǎng)頁、上傳木馬、修改、泄漏用戶信息等一系列的破壞行為,并進一步入侵數(shù)據(jù)庫服務(wù)器。
7. 針對SQL注入攻擊的檢測方法
作為排在威脅Web應(yīng)用安全十大攻擊手段之首的SQL注入攻擊,在安全產(chǎn)業(yè)界和學(xué)術(shù)界有著很多的深入研究。在傳統(tǒng)的安全產(chǎn)業(yè)界主要檢測和識別SQL注入攻擊有如下兩種技術(shù):一種是基于特征的關(guān)鍵字匹配技術(shù);另一種是基于異常檢測技術(shù)。
- 基于特征的關(guān)鍵字匹配技術(shù):它包含許多關(guān)鍵字匹配算法,一個好的匹配算法是這項技術(shù)好壞的評價標(biāo)準(zhǔn)之一,目前主要使用的檢測技術(shù)就是基于特征的關(guān)鍵字匹配技術(shù),這種技術(shù)的核心思想是在SQL語句中抽取出特殊字符(例如#等),提取數(shù)據(jù)庫的關(guān)鍵字(例如:select、union等)。通過提取出來的特殊字符來判斷該SQL語句是否進行了SQL注入攻擊。
- 基于異常檢測技術(shù):它包含基于程序行為的異常檢測技術(shù),基于數(shù)據(jù)流的異常檢測技術(shù)和基于聚類的異常檢測技術(shù)等手段,這種檢測技術(shù)被業(yè)界分為學(xué)習(xí)期與檢測期。在學(xué)習(xí)期,檢測系統(tǒng)必須擁有不受影響的網(wǎng)絡(luò)系統(tǒng),必須針對需要檢測的Web應(yīng)用具有專業(yè)的學(xué)習(xí)機制,只有當(dāng)檢測系統(tǒng)經(jīng)過不斷的學(xué)習(xí),進而學(xué)習(xí)成熟后,才能進入系統(tǒng)檢期。在系統(tǒng)的檢測期,檢測系統(tǒng)利用其在學(xué)習(xí)期演變成的準(zhǔn)確模型,對傳遞進系統(tǒng)來的用戶輸入數(shù)據(jù)進行系統(tǒng)地全面分析。盡
8. 針對SQL注入攻擊的防御措施
- 普通用戶與系統(tǒng)管理員的權(quán)限要嚴(yán)格區(qū)分
- 使用參數(shù)化的過濾性SQL語句
- 需要加強對用戶輸入的驗證
- 使用數(shù)據(jù)庫自帶的安全參數(shù)
- 避免出現(xiàn)一些詳細的錯誤消息
- 多層環(huán)境防治SQL注入式攻擊
- 使用專業(yè)的漏洞掃描工具
- 對數(shù)據(jù)進行加密處理
- 在Web應(yīng)用程序開發(fā)過程的所有階段實施代碼的安全檢查
轉(zhuǎn)載于:https://www.cnblogs.com/jmjm/p/9064564.html
總結(jié)
以上是生活随笔為你收集整理的2017-2018-2 20179216 《网络攻防与实践》 SQL注入攻击的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python-IndexError: l
- 下一篇: C8-2 圆的周长和面积 (100/10