蔡翔,宋賢睿,顧廣宇,張淑娟
(國網(wǎng)安徽省電力公司電力科學(xué)研究院安徽安慶230601)
基于注入式SQL的云端存儲安全研究
蔡翔,宋賢睿,顧廣宇,張淑娟
(國網(wǎng)安徽省電力公司電力科學(xué)研究院安徽安慶230601)
針對云端存儲面對的注入式SQL攻擊的問題,本研究在深入分析注入式SQL攻擊的基礎(chǔ)上,闡述了報(bào)錯注入式和URL編碼轉(zhuǎn)換的攻擊原理。通過構(gòu)建對稱參數(shù)明文加解密的方式,分別利用NnCcVvC編碼和指定key值的形式對存儲進(jìn)行加密,結(jié)合加密逆向流程完成對云端存儲字符串的PHP解密。整合了參數(shù)校驗(yàn)和數(shù)據(jù)過濾的操作步驟,降低了用戶訪問云端數(shù)據(jù)庫的權(quán)限設(shè)置,通過存儲的加解密雙向操作為云端存儲提供更安全的保障。
注入式SQL;云端存儲;加密算法;安全管理
伴隨著云計(jì)算技術(shù)的飛速發(fā)展,云端數(shù)據(jù)庫信息存儲安全被認(rèn)為是信息安全保證的重要屏障,但云端數(shù)據(jù)庫的安全性一直在學(xué)術(shù)界引起了廣泛的關(guān)注[1-3]。傳統(tǒng)的云存儲防御和檢測方法存在較高的安全隱患,數(shù)據(jù)庫攻擊者可通過重言式[4]和延時盲注[5]的方式對云端數(shù)據(jù)庫的信息進(jìn)行竊取。與此同時,數(shù)據(jù)信息的管理者通過檢測字符串表達(dá)式的形式對云端存儲漏洞進(jìn)行排查[6],并結(jié)合關(guān)鍵詞ASCII編碼將不合法參數(shù)在存儲過程中進(jìn)行進(jìn)制替換[7],從而檢測了數(shù)據(jù)庫攻擊者的非法訪問權(quán)限。針對云端存儲的安全性問題,本研究在梳理注入式SQL攻擊方式的基礎(chǔ)上,詳細(xì)剖析了報(bào)錯注入和編碼轉(zhuǎn)換的攻擊方式,并介紹了應(yīng)對注入式SQL攻擊的程序調(diào)用防御方法。在融合眾多防御方法優(yōu)點(diǎn)的理論支撐下,給出了一種對稱參數(shù)明文加解密的云端存儲安全保障編碼方案,該方案利用參數(shù)字符串加密的信息進(jìn)行云端存儲的加密,同時,依據(jù)逆向加密的流程給出了云端數(shù)據(jù)庫抽取數(shù)據(jù)的參數(shù)解密,雙向的數(shù)據(jù)信息加解密為云端存儲提供了更高的安全保障。
注入式SQL通過構(gòu)建非法SQL語句來攻擊達(dá)到云端數(shù)據(jù)庫的目的[8]。在云端數(shù)據(jù)庫未設(shè)置檢驗(yàn)和安全過濾時,信息安全攻擊方通過搭建非法字符串的形式對云端資源進(jìn)行抽取,并結(jié)合設(shè)定程序有目的的攻擊用戶數(shù)據(jù)信息[9]。本文以云端數(shù)據(jù)存儲為研究對象,詳細(xì)闡述報(bào)錯注入[10]和編碼轉(zhuǎn)換[11]兩種注入式SQL攻擊。
1)報(bào)錯注入
利用EXP函數(shù)對云端數(shù)據(jù)庫進(jìn)行程序調(diào)用,攻擊者有目的地對存儲數(shù)據(jù)實(shí)現(xiàn)溢出效應(yīng),在眾多數(shù)據(jù)中抽取對攻擊者有利的數(shù)據(jù)信息,最終使得云端數(shù)據(jù)庫出現(xiàn)報(bào)錯信息提示。即頁面顯示結(jié)果如下:
Select(favorableinformation)FROM(Clouddatabase)WHERE SQL num=’1’EXP(Select(Key Information)FROM(Database))AND 1=’1’Error:DOUBLE value is out of ranks in EXP(select(User name@server address)from(Terminal Server))
由以上的基于EXP函數(shù)的報(bào)錯注入錯誤信息提示可見,’User name@server address’給出了云端存儲的用戶名和服務(wù)器地址的關(guān)鍵信息。
2)編碼轉(zhuǎn)換
與報(bào)錯注入的形式不同,編碼轉(zhuǎn)換利用URL地址解碼的方式對云端存儲數(shù)據(jù)信息集合調(diào)用進(jìn)行攻擊。即網(wǎng)址的顯示結(jié)果如下:
http://serveraddress/clouddatabase/main/search.php tag=favorableinformation%15%122%2c+2%4e2+all+select+user+%3ddatabase%+%15%3440%+4c%36%37%4d
1)用戶輸入檢測
用戶輸入檢測分別注入字符檢測和輸入?yún)?shù)檢測兩種方法[12]。其中,注入字符檢測利用正則方式和更換方式將注入式SQL字符串關(guān)鍵詞進(jìn)行替換;輸入?yún)?shù)檢測是利用數(shù)據(jù)信息的整數(shù)參數(shù)進(jìn)行強(qiáng)制性的轉(zhuǎn)換為整型,其他類型的參數(shù)也同樣進(jìn)行使用前的轉(zhuǎn)化,整體上避免了整型參數(shù)后添加SQL語句。
2)數(shù)據(jù)存儲的加密
通過對重要數(shù)據(jù)信息進(jìn)行針對性的加密存儲以降低信息外泄的損失,例如銀行卡號、用戶帳號和身份驗(yàn)證信息等在云端存儲數(shù)據(jù)庫中以加密式的非明文形式進(jìn)行存儲,有效的降低了數(shù)據(jù)庫攻擊者在竊取重要信息后的字符串識別能力。
3)參數(shù)優(yōu)化查詢
參數(shù)優(yōu)化查詢則是依據(jù)用戶輸入數(shù)據(jù)信息后在云端存儲中設(shè)定的參數(shù)遍歷查詢[13],在受到數(shù)據(jù)庫攻擊時,攻擊者并不能依據(jù)參數(shù)的設(shè)置去破解分析參數(shù)字符串的真正含義,通過這種方式的構(gòu)建避免了數(shù)據(jù)庫攻擊者利用SQL語句調(diào)用執(zhí)行和破譯數(shù)據(jù)信息,進(jìn)而確保了云端數(shù)據(jù)庫的安全性。
4)服務(wù)器權(quán)限設(shè)置
通過終端服務(wù)器和云端數(shù)據(jù)庫服務(wù)器的配置設(shè)定完成對服務(wù)器權(quán)限設(shè)置,在權(quán)限設(shè)置過程中依據(jù)用戶存儲信息重要性權(quán)限的最小值進(jìn)行設(shè)置[14],即終端管理的Root權(quán)限分配給對應(yīng)的數(shù)據(jù)存儲用戶,同時,在云端數(shù)據(jù)庫存儲的編碼權(quán)限進(jìn)行集中管理,數(shù)據(jù)庫的訪問需要通過復(fù)雜的密碼進(jìn)行驗(yàn)證。
對于云端數(shù)據(jù)庫在存儲數(shù)據(jù)信息時,通過對稱參數(shù)明文加密和重構(gòu)的方式利用指定編碼(NnCcVvC)對數(shù)據(jù)存儲前進(jìn)行加密編碼[15],參數(shù)編碼和重構(gòu)方式如圖1所示。
圖1 參數(shù)編碼和重構(gòu)
在數(shù)據(jù)信息在云端存儲之前都進(jìn)行如圖1的數(shù)據(jù)字符串的對稱參數(shù)加密重組,其中,包含兩個C重構(gòu)無字符串的0校驗(yàn),n重構(gòu)和v重構(gòu)段序位置上的32 bit的校驗(yàn)編碼和兩個有字符串的0尾校驗(yàn)。具體的參數(shù)編碼如表1所示。
表1 參數(shù)編碼字符串
由表1可見,字符串與非字符串的編碼值均勻的分布在數(shù)據(jù)信息重組中。由于云端存儲庫面對眾多的用戶上傳數(shù)據(jù)信息,則避免數(shù)據(jù)加密的校驗(yàn)值存在相同情況,本研究中增加了用戶自定義n重構(gòu)的校驗(yàn)編碼1和v重構(gòu)的校驗(yàn)編碼2。為了利用校驗(yàn)編碼在字符串對數(shù)據(jù)加密更方便的被編輯,采用數(shù)據(jù)復(fù)雜度的固定值求余的方式生成的以防止非法數(shù)據(jù)值輸入對云端存儲的竊取。
依據(jù)對稱加密算法對指定key進(jìn)行加密[16],其中key值可以根據(jù)不同的存儲數(shù)據(jù)類型進(jìn)行替換,本研究中利用的key值為j*%NH*。具體的云端存儲數(shù)據(jù)加密流程如圖2所示。
針對云端存儲數(shù)據(jù)在導(dǎo)出過程中的解密同樣采用非整數(shù)的形式,這樣可以避免整數(shù)后附加攻擊性的注入式SQL語句并且防止了除用戶外的權(quán)限ID訪問云端數(shù)據(jù)庫。具體的解密流程如下:
Step.1:利用對稱參數(shù)加密逆向解密;
Step.2:解密后的數(shù)據(jù)字符串進(jìn)行如圖1所示的尾校驗(yàn);
Step.3:將各校驗(yàn)編碼和加密字符串校驗(yàn)編碼進(jìn)行對比,若校驗(yàn)編碼相同則解密成功,若不相同則說明數(shù)據(jù)解密后的字符串為非法訪問,即可判斷訪問來自于外部攻擊,返回0校驗(yàn)。
數(shù)據(jù)解密實(shí)質(zhì)上是對數(shù)據(jù)加密過程的逆操作,具體操作流程如圖3所示。
圖2 云端存儲數(shù)據(jù)加密流程
圖3 云端存儲數(shù)據(jù)解密流程
為驗(yàn)證本研究提出的針對注入式SQL的對稱參數(shù)加密可靠性,實(shí)驗(yàn)利用合肥城市云數(shù)據(jù)中心開發(fā)了一個測試網(wǎng)站,該網(wǎng)站在RJS集成運(yùn)行環(huán)境下,結(jié)合Javascript、PHP和html等語言進(jìn)行源代碼的編寫。采用SQLMAP和SSQLInjection作為漏洞測試工具,使用上述對稱參數(shù)明文加解密對云端存儲進(jìn)行漏洞測試,結(jié)果如下:
從結(jié)果中明顯發(fā)現(xiàn)云端存儲存在3種攻擊方式:’1=1’,sleep和UNION。這3種攻擊基本包含了注入式SQL的全部攻擊方式。云端數(shù)據(jù)導(dǎo)出加載過程中使用逆向操作的解密測試結(jié)果如下:
使用不同測試工具對對稱參數(shù)明文加解密前后對比結(jié)果如表2所示。
表2 對稱參數(shù)明文加解密前后對比
本研究所用的對稱參數(shù)明文加解密在注入式SQL防御方法的基礎(chǔ)上進(jìn)行了改進(jìn):通過構(gòu)造不同的字符串校驗(yàn)編碼位置來驗(yàn)證用戶關(guān)鍵數(shù)據(jù)的存儲安全性,同時也先前檢驗(yàn)了云端數(shù)據(jù)庫是否存在漏洞,相比單純的對稱加密算法更加可靠。并且整合了參數(shù)校驗(yàn)和數(shù)據(jù)過濾的操作步驟。在面對整型參數(shù)的字符串編碼時,降低了用戶訪問云端數(shù)據(jù)庫的權(quán)限設(shè)置。
本研究針對傳統(tǒng)的云端存儲面對的注入式SQL攻擊引發(fā)數(shù)據(jù)信息外泄的問題,深入闡述了報(bào)錯注入和編碼轉(zhuǎn)換兩種注入式SQL攻擊原理并詳細(xì)介紹了4種防御理論方法。在整理云端數(shù)據(jù)安全存儲的基礎(chǔ)上,提出了一種基于對稱參數(shù)明文加解密方式的云端數(shù)據(jù)安全處理,利用指定編碼(NnCcVvC)對數(shù)據(jù)存儲前進(jìn)行加密編碼實(shí)現(xiàn)了對稱參數(shù)明文加密和重構(gòu),并增加了用戶自定義校驗(yàn)編碼消除了攻擊者來自同源數(shù)據(jù)庫的非法數(shù)據(jù)值輸入對云端存儲的竊取。在云端存儲數(shù)據(jù)向外導(dǎo)出過程中,利用對稱參數(shù)加密逆向解密將各校驗(yàn)編碼和加密字符串校驗(yàn)編碼進(jìn)行對比,實(shí)現(xiàn)了便利的逆操作。本研究對云端數(shù)據(jù)存儲的安全性保障具有實(shí)踐性意義。
[1]張玉清,王曉菲,劉雪峰,等.云計(jì)算環(huán)境安全綜述[J].軟件學(xué)報(bào),2016,27(6):1328-1348.
[2]馮朝勝,秦志光,袁丁,等.云計(jì)算環(huán)境下訪問控制關(guān)鍵技術(shù)[J].電子學(xué)報(bào),2015,43(2):312-319.
[3]丁滟,王懷民,史佩昌,等.可信云服務(wù)[J].計(jì)算機(jī)學(xué)報(bào),2015,38(1):133-149.
[4]李鑫,張維緯,隋子暢,等.新型SQL注入及其防御技術(shù)研究與分析[J].信息網(wǎng)絡(luò)安全,2016(2):66-73.
[5]宋超臣,黃俊強(qiáng),吳瓊,等.SQL注入繞過技術(shù)與防御機(jī)制研究[J].信息安全與通信保密,2015(2):110-112.
[6]王鵬超,杜慧敏,曹廣界,等.基于布隆過濾器的精確匹配算法設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)科學(xué),2015,42(1):112-118.
[7]黃步根,伏娟.MS-DOC文件文本提取研究[J].計(jì)算機(jī)工程與科學(xué),2014,36(8):1505-1511.
[8]唐磊.淺析SQL注入式攻擊與防范[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2012(1):49-52.
[9]史姣麗,黃傳河,王晶,等.云存儲下多用戶協(xié)同訪問控制方案[J].通信學(xué)報(bào),2016,37(1):88-99.
[10]林世鑫.基于SQL注入的Web數(shù)據(jù)安全防范與優(yōu)化[J].電腦知識與技術(shù),2014(10):2184-2187.
[11]宋燕燕,周曉梅,周靈.面向教學(xué)的多媒體文件識別系統(tǒng)研究與應(yīng)用[J].電子世界,2016(16):78-89.
[12]齊林,王靜云,蔡凌云,等.SQL注入攻擊檢測與防御研究[J].河北科技大學(xué)學(xué)報(bào),2012,33(6):530-533.
[13]谷偉,陳蓮君.基于MySql的查詢優(yōu)化技術(shù)研究[J].微型電腦應(yīng)用,2013,30(7):48-50.
[14]鄭豪,董小社,王恩東,等.VM內(nèi)部隔離驅(qū)動程序的可靠性架構(gòu)[J].軟件學(xué)報(bào),2014(10):2235-2250.
[15]蒲保興,趙乘麟.基于網(wǎng)絡(luò)編碼的組播率與編碼節(jié)點(diǎn)數(shù)的平衡[J].計(jì)算機(jī)應(yīng)用,2015,35(4):929-933.
[16]李湘鋒,趙有健,全成斌.對稱密鑰加密算法在IPsec協(xié)議中的應(yīng)用[J].電子測量與儀器學(xué)報(bào),2014,28(1):75-83.
Research on security of cloud storage based on injection SQL
CAI Xiang,SONG Xian-rui,GU Guang-yu,ZHANG Shu-juan
(State Grid Anhui Electric Power Company Electric Power Research Institute,Anqing230601,China)
The analysis of injection SQL attacks,this paper discusses the attack principle of errorinjection and URL-encoding conversion.By constructing the symmetric parameter encryption and decryption method,the storage is encrypted with NnCcVvC code and designated key value respectively,and the PHP decryption of the cloud storage string is completed by combining the encryption reverse flow.The integration of the parameter calibration and data filtering steps,reducing the user access to the cloud database permissions settings,encryption and decryption through the storage of two-way operation for cloud storage to provide more security.
injected SQL;cloud storage;encryption algorithm;security management
TN929.1
A
1674-6236(2017)23-0182-04
2016-10-03稿件編號:201610004
蔡翔(1983—),男,安徽蚌埠人,碩士,工程師。研究方向:信息安全、滲透測試、無線安全。