收下这张小贴士,弥补那些年在HQL注入留下的坑 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

收下这张小贴士,弥补那些年在HQL注入留下的坑

申博_人物事迹 申博 155次浏览 未收录 0个评论

媒介

SQL注入是一种人人异常熟习的攻击方式,现在收集上有大批存在注入破绽的DBMS(如MySQL,Oracle,MSSQL等)。然则缺乏针对hibernate查询言语的相干资本,以期本文能给在渗入测试时能给列位多供应一条路。

HQL查询并不直接发送给数据库,而是由hibernate引擎对查询举行剖析并诠释,然后将其转换为SQL。为何这个细节主要呢?因为有两种毛病消息来源,一种来自hibernate引擎,一种来自数据库。
假如在HQL语法中发现了注入点,我们是不能直接运用日常平凡的SQL运用要领来应对的,HQL有属于它自己特定的语法,相对SQL而言限定更多一些,比如说HQL就没有要领能够直接查询未映照的表单,没有团结,没有函数来建立简朴耽误,没有体系函数。幸亏俄罗斯老毛子在几年前寻找到一个要领,将HQL context转义成SQL context,进而完成直接与数据库通讯。不知道出于什么原因,国内这方面的相干文章很少,之前老毛子用得超爽。接下来进入正题,另外列位须要注重,差别的数据库转义要领不尽相同,以下案例运用的是MySQL数据库。

开胃菜:HQL转义

最初的要求/相应信息(注重POST body中的GWT花样)
收下这张小贴士,弥补那些年在HQL注入留下的坑在参数背面加上单引号,在返回的相应信息中能够看到服务器抛出一个毛病
收下这张小贴士,弥补那些年在HQL注入留下的坑像是竖线(‘|’)、反斜杠(‘\’)这类特别符号会打乱GWT构造,我们得对这些数据举行编码。GWT花样对特别字符的处置惩罚:

| => !
\ => \

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

数据说话:关于软件供应链的真相

开源组件可以帮助开发人员更快地进行创新,但有时也需要付出高昂的代价。 企业环境(以及商业软件公司)中的开发人员已经意识到,为了快速提供产品功能,没有比利用一些代码重新构建属于自身的软件更方便快捷的方法了。因此,他们开始越

Payload Result
orderInGroup’ error (EX)
‘orderInGroup’ ok (OK)
‘orderInGroup’!!’x error (EX)
‘orderInGroup’!!’x’ ok (OK)
‘orderInGroup’!!’x’!!” ok (OK)
‘orderInGroup’!!str(46)!!” ok (OK)
‘orderInGroup’!!substr(‘x’,1,1)!!” ok (OK)

在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胜利实行
收下这张小贴士,弥补那些年在HQL注入留下的坑吃完字符串转义这口开胃菜以后,胃口无妨翻开一些,从数据库中检索信息

正餐:布尔型盲注

我们这个案例中的注入点在'order by'查询部份,因为运用没法显现查询的数据,这时候我们就运用布尔型盲注的思绪,MySQL函数updatexml就是一个异常不错的挑选,假如它的第二个参数不是有用的XPath查询字符串就会报错,假如XPath查询是准确的就不返回值。

updatexml(xml_target,xpath_expr,new_xml)

主要的是,只会在盘算完第二个参数后才会抛出毛病(个中包括有if子句),也就是依据if推断子句,运用肯定是不是返回毛病。和SQL下的布尔值盲注思绪一样,以后经由过程逐一字符的提取数据即可。
收下这张小贴士,弥补那些年在HQL注入留下的坑获取到的完全值:
收下这张小贴士,弥补那些年在HQL注入留下的坑末了解码获得[…]PROD_SELF[…]
强烈推荐ORM2Pwn: Exploiting injections in Hibernate ORM

原文地点: https://www.4hou.com/technology/19407.html


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明收下这张小贴士,弥补那些年在HQL注入留下的坑
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址