国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

典型內(nèi)部網(wǎng)絡(luò)SQL注入攻擊與防范

2020-12-31 08:20
關(guān)鍵詞:服務(wù)器端攻擊者語句

(國防科技大學(xué)信息通信學(xué)院 湖北 430010)

當(dāng)前,企業(yè)內(nèi)部網(wǎng)、醫(yī)療信息網(wǎng)等典型內(nèi)部網(wǎng)絡(luò)中的Web應(yīng)用系統(tǒng)普遍采用基于B/S模式的網(wǎng)絡(luò)服務(wù)構(gòu)架技術(shù)[1]。在此基礎(chǔ)上設(shè)計的Web應(yīng)用程序大都需與用戶輸入信息進行交互,以完成程序功能。SQL 查詢是Web應(yīng)用程序進行數(shù)據(jù)層操作的常用方式,通常由程序中可信的常量字符串和用戶輸入等不可信的外來數(shù)據(jù)動態(tài)拼接而成。SQL注入攻擊就是利用Web應(yīng)用程序中可能存在的輸入合法性校驗漏洞,通過精心構(gòu)造巧妙的用戶輸入,繞過應(yīng)用程序凈化、過濾,使得用戶輸入的不可信數(shù)據(jù)可被數(shù)據(jù)庫解析執(zhí)行,從而獲取數(shù)據(jù)層信息或權(quán)限[2]。根據(jù)開放式Web應(yīng)用程序安全項目組織(Open application security project,OWASP)對近年來Web 安全威脅的評估分析顯示,SQL注入攻擊一直是Web應(yīng)用最嚴重安全威脅之一[3]。

1 SQL注入攻擊機理

SQL注入攻擊的本質(zhì)是攻擊者通過精心構(gòu)造,將用戶輸入與原有結(jié)構(gòu)語句混合在一起,使得用戶輸入作為SQL 代碼片段被數(shù)據(jù)引擎執(zhí)行,從而進行惡意操作。

1.1 攻擊機理

SQL注入攻擊機理可結(jié)合具體實例予以說明:在Web系統(tǒng)后臺數(shù)據(jù)庫中,常含有名為users的數(shù)據(jù)表,用來存儲系統(tǒng)用戶相關(guān)信息,數(shù)據(jù)表中通常含有userID和password 兩個字段,分別對應(yīng)用戶賬戶和密碼,不同用戶在系統(tǒng)中具有不同的操作權(quán)限。當(dāng)用戶使用賬戶密碼登錄Web系統(tǒng)時,身份驗證模塊常使用的以下兩個SQL 查詢語句,從users數(shù)據(jù)表中查詢記錄:

select*from users;返回查詢記錄

select count(*)from users;返回記錄數(shù)量

在Web系統(tǒng)前臺登錄頁面中,用戶輸入的賬戶(userID)和密碼(password)后會作為查詢值,成為SQL 語句的一部分,被執(zhí)行后返回查詢結(jié)果,從而判定用戶是否存在。假如用戶名為test,密碼為test123,上面兩條查詢語句則將變?yōu)椋?/p>

(1)select*from users where userID='test 使用賬戶密碼登錄使得用戶輸入的不可信數(shù)據(jù)可被數(shù)據(jù)庫

(2)select count(*)from users where userID=賬戶密碼登錄使and password=)from user

正確登錄情況下,語句(1)會返回一條查詢記錄,反之則身份驗證失敗。同理,正常登錄情況下,語句(2)返回值為1,如果返回記錄數(shù)量為0 或者大于1,則身份驗證失敗。如果攻擊者輸入通過精心構(gòu)造數(shù)據(jù),將userID和password 兩個字段賦予特殊字符串,如賬戶值隨機輸入abc,密碼輸入構(gòu)造的字符串’密碼輸入‘1 密碼輸入,則語句(1)變?yōu)椋?/p>

(3)select * from users where userID=userID=賬戶密碼登錄使and pas’or‘1or ct;

根據(jù)邏輯操作符的優(yōu)先級順序,上述語句where后的查詢條件分為userID=為優(yōu)先級順序,上述語句s where use’和1=1 兩個邏輯式,且兩個邏輯式通過運算符or 連接,只要有一個條件為真,即可滿足查詢條件。顯然1=1為永真邏輯式,無論前一個邏輯式是否為真,均可通過身份驗證。攻擊者構(gòu)造的惡意輸入,使用單引號’閉合password 字段的查詢值,且引入or‘1r 查詢與原有的單引號’拼接成永真邏輯式,改變原有SQL 語句含義,從而繞過登錄驗證,可繼續(xù)進行數(shù)據(jù)查詢、添加、刪除、更新等危險操作。

1.2 攻擊技術(shù)

在上例中,攻擊者通過精心構(gòu)造用戶輸入,改變原有SQL 語句含義實施注入攻擊,也被稱為重言式SQL注入,除此之外,SQL注入還有以下幾種常用的攻擊方法:

(1)注釋符攻擊。攻擊者在用戶輸入中插入注釋符,過濾部分查詢條件,可使得查詢語句返回正常值。上例中,用戶賬戶輸入test--,查詢語句①會變?yōu)閟elect*from users where userID=得查詢語句返回,關(guān)于密碼的查詢條件被--注釋后不會被數(shù)據(jù)引擎執(zhí)行,因此可在缺少密碼的情況下完成身份認證。

(2)邏輯錯誤查詢攻擊。在這種攻擊中,攻擊者構(gòu)造的語句不會被正確執(zhí)行,但出現(xiàn)錯誤后,數(shù)據(jù)庫的版本、類型、參數(shù)等信息可能會顯示在返回的錯誤提示信息中,攻擊者可借此收集有用信息,為進一步攻擊做準備。

(3)盲注式攻擊。如果返回錯誤信息被開發(fā)人員過濾了,攻擊者可通過構(gòu)造不同參數(shù),根據(jù)頁面反饋情況來收集信息。例如在網(wǎng)頁URL地址后添加and 1=1 時,頁面可正常顯示,添加and 1=2 時頁面不能正常顯示,說明構(gòu)造的參數(shù)能夠被數(shù)據(jù)引擎執(zhí)行,存在注入點,可進行注入攻擊。

(4)附帶查詢攻擊。在支持多語句查詢的數(shù)據(jù)庫中,攻擊者可以在不改變原有語句含義的情況下,在后面加入新的語句,從而完成數(shù)據(jù)查詢、添加、刪除、更新等操作。與此類似,還有通過union 關(guān)鍵詞構(gòu)造聯(lián)合查詢的攻擊方式。

(5)存儲過程攻擊。如果數(shù)據(jù)庫開啟了默認的存儲過程,攻擊者可借此實現(xiàn)SQL注入攻擊,如使用SP_OACreate 創(chuàng)建ActiveX對象,實現(xiàn)對Asp 腳本的注入攻擊。

(6)編碼替換攻擊。如果開發(fā)人員對邏輯運算符or、注釋符--等進行了過濾,直接在輸入數(shù)據(jù)中插入這些字符不能直接被數(shù)據(jù)引擎執(zhí)行,可將這些字符經(jīng)過URL、unicode 等編碼方式編碼后插入,通過編碼替換的方式規(guī)避過濾,從而插入SQL 語句中被執(zhí)行。

1.3 攻擊特性

作為一種常用的網(wǎng)絡(luò)數(shù)據(jù)庫攻擊技術(shù),SQL注入具有以下攻擊特性:

(1)隱蔽性。SQL注入使用正常的服務(wù)端口對服務(wù)器進行訪問,訪問語句與一般的頁面訪問請求高度相似,攻擊隱蔽性強,難以被發(fā)現(xiàn)。

(2)廣泛性。大量數(shù)據(jù)庫軟件隨著Web應(yīng)用系統(tǒng)在網(wǎng)絡(luò)中部署應(yīng)用,如果使用基于SQL標準語言數(shù)據(jù)庫軟件,應(yīng)用程序缺乏嚴格的輸入驗證,這些系統(tǒng)均可能成為SQL注入攻擊的攻擊對象。

(3)變種多。如前所述,SQL注入攻擊具有多樣的攻擊方式,有經(jīng)驗的攻擊者還可能綜合使用多種攻擊方法,達成攻擊目的。通過特征匹配等方法對SQL攻擊進行檢測識別,往往只能捕獲典型的幾種攻擊,難以實現(xiàn)全面的攻擊防護。

(4)門檻低?;ヂ?lián)網(wǎng)中存在多種SQL注入工具,這些工具高度自動化,攻擊者不需要掌握太多知識,即可實施SQL注入攻擊。

(5)危害性大。由于安全力量不足,當(dāng)前網(wǎng)絡(luò)中大量Web應(yīng)用系統(tǒng)存在被注入攻擊的可能。一旦注入成功,攻擊者可能通過植入木馬,控制訪問的客戶端,進而實施其他攻擊,具有高度危害性。

2 SQL注入檢測

進行SQL注入攻擊檢測是完善Web應(yīng)用系統(tǒng)安全體系,增強系統(tǒng)健壯性的必要環(huán)節(jié)。由于當(dāng)前Web應(yīng)用系統(tǒng)普遍采用基于B/S模式的網(wǎng)絡(luò)服務(wù)構(gòu)架技術(shù),典型內(nèi)部網(wǎng)絡(luò)中Web應(yīng)用系統(tǒng)SQL注入檢測也可從客戶端和服務(wù)器端進行[4]:

2.1 客戶端SQL注入檢測

客戶端SQL注入檢測可通過黑盒測試的方式實現(xiàn),將Web應(yīng)用系統(tǒng)下的站點路徑導(dǎo)入至SQL注入檢測工具軟件后,工具軟件會對被測站點進行模擬SQL注入攻擊,檢驗Web應(yīng)用系統(tǒng)中是否存在的SQL注入點。工具軟件模擬SQL注入攻擊過程是全盲注入,不需要考慮被檢系統(tǒng)的實現(xiàn)方式,并且模擬攻擊只驗證SQL注入攻擊的可行性,不會對Web應(yīng)用系統(tǒng)造成破壞。工具軟件進行模擬攻擊時,采用的多為已有注入攻擊方法,即使是同一種攻擊方法,攻擊效果也受字典內(nèi)容、注入方式等多種因素影響,SQL注入攻擊的檢測效果也隨工具軟件的選擇波動明顯。當(dāng)前,互聯(lián)網(wǎng)中已有多種SQL注入檢測工具,能夠檢測出典型的SQL注入點。為進一步提高典型內(nèi)部網(wǎng)絡(luò)中Web應(yīng)用系統(tǒng)安全性,我們可借助工具軟件對重要系統(tǒng)進行預(yù)先檢測,及時提醒應(yīng)用系統(tǒng)所有者進行漏洞修補,防范于未然。

2.2服務(wù)器端SQL注入檢測

Web應(yīng)用系統(tǒng)直接部署在后臺服務(wù)器上,在服務(wù)器端可以直接獲取到應(yīng)用系統(tǒng)實現(xiàn)代碼、數(shù)據(jù)庫類型等信息。同客戶端SQL注入檢測相比,服務(wù)器端SQL注入檢測不僅能檢測出SQL注入漏洞,還能進一步分析漏洞產(chǎn)生原因,為漏洞修補提供直接支撐。服務(wù)器端SQL注入檢測主要通過代碼審計的方式實現(xiàn),通過分析系統(tǒng)實現(xiàn)代碼,挖掘其中的邏輯漏洞,分析惡意構(gòu)造的SQL 語句在數(shù)據(jù)庫中執(zhí)行的可能性,以達到SQL注入檢測的目的。服務(wù)器端SQL注入檢測能夠?qū)?yīng)用系統(tǒng)進行全面分析,深度檢測,適用于高安全性需求的應(yīng)用系統(tǒng),但檢測效果依賴于檢測人員的安全經(jīng)驗,且時效性較差。對于典型內(nèi)部網(wǎng)絡(luò)中的關(guān)鍵Web應(yīng)用系統(tǒng),可在專業(yè)安全機構(gòu)進行注入檢測,驗證安全性后再上線使用,以提高系統(tǒng)抗SQL注入攻擊能力,保證系統(tǒng)的正常運行和數(shù)據(jù)安全。

3 SQL注入攻擊防范

SQL注入攻擊廣泛存在于使用訪問數(shù)據(jù)庫的Web應(yīng)用中,且具有高度的隱蔽性。典型內(nèi)部網(wǎng)絡(luò)中的Web應(yīng)用系統(tǒng)通常會涉及重要內(nèi)部信息,一旦被攻擊者成功注入,將造成嚴重后果。因此,加強典型內(nèi)部網(wǎng)絡(luò)中Web應(yīng)用系統(tǒng)SQL注入攻擊防范具有重要意義,可從技術(shù)和管理兩個層面展開[5]:

(1)技術(shù)防范。在設(shè)計Web應(yīng)用系統(tǒng)時,不僅應(yīng)關(guān)注應(yīng)用系統(tǒng)的功能性,更應(yīng)提高系統(tǒng)安全性,設(shè)計防范SQL注入安全模塊是從技術(shù)層面防范SQL注入攻擊的常用方法。用戶輸入是SQL注入攻擊的關(guān)鍵之一,在設(shè)計安全模塊時,可采用黑名單/白名單機制,對用戶輸入進行驗證,設(shè)置黑名單可拒絕用戶輸入已知的危險字符,白名單只接受特定類型的用戶輸入。白名單對用戶輸入有效性驗證更充分,但可能影響應(yīng)用系統(tǒng)的正常使用,黑名單效率較高但難以過濾全部危險輸入,在實際工作中可結(jié)合系統(tǒng)特性靈活選用或綜合使用[6]。除此之外,還可以通過信息編碼、使用參數(shù)化語句等方式,提高SQL注入攻擊難度,對可疑數(shù)據(jù)實施污點跟蹤,在危險輸入嘗試創(chuàng)建SQL查詢令牌時立即拒絕。

(2)安全管理。技術(shù)防范依賴于應(yīng)用系統(tǒng)設(shè)計人員,加強安全管理是從系統(tǒng)運維保障出發(fā),防范SQL注入攻擊的重要工作。在部署應(yīng)用系統(tǒng)時,需重點對數(shù)據(jù)庫進行安全配置,包括數(shù)據(jù)庫連接方式、賬號權(quán)限、數(shù)據(jù)加密存儲等,鞏固應(yīng)用系統(tǒng)數(shù)據(jù)層安全[7]。在系統(tǒng)運行過程中,管理員應(yīng)通過日志審核等方式,時刻關(guān)注系統(tǒng)運行狀況,如果出現(xiàn)頁面短時間內(nèi)被密集訪問、數(shù)據(jù)庫中存在可疑臨時文件、數(shù)據(jù)信息被篡改等情況,應(yīng)用系統(tǒng)可能遭受SQL注入攻擊,應(yīng)及時進行處置[8]。此外,管理員還可以通過加載Web 防火墻等方式,防范SQL注入攻擊。

4 結(jié)束語

SQL注入攻擊是典型內(nèi)部網(wǎng)絡(luò)中Web應(yīng)用系統(tǒng)面臨的重要安全威脅,隨著Web應(yīng)用系統(tǒng)的使用日益增多,典型內(nèi)部網(wǎng)絡(luò)SQL注入攻擊與防范也將引起安全防護人員更多研究,探究其攻擊機理、特性及檢測防范方法,促進Web應(yīng)用系統(tǒng)設(shè)計、開發(fā)、運維全周期SQL注入防范,可降低SQL注入攻擊危害性,增強典型內(nèi)部網(wǎng)絡(luò)中Web應(yīng)用系統(tǒng)的安全性。

猜你喜歡
服務(wù)器端攻擊者語句
基于貝葉斯博弈的防御資源調(diào)配模型研究
Linux環(huán)境下基于Socket的數(shù)據(jù)傳輸軟件設(shè)計
重點:語句銜接
正面迎接批判
正面迎接批判
基于Qt的安全即時通訊軟件服務(wù)器端設(shè)計
基于Qt的網(wǎng)絡(luò)聊天軟件服務(wù)器端設(shè)計
基于C/S架構(gòu)的嵌入式監(jiān)控組態(tài)外設(shè)擴展機制研究與應(yīng)用
我喜歡
作文語句實錄
屏边| 洛扎县| 达州市| 天全县| 鸡东县| 玛沁县| 鹿邑县| 彭阳县| 方山县| 永胜县| 印江| 密山市| 聊城市| 娄底市| 措勤县| 酒泉市| 汾阳市| 尚义县| 乌兰察布市| 高陵县| 镇康县| 邻水| 常州市| 固安县| 札达县| 新田县| 衡阳县| 玉山县| 广昌县| 晋城| 广东省| 乌拉特后旗| 平利县| 如东县| 永胜县| 额尔古纳市| 汨罗市| 灵台县| 洛浦县| 星座| 平乡县|