日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

[置顶] SQL注入安全分析

發(fā)布時間:2024/9/20 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [置顶] SQL注入安全分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

?

(一)???????應用環(huán)境列表

網(wǎng)絡互聯(lián)設備操作系統(tǒng)

序號

操作系統(tǒng)名稱

設備名稱

脆弱性

1

IOS_路由器_內部_1

route1

?

2

IOS_路由器_VPN_1

路由器_VPN_1

?

3

IOS_路由器_VPN_2

路由器_VPN_2

?

業(yè)務應用軟件

序號

軟件名稱

主要功能

脆弱性

1

安全電子郵件服務系統(tǒng)web應用平臺

安全電子郵件服務系統(tǒng)運行平臺程序

管理界面暴露

主機(存儲)操作系統(tǒng)

序號

設備名稱

操作系統(tǒng)/數(shù)據(jù)庫管理系統(tǒng)

脆弱性

1

Web郵件服務器

Windows Server

?

數(shù)據(jù)庫管理系統(tǒng)

序號

設備名稱

操作系統(tǒng)/數(shù)據(jù)庫管理系統(tǒng)

脆弱性

1

數(shù)據(jù)庫服務器

Sql Server 2000

?

?

(二)???????SQL注入攻擊的簡單示例

statement := ?"SELECT *FROM Users WHERE Value= " + variable + "

這條語句是很普通的一條SQL語句,他主要實現(xiàn)的功能就是讓用戶輸入一個編號然后查詢處這個編號對應的信息。但是若這條語句被改裝,就可能成為破壞數(shù)據(jù)的黑手。如攻擊者在輸入變量的時候,輸入以下內容admin’;drop table Users--。那么這條SQL語句在執(zhí)行的時候就變?yōu)榱薙ELECT* FROM Users WHERE Value= ‘admin’;drop table Users--。

篡改后的語句具有什么樣的功能呢?首先‘admin’后面的分號表示一個查詢的結束和另一條語句的開始。Users字符串后的雙連字符,指示執(zhí)行器當前行余下的部分只是一個注釋,應該忽略。如果修改后的代碼語法正確,則服務器將執(zhí)行該代碼。系統(tǒng)在處理這條語句時,將首先執(zhí)行查詢語句,查到用戶編號為”admin” 的用戶信息。然后,數(shù)據(jù)將刪除表Users(前提是Users表沒有內外主鍵關聯(lián)情況下,則刪除操作就會成功)。只要注入的SQL代碼語法正確,便無法采用編程方式來檢測篡改。因此,必須驗證所有用戶輸入,并仔細檢查在您所用的服務器中執(zhí)行構造 SQL命令的代碼。

?

?

(三)???????Sql注入安全攻擊原理

1)???????SQL注入是目前比較常見的針對數(shù)據(jù)庫的一種攻擊方式。在這種攻擊方式中,攻擊者會將一些惡意代碼插入到字符串中。然后會通過各種手段將該字符串傳遞到SQLServer數(shù)據(jù)庫的實例中進行分析和執(zhí)行。只要這個惡意代碼符合SQL語句的規(guī)則,則在代碼編譯與執(zhí)行的時候,就不會被系統(tǒng)所發(fā)現(xiàn)。

2)???????SQL注入式攻擊的主要形式有兩種。一是直接將代碼插入到與SQL命令串聯(lián)在一起并使得其以執(zhí)行的用戶輸入變量。由于其直接與SQL語句捆綁,故也被稱為直接注入式攻擊法。二是一種間接的攻擊方法,它將惡意代碼注入要在表中存儲或者作為原數(shù)據(jù)存儲的字符串。在存儲的字符串中會連接到一個動態(tài)的SQL命令中,以執(zhí)行一些惡意的SQL代碼。

3)???????注入過程的工作方式是提前終止文本字符串,然后追加一個新的命令。如以直接注入式攻擊為例。就是在用戶輸入變量的時候,先用一個分號結束當前的語句。然后再插入一個惡意SQL語句即可。由于插入的命令可能在執(zhí)行前追加其他字符串,因此攻擊者常常用注釋標記“—”來終止注入的字符串。執(zhí)行時,系統(tǒng)會認為此后語句位注釋,故后續(xù)的文本將被忽略,不背編譯與執(zhí)行。

?

?

?

(四)???????漏洞風險加固列表

1.????????風險類型01

?

風險名稱

固定的獨立參數(shù)滲透

風險級別

攻擊形式

傳入名稱、關鍵字等參數(shù)或不是通過Filter生成查詢條件串的

解決方案

1)??????? SQLServer數(shù)據(jù)庫專門設計了相對安全的SQL參數(shù)。在數(shù)據(jù)庫設計過程中,采用這些參數(shù)來杜絕惡意的SQL注入式攻擊。如在SQL Server數(shù)據(jù)庫中提供了Parameters集合。這個集合提供了類型檢查和長度驗證的功能。如果采用了Parameters這個集合的話,則用戶輸入的內容將被視為字符值而不是可執(zhí)行代碼。即使用戶輸入的內容中含有可執(zhí)行代碼,則數(shù)據(jù)庫也會過濾掉。因為此時數(shù)據(jù)庫只把它當作普通的字符來處理。

2)??????? 使用Parameters集合的另外一個優(yōu)點是可以強制執(zhí)行類型和長度檢查,范圍以外的值將觸發(fā)異常。如果用戶輸入的值不符合指定的類型與長度約束,就會發(fā)生異常,并報告給管理員。

?

2.????????風險類型02

?

風險名稱

SQL截斷攻擊

風險級別

攻擊形式

利用SQL語句超長時會截或內部SQL文本串緩沖變量定義長度大小時會被截斷而進行的攻擊

解決方案

1)??????? 對查詢條件的輸入值一定要有長度限制,包括UI驗證上一定要有長度驗證,防止過長的條件

2)??????? 存儲過程中的SQL文本緩沖變量長度定義時要足夠大以保證不會產生SQL語句截斷

?

3.????????風險類型03

?

風險名稱

WEB的遠程管理漏洞

風險級別

攻擊形式

注入攻擊盜取web遠程管理用戶與權限,遠程管理認證網(wǎng)頁中會有型如:select * from admin where username='XXX' and passWord='YYY' 的語句,若在正式運行此句之前,沒有進行必要的字符過濾,則很容易實施SQL注入。如在用戶名文本框內輸入:abc’ or 1=1-- 在密碼框內輸入:123 則SQL語句變成:select * from admin where username='abc’ or 1=1 and password='123’ 不管用戶輸入任何用戶名與密碼,此語句永遠都能正確執(zhí)行,用戶輕易騙過系統(tǒng),獲取合法身份。進行木馬或者惡意程序上傳。

解決方案

1)??????? 加強對用戶輸入的驗證,用戶輸入?yún)?shù)過濾,對敏感字符和數(shù)據(jù)在不影響正常交互前提下,進行替換與截獲過濾。

2)??????? 敏感數(shù)據(jù)片段,使用參數(shù)化SQL查詢語言和數(shù)據(jù)庫安全參數(shù),如Parameters

3)??????? 普通用戶與系統(tǒng)管理員用戶的權限要有嚴格的區(qū)分

4)??????? 使用類安全(type-safe)的參數(shù)加碼機制,保證用戶輸入?yún)?shù)正常escaped/encoded

?

4.????????風險類型04

?

風險名稱

盜用數(shù)據(jù)字典

風險級別

攻擊形式

利用猜解方式盜取服務器數(shù)據(jù)庫數(shù)據(jù)字典

1)??????? 猜解數(shù)據(jù)庫名稱

HTTP://xxx.xxx.xxx/abc.jsp?p=YY and (select count(*) from master.dbo.sysdatabases where name>1 and dbid=6) <>0 因為 dbid 的值從1到5,是系統(tǒng)用了。所以用戶自己建的一定是從6開始的。并且我們提交了 name>1 (name字段是一個字符型的字段和數(shù)字比較會出錯),abc.jsp工作異常,可得到第一個數(shù)據(jù)庫名,同理把DBID分別改成7,8,9,10,11,12…就可得到所有數(shù)據(jù)庫名。

2)??????? 猜解用戶表

SQL-SERVER有一個存放系統(tǒng)核心信息的表sysobjects,有關一個庫的所有表,視圖等信息全部存放在此表中,而且此表可以通過WEB進行訪問。當xtype='U' and status>0代表是用戶建立的表,發(fā)現(xiàn)并分析每一個用戶建立的表及名稱,便可以得到用戶名表的名稱,基本的實現(xiàn)方法是
? HTTP://xxx.xxx.xxx/abc.jsp?p=YY and (select top 1 name from TestD ... type='U' and status>0 )>0 得到第一個用戶建立表的名稱,并與整數(shù)進行比較,顯然abc.jsp工作異常,但在異常中卻可以發(fā)現(xiàn)表的名稱。假設發(fā)現(xiàn)的表名是xyz,則
?? HTTP://xxx.xxx.xxx/abc.jsp?p=YY and (select top 1 name from TestDB.dbo.sysobjects& ... tatus>0 and name not in('xyz'))>0 可以得到第二個用戶建立的表的名稱,同理就可得到所有用建立的表的名稱。

解決方案

1)??????? 加強對用戶輸入的驗證,用戶輸入?yún)?shù)過濾,對敏感字符和數(shù)據(jù)在不影響正常交互前提下,進行替換與截獲過濾。

2)??????? 敏感數(shù)據(jù)片段,使用參數(shù)化SQL查詢語言和數(shù)據(jù)庫安全參數(shù),如Parameters

3)??????? 普通用戶與系統(tǒng)管理員用戶的權限要有嚴格的區(qū)分

4)??????? 使用類安全(type-safe)的參數(shù)加碼機制,保證用戶輸入?yún)?shù)正常escaped/encoded

?

5.????????風險類型05

?

風險名稱

構造SQL注入代碼

風險級別

攻擊形式

提交數(shù)據(jù)表單時,通過參數(shù)或者表單數(shù)據(jù)植入OR1=1–或者OR1=1--,植入SQL代碼,獲取系統(tǒng)內用戶數(shù)據(jù)

?

解決方案

1)??????? 數(shù)據(jù)和命令進行嚴格區(qū)分過濾或替換

2)??????? 敏感數(shù)據(jù)片段,使用參數(shù)化SQL查詢語言和數(shù)據(jù)庫安全參數(shù),如Parameters

3)??????? 使用參數(shù)加碼機制,輸入?yún)?shù)傳輸利用escaped/encoded

4)??????? 訪問服務鏈接統(tǒng)一采用post機制,防數(shù)據(jù)在URL泄露

?

6.????????風險類型06

?

風險名稱

SQL字符集編碼注入

風險級別

攻擊形式

利用數(shù)據(jù)字符編碼漏洞,例如where xtype=’U’ 字符U對應的ASCII碼是85,繼而用where xtype=char(85)代替;如果字符是中文的,比如where name=’admin’,可以用where name=nchar(29992)+nchar(25143)代替。繞過程序敏感數(shù)據(jù)過濾器進行注入欺騙

解決方案

1)??????? 使用參數(shù)加碼機制,輸入?yún)?shù)傳輸利用escaped/encoded

2)??????? 利用html轉義函數(shù),對頁面數(shù)據(jù)特殊字符轉義,如htmlEscape、htmlUnescape等。

3)??????? 業(yè)務處理接收數(shù)據(jù)時,嚴格判斷用戶數(shù)據(jù)對應數(shù)據(jù)類型,阻止數(shù)據(jù)類型欺騙攻擊

?

?

7.????????風險類型07

?

風險名稱

Script客戶端腳本攻擊

風險級別

攻擊形式

編寫瀏覽器可執(zhí)行的腳本文件,如VBScript、JavaScript篡改頁面數(shù)據(jù)或篡改頁面樣式,進行篡改或攔截用戶提交數(shù)據(jù)信息,造成sql執(zhí)行非法數(shù)據(jù),典型的應用場景。如,火車票訂票插件

解決方案

1)??????? 設置瀏覽器的安全級別

2)??????? 屏蔽頁面右鍵選項,禁止查看頁面源代碼

3)??????? 服務器接入接口,嚴格做數(shù)據(jù)類型判斷、信息檢索

4)??????? 使用參數(shù)加碼機制,輸入?yún)?shù)傳輸利用escaped/encoded

?

8.????????風險類型08

?

風險名稱

數(shù)據(jù)庫執(zhí)行非法Cookie篡改數(shù)據(jù)

風險級別

攻擊形式

利用瀏覽器cookie數(shù)據(jù)信息,非法修改cookie數(shù)據(jù),致使客戶端做數(shù)據(jù)上傳時,服務器記錄、篡改用戶數(shù)據(jù)

解決方案

1)???? 避免直接在cookie?中泄露用戶隱私,例如email、密碼等等。

2)??????? 通過使cookie?和系統(tǒng)ip?綁定來降低cookie?泄露后的危險。這樣攻擊者得到的cookie?沒有實際價值,不可能拿來重放。

?

?

?

?

總結

以上是生活随笔為你收集整理的[置顶] SQL注入安全分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。