起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 短期培训 > 编程语言 > 这些年数据库的安全怎么来保障

这些年数据库的安全怎么来保障

时间:2019-08-02 10:30:02来源:编程网 作者:IT培训网 已有: 名学员访问该课程

  快捷搜索:数据库

前言:重要的是,只会在计算完第二个参数后才会抛出错误(其中包含有if子句),也就是根据if判断子句,应用确定是否返回错误。和SQL下的布尔值盲注思路一样,之后通过逐个字符的提取数据即可

收下这张小贴士,填补那些年在HQL注入留下的坑,无论是哪种数据库,都有被攻陷的风险,那么如何防止攻击呢,怎么样才能做好安全措施呢?

前言

SQL注入是一种大家非常熟悉的攻击方式,目前网络上有大量存在注入漏洞的DBMS(如MySQL,Oracle,MSSQL等)。但是缺少针对hibernate查询语言的相关资源,以期本文能给在渗透测试时能给各位多提供一条路。

HQL查询并不直接发送给数据库,而是由hibernate引擎对查询进行解析并解释,然后将其转换为SQL。为什么这个细节重要呢?因为有两种错误消息来源,一种来自hibernate引擎,一种来自数据库。

如果在HQL语法中发现了注入点,我们是不能直接使用平时的SQL利用方法来应对的,HQL有属于它自己特定的语法,相对SQL而言限制更多一些,比如说HQL就没有方法可以直接查询未映射的表单,没有联合,没有函数来创建简单延迟,没有系统函数。好在俄罗斯老毛子在几年前寻找到一个方法,将HQL context转义成SQL context,进而实现直接与数据库通信。不知道出于什么原因,国内这方面的相关文章很少,之前老毛子用得超爽。接下来进入正题,此外各位需要注意,不同的数据库转义方法不尽相同,以下案例使用的是MySQL数据库。

开胃菜:HQL转义

最初的请求/响应信息(注意POST body中的GWT格式)

这些年数据库的安全怎么来保障_www.epx365.cn

在参数后面加上单引号,在返回的响应信息中可以看到服务器抛出一个错误

这些年数据库的安全怎么来保障_www.epx365.cn

像是竖线(‘|’)、反斜杠(‘\’)这类特殊符号会打乱GWT结构,我们得对这些数据进行编码。GWT格式对特殊字符的处理:

| => ! \ => \

在将HQL context进行转义之前,我们还需要对涉及到的数据库进行一些测试:

这些年数据库的安全怎么来保障_www.epx365.cn

在MySQL, MSSQL, Oracle等常用数据库中进行测试,最终选定的最后一条payload却只能在MySQL下执行,接下来我们就将HQL context进行转义。

将字符串\'',由HQL context转换为MySQL context。在HQL查询上下文中,单引号会被附加另一个单引号来进行转义,反斜杠依旧是平常的反斜杠。这里与MySQL全然不同,MySQL使用反斜杠来转义单引号,而不是另一个单引号。因此,当Hibernate框架解析到一个查询语句,刚好底层使用的数据库又是MySQL的时候,就变得十分有趣了:

Hibernate解析到的语句:

'orderInGroup'||'\''|| (select 1)) -- ' // as a string

加上payload之后的MySQL:

'orderInGroup'||'\''|| (select 1)) -- ' // string '\'', logical 'or', select query

以下截图显示了payload成功执行

这些年数据库的安全怎么来保障_www.epx365.cn

吃完字符串转义这口开胃菜之后,胃口不妨打开一些,从数据库中检索信息

正餐:布尔型盲注

我们这个案例中的注入点在'order by'查询部分,由于应用无法显示查询的数据,这时我们就使用布尔型盲注的思路,MySQL函数updatexml就是一个非常不错的选择,如果它的第二个参数不是有效的XPath查询字符串就会报错,如果XPath查询是正确的就不返回值。

updatexml(xml_target,xpath_expr,new_xml)

重要的是,只会在计算完第二个参数后才会抛出错误(其中包含有if子句),也就是根据if判断子句,应用确定是否返回错误。和SQL下的布尔值盲注思路一样,之后通过逐个字符的提取数据即可

这些年数据库的安全怎么来保障_www.epx365.cn

获取到的完整值:

这些年数据库的安全怎么来保障_www.epx365.cn

最后解码得到[…]PROD_SELF[…]

强烈推荐ORM2Pwn: Exploiting injections in Hibernate ORM

参考文献

Эксплуатация инъекций в Hibernate ORM

GWT RPC data format

SQL布尔型盲注思路分析

ORM2Pwn: Exploiting injections in Hibernate ORM

HQL Injection Exploitation in MySQL

Exploiting a HQL injection

HQL for pentesters Hibernate:深入HQL学习

文章出自:http://qh.itpxw.cn/peixun/software/201950935.html

文章标题:这些年数据库的安全怎么来保障



免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉

(责任编辑:IT培训网)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话:13783581536 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件: 网站域名:http://www.itpxw.cn 注册时间:2016-07-18 11:07 最后登录:2024-02-20 13:02
推荐内容