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在多段調速系統中的應用
主站蜘蛛池模板: 嫩草在线视频| 谁有在线观看日韩亚洲最新视频 | 亚洲福利片无码最新在线播放| 欧美亚洲欧美| 久久精品人人做人人爽电影蜜月| 亚洲经典在线中文字幕| 欧美国产日韩在线观看| 911亚洲精品| 丰满人妻中出白浆| 在线欧美日韩| 亚洲国产成人自拍| 亚洲成A人V欧美综合| 国产成人综合久久精品下载| 成人中文字幕在线| 亚洲国产成人麻豆精品| 久久人搡人人玩人妻精品一| 精品一区二区三区自慰喷水| 欧美黄网站免费观看| 网友自拍视频精品区| 福利视频久久| 一级毛片基地| 视频在线观看一区二区| 99在线视频免费观看| 青草娱乐极品免费视频| 午夜啪啪福利| 欧美日韩国产在线人| 久久99国产综合精品女同| 青青草国产在线视频| 在线观看精品自拍视频| 老色鬼久久亚洲AV综合| 久久精品人人做人人爽97| 亚洲国产精品日韩av专区| 91香蕉国产亚洲一二三区| 夜精品a一区二区三区| 一级毛片免费不卡在线 | 国产一区二区影院| 亚洲精品国产日韩无码AV永久免费网 | 成人免费午夜视频| 国产丰满成熟女性性满足视频| 国产激情无码一区二区三区免费| 伊在人亚洲香蕉精品播放 | 国产精品美女免费视频大全 | 五月激情婷婷综合| 亚洲 欧美 日韩综合一区| 呦视频在线一区二区三区| 国产香蕉97碰碰视频VA碰碰看| 91 九色视频丝袜| 五月六月伊人狠狠丁香网| 中文字幕波多野不卡一区| 国产免费福利网站| 久草热视频在线| 日韩av无码精品专区| 国产亚洲精品自在线| 色老二精品视频在线观看| 国产真实自在自线免费精品| 国产激情无码一区二区免费| 国产黄网永久免费| m男亚洲一区中文字幕| 毛片手机在线看| 国产三级成人| 国产91无码福利在线| 国产专区综合另类日韩一区| 高清国产va日韩亚洲免费午夜电影| 亚洲三级电影在线播放| 伊人五月丁香综合AⅤ| 91成人在线免费观看| 国产在线视频自拍| 国产老女人精品免费视频| 一区二区自拍| 91青青视频| 国产精品原创不卡在线| 欧美亚洲一区二区三区在线| 国产亚洲欧美日韩在线一区| 欧美成人免费| 色综合中文| 国产精品林美惠子在线观看| 精品少妇人妻av无码久久| 色国产视频| 午夜免费视频网站| 日韩精品一区二区深田咏美| 夜夜高潮夜夜爽国产伦精品| 国产精品极品美女自在线看免费一区二区 |