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

NDIS 中間層驅動在防御SQL 注入攻擊方面的應用

2023-07-25 05:18:30李洋劉婷
科技與創新 2023年11期
關鍵詞:系統

李洋,劉婷

(湖南信息職業技術學院,湖南 長沙 410200)

隨著信息技術日益發展,越來越多的團體或機構將日常業務放到Web 系統上處理,這對Web 系統的安全性提出了更高更嚴的要求。然而,很多程序員在開發Web 系統的過程中沒有樹立足夠的安全意識,使得這些Web 系統中或多或少存在著一些安全漏洞。其中一個比較常見的是SQL 注入漏洞,攻擊者利用SQL注入漏洞發起SQL 注入攻擊以達到竊取用戶敏感數據的目的[1]。

本文在分析目前主流的防SQL 注入攻擊技術的基礎上,提出了基于NDIS 中間層驅動的防御SQL 注入攻擊的技術,并對此進行了詳細闡述。

1 SQL 注入攻擊以及常見的防御手段

1.1 SQL 注入攻擊的原理

SQL 注入攻擊是常見的攻擊Web 系統的手段之一,非法用戶利用程序員在編寫代碼時沒有對用戶輸入數據的合法性進行漏洞判斷,通過提交一段針對性強的數據庫查詢代碼,就可根據程序返回的結果獲得想獲取的數據[2]。由于SQL 注入是從正常的WWW 端口訪問,表面上看起來與一般的Web 頁面訪問沒什么區別,因此部署在網絡上的防御設備不會對這種滲透式的攻擊發出警報,SQL 注入也就很難在第一時間被發現。近年來,SQL 注入攻擊已經從簡單的URL(Uniform Resource Locator,統一資源定位器)直接注入和表單注入發展成為對HTTP(Hyper Text Transfer Protocol,超文本傳輸)協議各個字段進行注入,SQL注入帶來的威脅仍不可小視。

SQL 注入攻擊有一些典型的攻擊方式,下面通過一個例子來說明SQL 注入攻擊的過程。以下是一個Web 系統中的部分代碼:

String uID;

String sQuery;

uID=request.getParameter(“userCode”);

sQuery= “ select username from users where userid=’”+uID+”’”;

用戶利用http://infoweb.com/username.do?user Code=mycode 進行查詢工作,

Web 系統將獲得的用戶輸入的參數傳入數據庫并執行如下的SQL 語句:

select username from users where userid=’mycode’

這是一次正常的查詢操作,通過用戶ID 查找對應的用戶名。但由于參數值沒有進行任何處理,攻擊者通過嵌入附加SQL 語句的方式來修改查詢字符串的值,從而改變原先的語句表達邏輯,例如:http://infoweb.com/username.do?userCode=mycode‘;delete from users;--。

此時WEB 系統將獲得的用戶輸入的參數傳入數據庫后,數據庫將執行如下3 條SQL 語句:

select username from users where userid=’mycode’;

delete from users;

--‘

可以看出,“;”和“--”字符終止了當前的SQL語句和,結合添加的注釋將原來正常的SQL 查詢語句修改成3 條SQL 語句,其中第二條SQL 語句將user表中的數據全部刪除。造成這種情況的原因是攻擊者利用代碼缺陷重新構造了SQL 語句,導致原有的邏輯變為查詢users 表并刪除users 表中的數據,給數據的所有者造成巨大的損失。

1.2 典型的SQL 注入攻擊語句

SQL 注入攻擊語句具有靈活多變的特點,因此,需要通過分析大量的攻擊語句來歸納總結這些語句的特征。以下是3 種最常見的完成某項攻擊目的的語句的特征:①判斷注入點存在與否。攻擊者嵌入“and 1=1”返回正確頁面,嵌入“and 1=2”返回錯誤頁面,則說明此處大概率存在注入點。輸入and 1=1,and 1=2。②猜測數據庫表名。攻擊者嵌入語句后返回正常頁面,則說明數據庫中存在該表。and 0<>(select count(*)from userinfo) ---判斷是否存在userinfo 這張表。③猜解庫表中字段。攻擊者嵌入語句后返回正常頁面,則說明庫表中存在相應的字段。輸入and 0<>(select count(username) from userinfo) ---猜測userinfo 這張表中是否存在username 這個字段。

1.3 SQL 注入攻擊的防御手段

采用預編譯技術。使用預編譯的SQL 語句進行參數化查詢,將帶“?”的SQL 語句發送給DBMS(Database Management System,數據庫管理系統)完成解析、檢查、編譯等工作,再把實際值賦給“?”,最后將“?”這個變量傳給SQL 語句。預編譯技術能夠有效防范惡意攻擊者利用拼接SQL 語句產生的漏洞進行的SQL 注入攻擊。

嚴格控制數據類型。對強類型語言中一般不存在數字型注入,因為接收數字時,大多都會進行整型(int)數據類型轉換。對于弱類型語言需要進行數字類型檢查,防止數字型注入。

對特殊字符進行轉義。手動或者利用安全函數對諸如“‘”“#”等特殊字符進行轉義,防止惡意攻擊者利用特殊字符閉合SQL 語句達到SQL 注入的目的。

上述技術手段的使用在很大程度上能夠有效防范SQL 注入攻擊,但在實際過程仍存在著以下困難:①不能動態地防范SQL 注入攻擊。如果Web 系統上線后才發現仍然有部分SQL 注入攻擊語句能夠發生作用,那就說明系統代碼中還存在著未檢查出的SQL 注入攻擊漏洞,這時為了安全起見必須中斷Web 系統的正常運行并立刻對原有代碼進行修改后使之生效,在此期間由于系統中斷不可避免地會帶來一定的損失。②對現存的大量Web 應用不適用。目前互聯網上仍存在著成千上萬的早期開發的Web 系統,受限于當時的技術水平,這些Web 系統中或多或少存在著一些SQL注入攻擊漏洞,如果將這些系統的源代碼進行一一修改,那耗費的人力和時間是不能接受的。

通過以上分析可知,傳統的防范SQL 注入攻擊手段存在著不足之處。鑒于此,本文提出將NDIS 中間層驅動技術應用到防SQL 注入攻擊中,通過對發往Web 系統的HTTP 數據報進行分析,判斷其中是否存在SQL 注入攻擊行為,對攻擊行為采取相應的防御措施。此技術最大的優勢在于檢測和防御期間不需要暫停Web 系統的運行,同時也不需要對Web 系統本身的代碼做任何修改。

2 NDIS 中間層驅動

2.1 NDIS 中間層驅動工作原理

NDIS 的全稱為網絡驅動程序接口規范,在數據鏈路層、網絡層和傳輸層均給出了詳細的通信接口規范,如圖1 所示。

圖1 NDIS 驅動在Windows 中的位置

NDIS 提供了一個完整的開發環境,程序員只需要利用NDIS 提供的函數就能夠順利編寫出滿足自身業務需求的網絡驅動程序[3]。

NDIS 對以下3 種網絡驅動程序提供支持:①網卡驅動程序,又稱為微端口驅動程序,負責將接收到的數據包轉發給上層驅動程序和接收來自上層驅動程序發過來的數據包。②中間驅動程序,又稱為NDIS 中間層驅動,它位于網卡驅動程序和協議驅動程序之間,既向網卡驅動程序展現協議特性,又向協議驅動程序展現小端口特性。因此網卡驅動程序把它看作協議驅動程序,協議驅動程序把它看作網卡驅動程序,中間驅動程序對于這二者來說是透明的。③協議驅動程序。實現并執行具體的諸如TCP/IP/IPX/SPX 等網絡協議,對網卡驅動程序或者中間驅動程序發來的數據包進行協議解析。

NDIS 中間層驅動獲取來自網卡的原始數據包,NDIS 中間層驅動的工作過程如圖2 所示。

圖2 NDIS 中間層驅動工作過程圖

NDIS 中間層驅動工作在網卡驅動程序的MINIPORT 接口和協議驅動程序的PROTOCOL 接口之間,向下導出一個PROTOCOL 接口與網卡驅動程序交互,向上則導出一個MINIPORT 接口與協議驅動程序交互,這樣就將自身透明地插入到了網卡驅動程序與協議驅動程序之間。當網卡驅動程序接收到底層傳上來的數據包后,會將數據包從自身的MINIPORT 接口發送到NDIS 中間層驅動的PROTOCOL 接口,NDIS中間層驅動接收到數據包后可以對數據包的內容進行處理,然后將數據包從自身的MINIPORT 接口發送到協議驅動程序的PROTOCOL 接口,這樣NDIS 中間層驅動就完成了一次數據包的傳遞工作。

由于從零開發一個完整的NDIS 中間層驅動是一件復雜且難度很高的工作,因此Windows 驅動開發工具WINDDK 自帶了名為PASSTHRU 的開發框架,它作為NDIS 中間層驅動的一個實例,完成了一個NDIS中間層驅動所應具有的基本功能,程序員只需在此框架上添加合適的代碼就能很容易地開發出滿足特定功能的NDIS 中間層驅動。

2.2 PASSTHRU 中數據包的獲取

PASSTHRU 框架中的 PtReceive 函數和PtReceivePacket 函數負責完成接收數據包的工作,接收到的數據包存放在一個或多個名為NDIS_BUFFER的結構體中,其中每個結構體記錄了數據包的一部分內容及數據包內容的結構體的地址。因此程序員在這2個函數中添加適當的代碼,通過順序遍歷數據包對應的所有結構體就可以獲取到NDIS 中間層驅動接收的數據包的內容。以下是PtReceivePtReceivePacket 函數中添加的獲取數據包的關鍵代碼:

NdisQueryPacket(Packet,&PhysicalBufferCount,&B ufferCount,&NdisBuffer,&TotalPacketLength);

NdisAllocateMemory(&MyBuffer,4096,0,HighestA cceptableMax);

NdisZeroMemory(MyBuffer,4096);

NdisQueryBufferSafe(NdisOwnBuffer,&TmpBuffer,

&CpySize,NormalPagePriority);

NdisMoveMemory(MyBuffer,TmpBuffer,CpySize);

Offset=CpySize;

while(1)

{

if(NdisOwnBuffer==Packet->Private.Tail)

break;

NdisOwnBuffer=NdisOwnBuffer->Next;if(NdisOwnBuffer==NULL)

break;

NdisQueryBufferSafe(NdisOwnBuffer,&TmpBuffer,&CpySize,NormalPagePriority);

NdisMoveMemory(MyBuffer +Offset,TmpBuffer,CpySize);

Offset+=CpySize;

}

經過以上處理,MyBuffer 中存放了NDIS 中間層驅動接收的數據包的副本,數據包獲取工作完成。

3 SQL 注入攻擊的檢測和防御

3.1 數據包的解析

由于SQL 注入攻擊語句是通過HTTP 數據報提交給服務器的,因此需要對之前的MyBuffer 中的內容進行解析,判斷獲取的數據包中是否攜帶了HTTP 數據報,作為是否進行后續的SQL注入攻擊檢測工作的依據。

解析數據包的關鍵在于獲取數據包中攜帶的數據報首部信息。如果通過解析,數據包中包含了IP 首部、TCP 首部及TCP 首部中目的端口號字段為80,則數據包中攜帶了HTTP 數據報,接下來將對HTTP 數據報進行解析。以下是NDIS 中間層驅動中解析數據包的關鍵代碼:

if(MyBuffer[12] == 0x08 && MyBuffer[13] ==0x00 && MyBuffer[23] == 0x06 &&MyBuffer[14+ipheaderlen+2] == 0x00 &&MyBuffer[14+ipheaderlen+3]==0x50)

3.2 HTTP 數據報的解析

HTTP 數據報攜帶了客戶端提交給服務器的數據,這些數據中可能包含SQL 注入攻擊語句,因此需要通過解析HTTP 數據報獲取客戶端提交的數據。HTTP數據報的請求方法有“GET”和“POST”。根據HTTP數據報協議,如果請求方法為“GET”,則提交的數據包含在URL 部分;如果請求方法為“POST”,則提交的數據包含在請求數據部分,如圖3 所示。

通過解析HTTP 數據報可以獲得客戶端提交的數據,接下來將對提交的數據進行SQL 注入攻擊檢測。

圖3 HTTP 數據報

3.3 基于正則表達式的SQL 注入攻擊檢測技術

正則表達式實際上是一種邏輯公式,它表達的是匹配字符串的邏輯,即通過組合事先定義好的特定的字符構建一個“規則表達式”,然后利用這個“規則表達式”完成對字符串的匹配工作。正則表達式有基本元字符、次數元字符、位置元字符和特殊元字符這幾類常見元字符,利用這些元字符以及適當的普通字符可以構造出用以描述SQL 注入攻擊語句的正則表達式。常見的SQL 注入攻擊語句及其正則表達式如表1 所示。

表1 常見的SQL 注入攻擊語句及其正則表達式

一旦這些事先定義好的SQL 注入攻擊語句的正則表達式匹配到了客戶端通過HTTP數據報提交的數據,則說明數據中嵌入了SQL 注入攻擊語句,此時HTTP數據報將被NDIS 中間層驅動丟棄,從而達到了保護Web 系統免遭攻擊的目的。

4 結束語

本文首先介紹了SQL 注入攻擊和NDIS 中間層驅動的工作原理,之后對NDIS 中間層驅動如何運用在SQL 注入攻擊的檢測和防御方面進行了詳細描述,具有一定的參考價值。

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 华人在线亚洲欧美精品| 亚洲欧美一区二区三区蜜芽| 欧美日韩第三页| 国产成人精品免费av| 国产网友愉拍精品| 一级福利视频| 国产精品手机在线播放| 一本视频精品中文字幕| 亚洲精品另类| 国产AV无码专区亚洲A∨毛片| 红杏AV在线无码| 国产一级一级毛片永久| 五月天婷婷网亚洲综合在线| 国产综合日韩另类一区二区| 国产一区在线视频观看| 中文字幕永久视频| 看国产毛片| 伊人久久婷婷| 欧美日韩国产在线人| 激情乱人伦| 免费在线看黄网址| 亚洲另类第一页| 久久精品人妻中文系列| 久久久久无码精品国产免费| www.亚洲一区| 99久久亚洲精品影院| 国产网站一区二区三区| 人人爽人人爽人人片| 久久综合五月婷婷| 色综合网址| 亚洲天堂精品在线观看| 亚洲美女一级毛片| 久久国产精品娇妻素人| 国产免费怡红院视频| 激情亚洲天堂| 国产 在线视频无码| 国产成人麻豆精品| 国产区精品高清在线观看| 精品国产免费人成在线观看| 亚洲国产欧美国产综合久久 | 国产一区在线视频观看| 日韩欧美国产中文| 尤物特级无码毛片免费| 乱人伦中文视频在线观看免费| 国产网站免费观看| 欧美日韩精品一区二区在线线| 色综合天天综合中文网| 国产精品主播| 99国产精品一区二区| 国产青榴视频在线观看网站| 国产精品永久免费嫩草研究院| 夜夜拍夜夜爽| 精品亚洲欧美中文字幕在线看| 精品三级网站| 五月婷婷综合网| 国产男女免费视频| 99在线视频网站| yjizz国产在线视频网| 国产在线观看精品| 亚洲 欧美 偷自乱 图片| 国产内射在线观看| 国产女人18毛片水真多1| www.亚洲一区二区三区| 成AV人片一区二区三区久久| 一本色道久久88综合日韩精品| 欧美一区二区三区欧美日韩亚洲| 激情综合激情| 一级黄色欧美| 色综合天天操| 女人一级毛片| 亚洲欧美日韩精品专区| 国产成人区在线观看视频| 国产人成乱码视频免费观看| 亚洲制服丝袜第一页| 国产精品污污在线观看网站| 女人毛片a级大学毛片免费| 亚洲区视频在线观看| 亚洲成A人V欧美综合| 丁香亚洲综合五月天婷婷| 99精品在线视频观看| 婷婷六月综合| 精品少妇人妻一区二区|