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