基于注入式SQL的云端存储安全研究
2018-01-06蔡翔宋贤睿顾广宇张淑娟
蔡翔,宋贤睿,顾广宇,张淑娟
(国网安徽省电力公司电力科学研究院安徽安庆230601)
基于注入式SQL的云端存储安全研究
蔡翔,宋贤睿,顾广宇,张淑娟
(国网安徽省电力公司电力科学研究院安徽安庆230601)
针对云端存储面对的注入式SQL攻击的问题,本研究在深入分析注入式SQL攻击的基础上,阐述了报错注入式和URL编码转换的攻击原理。通过构建对称参数明文加解密的方式,分别利用NnCcVvC编码和指定key值的形式对存储进行加密,结合加密逆向流程完成对云端存储字符串的PHP解密。整合了参数校验和数据过滤的操作步骤,降低了用户访问云端数据库的权限设置,通过存储的加解密双向操作为云端存储提供更安全的保障。
注入式SQL;云端存储;加密算法;安全管理
伴随着云计算技术的飞速发展,云端数据库信息存储安全被认为是信息安全保证的重要屏障,但云端数据库的安全性一直在学术界引起了广泛的关注[1-3]。传统的云存储防御和检测方法存在较高的安全隐患,数据库攻击者可通过重言式[4]和延时盲注[5]的方式对云端数据库的信息进行窃取。与此同时,数据信息的管理者通过检测字符串表达式的形式对云端存储漏洞进行排查[6],并结合关键词ASCII编码将不合法参数在存储过程中进行进制替换[7],从而检测了数据库攻击者的非法访问权限。针对云端存储的安全性问题,本研究在梳理注入式SQL攻击方式的基础上,详细剖析了报错注入和编码转换的攻击方式,并介绍了应对注入式SQL攻击的程序调用防御方法。在融合众多防御方法优点的理论支撑下,给出了一种对称参数明文加解密的云端存储安全保障编码方案,该方案利用参数字符串加密的信息进行云端存储的加密,同时,依据逆向加密的流程给出了云端数据库抽取数据的参数解密,双向的数据信息加解密为云端存储提供了更高的安全保障。
1 注入式SQL攻击
1.1 基本原理
注入式SQL通过构建非法SQL语句来攻击达到云端数据库的目的[8]。在云端数据库未设置检验和安全过滤时,信息安全攻击方通过搭建非法字符串的形式对云端资源进行抽取,并结合设定程序有目的的攻击用户数据信息[9]。本文以云端数据存储为研究对象,详细阐述报错注入[10]和编码转换[11]两种注入式SQL攻击。
1)报错注入
利用EXP函数对云端数据库进行程序调用,攻击者有目的地对存储数据实现溢出效应,在众多数据中抽取对攻击者有利的数据信息,最终使得云端数据库出现报错信息提示。即页面显示结果如下:
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函数的报错注入错误信息提示可见,’User name@server address’给出了云端存储的用户名和服务器地址的关键信息。
2)编码转换
与报错注入的形式不同,编码转换利用URL地址解码的方式对云端存储数据信息集合调用进行攻击。即网址的显示结果如下:
http://serveraddress/clouddatabase/main/search.php tag=favorableinformation%15%122%2c+2%4e2+all+select+user+%3ddatabase%+%15%3440%+4c%36%37%4d
1.2 防御方法
1)用户输入检测
用户输入检测分别注入字符检测和输入参数检测两种方法[12]。其中,注入字符检测利用正则方式和更换方式将注入式SQL字符串关键词进行替换;输入参数检测是利用数据信息的整数参数进行强制性的转换为整型,其他类型的参数也同样进行使用前的转化,整体上避免了整型参数后添加SQL语句。
2)数据存储的加密
通过对重要数据信息进行针对性的加密存储以降低信息外泄的损失,例如银行卡号、用户帐号和身份验证信息等在云端存储数据库中以加密式的非明文形式进行存储,有效的降低了数据库攻击者在窃取重要信息后的字符串识别能力。
3)参数优化查询
参数优化查询则是依据用户输入数据信息后在云端存储中设定的参数遍历查询[13],在受到数据库攻击时,攻击者并不能依据参数的设置去破解分析参数字符串的真正含义,通过这种方式的构建避免了数据库攻击者利用SQL语句调用执行和破译数据信息,进而确保了云端数据库的安全性。
4)服务器权限设置
通过终端服务器和云端数据库服务器的配置设定完成对服务器权限设置,在权限设置过程中依据用户存储信息重要性权限的最小值进行设置[14],即终端管理的Root权限分配给对应的数据存储用户,同时,在云端数据库存储的编码权限进行集中管理,数据库的访问需要通过复杂的密码进行验证。
2 对称参数明文加解密
2.1 存储加密
对于云端数据库在存储数据信息时,通过对称参数明文加密和重构的方式利用指定编码(NnCcVvC)对数据存储前进行加密编码[15],参数编码和重构方式如图1所示。
图1 参数编码和重构
在数据信息在云端存储之前都进行如图1的数据字符串的对称参数加密重组,其中,包含两个C重构无字符串的0校验,n重构和v重构段序位置上的32 bit的校验编码和两个有字符串的0尾校验。具体的参数编码如表1所示。
表1 参数编码字符串
由表1可见,字符串与非字符串的编码值均匀的分布在数据信息重组中。由于云端存储库面对众多的用户上传数据信息,则避免数据加密的校验值存在相同情况,本研究中增加了用户自定义n重构的校验编码1和v重构的校验编码2。为了利用校验编码在字符串对数据加密更方便的被编辑,采用数据复杂度的固定值求余的方式生成的以防止非法数据值输入对云端存储的窃取。
依据对称加密算法对指定key进行加密[16],其中key值可以根据不同的存储数据类型进行替换,本研究中利用的key值为j*%NH*。具体的云端存储数据加密流程如图2所示。
2.2 存储解密
针对云端存储数据在导出过程中的解密同样采用非整数的形式,这样可以避免整数后附加攻击性的注入式SQL语句并且防止了除用户外的权限ID访问云端数据库。具体的解密流程如下:
Step.1:利用对称参数加密逆向解密;
Step.2:解密后的数据字符串进行如图1所示的尾校验;
Step.3:将各校验编码和加密字符串校验编码进行对比,若校验编码相同则解密成功,若不相同则说明数据解密后的字符串为非法访问,即可判断访问来自于外部攻击,返回0校验。
数据解密实质上是对数据加密过程的逆操作,具体操作流程如图3所示。
图2 云端存储数据加密流程
图3 云端存储数据解密流程
3 实验结果
为验证本研究提出的针对注入式SQL的对称参数加密可靠性,实验利用合肥城市云数据中心开发了一个测试网站,该网站在RJS集成运行环境下,结合Javascript、PHP和html等语言进行源代码的编写。采用SQLMAP和SSQLInjection作为漏洞测试工具,使用上述对称参数明文加解密对云端存储进行漏洞测试,结果如下:
从结果中明显发现云端存储存在3种攻击方式:’1=1’,sleep和UNION。这3种攻击基本包含了注入式SQL的全部攻击方式。云端数据导出加载过程中使用逆向操作的解密测试结果如下:
使用不同测试工具对对称参数明文加解密前后对比结果如表2所示。
表2 对称参数明文加解密前后对比
本研究所用的对称参数明文加解密在注入式SQL防御方法的基础上进行了改进:通过构造不同的字符串校验编码位置来验证用户关键数据的存储安全性,同时也先前检验了云端数据库是否存在漏洞,相比单纯的对称加密算法更加可靠。并且整合了参数校验和数据过滤的操作步骤。在面对整型参数的字符串编码时,降低了用户访问云端数据库的权限设置。
4 结论
本研究针对传统的云端存储面对的注入式SQL攻击引发数据信息外泄的问题,深入阐述了报错注入和编码转换两种注入式SQL攻击原理并详细介绍了4种防御理论方法。在整理云端数据安全存储的基础上,提出了一种基于对称参数明文加解密方式的云端数据安全处理,利用指定编码(NnCcVvC)对数据存储前进行加密编码实现了对称参数明文加密和重构,并增加了用户自定义校验编码消除了攻击者来自同源数据库的非法数据值输入对云端存储的窃取。在云端存储数据向外导出过程中,利用对称参数加密逆向解密将各校验编码和加密字符串校验编码进行对比,实现了便利的逆操作。本研究对云端数据存储的安全性保障具有实践性意义。
[1]张玉清,王晓菲,刘雪峰,等.云计算环境安全综述[J].软件学报,2016,27(6):1328-1348.
[2]冯朝胜,秦志光,袁丁,等.云计算环境下访问控制关键技术[J].电子学报,2015,43(2):312-319.
[3]丁滟,王怀民,史佩昌,等.可信云服务[J].计算机学报,2015,38(1):133-149.
[4]李鑫,张维纬,隋子畅,等.新型SQL注入及其防御技术研究与分析[J].信息网络安全,2016(2):66-73.
[5]宋超臣,黄俊强,吴琼,等.SQL注入绕过技术与防御机制研究[J].信息安全与通信保密,2015(2):110-112.
[6]王鹏超,杜慧敏,曹广界,等.基于布隆过滤器的精确匹配算法设计与实现[J].计算机科学,2015,42(1):112-118.
[7]黄步根,伏娟.MS-DOC文件文本提取研究[J].计算机工程与科学,2014,36(8):1505-1511.
[8]唐磊.浅析SQL注入式攻击与防范[J].现代计算机(专业版),2012(1):49-52.
[9]史姣丽,黄传河,王晶,等.云存储下多用户协同访问控制方案[J].通信学报,2016,37(1):88-99.
[10]林世鑫.基于SQL注入的Web数据安全防范与优化[J].电脑知识与技术,2014(10):2184-2187.
[11]宋燕燕,周晓梅,周灵.面向教学的多媒体文件识别系统研究与应用[J].电子世界,2016(16):78-89.
[12]齐林,王静云,蔡凌云,等.SQL注入攻击检测与防御研究[J].河北科技大学学报,2012,33(6):530-533.
[13]谷伟,陈莲君.基于MySql的查询优化技术研究[J].微型电脑应用,2013,30(7):48-50.
[14]郑豪,董小社,王恩东,等.VM内部隔离驱动程序的可靠性架构[J].软件学报,2014(10):2235-2250.
[15]蒲保兴,赵乘麟.基于网络编码的组播率与编码节点数的平衡[J].计算机应用,2015,35(4):929-933.
[16]李湘锋,赵有健,全成斌.对称密钥加密算法在IPsec协议中的应用[J].电子测量与仪器学报,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—),男,安徽蚌埠人,硕士,工程师。研究方向:信息安全、渗透测试、无线安全。