加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2019-08-02 23:32:18 所属栏目:编程 来源:群马高桥启介
导读:媒介 SQL注入是一种各人很是认识的进攻方法,今朝收集上有大量存在注入裂痕的DBMS(如MySQL,Oracle,MSSQL等)。可是穷乏针对hibernate查询说话的相干资源,以期本文能给在渗出测试时能给列位多提供一条路。 HQL查询并不直接发送给数据库,而是由hibernate

媒介

SQL注入是一种各人很是认识的进攻方法,今朝收集上有大量存在注入裂痕的DBMS(如MySQL,Oracle,MSSQL等)。可是穷乏针对hibernate查询说话的相干资源,以期本文能给在渗出测试时能给列位多提供一条路。

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

HQL查询并不直接发送给数据库,而是由hibernate引擎对查询举办理会并表明,然后将其转换为SQL。为什么这个细节重要呢?由于有两种错误动静来历,一种来自hibernate引擎,一种来自数据库。

假如在HQL语法中发明白注入点,我们是不能直接行使平常的SQL操作要领来应对的,HQL有属于它本身特定的语法,相对SQL而言限定更多一些,好比说HQL就没有要领可以直接查询未映射的表单,没有连系,没有函数来建设简朴耽误,没有体系函数。亏得俄罗斯措施员在几年前探求到一个要领,将HQL context转义成SQL context,进而实现直接与数据库通讯。接下来进入正题,另外列位必要留意,差异的数据库转义要领不尽沟通,以下案例行使的是MySQL数据库。

开胃菜:HQL转义

最初的哀求/相应信息(留意POST body中的GWT名目)

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

在参数后头加上单引号,在返回的相应信息中可以看随处事器抛出一个错误。

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

像是竖线(‘|’)、反斜杠(‘’)这类非凡标记会打乱GWT布局,我们得对这些数据举办编码。GWT名目对非凡字符的处理赏罚:

  1. | => !  
  2.  =>  

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

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

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

将字符串'',由HQL context转换为MySQL context。在HQL查询上下文中,单引号会被附加另一个单引号来举办转义,反斜杠仍旧是泛泛的反斜杠。这里与MySQL全然差异,MySQL行使反斜杠来转义单引号,而不是另一个单引号。因此,当Hibernate框架理会到一个查询语句,恰恰底层行使的数据库又是MySQL的时辰,就变得异常风趣了:

Hibernate理会到的语句:

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

加上payload之后的MySQL:

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

以下截图表现了payload乐成执行

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

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

正餐:布尔型盲注

我们这个案例中的注入点在'order by'查询部门,因为应用无法表现查询的数据,这时我们就行使布尔型盲注的思绪,MySQL函数updatexml就是一个很是不错的选择,假如它的第二个参数不是有用的XPath查询字符串就会报错,假如XPath查询是正确的就不返回值。

  1. updatexml(xml_target,xpath_expr,new_xml) 

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

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

获取到的完备值:

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

最后解码获得[…]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进修

【编辑保举】

  1. MySQL亿级数据数据库优化方案测试-银行买卖营业流水记录的查询
  2. 条理查询SQL机能妨碍不绝?给你份靠得住的避坑指南!
  3. 彻底干掉恶心的SQL注入裂痕, 一扫而空!
  4. 怎样停止回表查询?什么是索引包围? | 1分钟MySQL优化系列
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读