欢迎进Allbet欧博官网,Allbet欧博官网是欧博集团的官方网站。Allbet欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

首页科技正文

电银付app下载(dianyinzhifu.com):收下这张小贴士,填补那些年在HQL注入留下的坑

admin2020-12-2722数据库安全

前言

SQL注入是一种人人异常熟悉的攻击方式,现在网络上有大量存在注入破绽的DBMS(如MySQL,Oracle,MSSQL等)。然则缺少针对hibernate查询语言的相关资源,以期本文能给在渗透测试时能给列位多提供一条路。

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

开胃菜:HQL转义

最初的请求/响应信息(注重POST body中的GWT花样)
电银付app下载(dianyinzhifu.com):收下这张小贴士,填补那些年在HQL注入留下的坑 数据库安全 第1张在参数后面加上单引号,在返回的响应信息中可以看到服务器抛出一个错误
电银付app下载(dianyinzhifu.com):收下这张小贴士,填补那些年在HQL注入留下的坑 数据库安全 第2张像是竖线(‘|’)、反斜杠(‘\’)这类特殊符号会打乱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剖析到的语句:

,

Usdt第三方支付接口

菜包钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜包Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

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

加上payload之后的MySQL:

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

以下截图显示了payload乐成执行
电银付app下载(dianyinzhifu.com):收下这张小贴士,填补那些年在HQL注入留下的坑 数据库安全 第3张吃完字符串转义这口开胃菜之后,胃口不妨打开一些,从数据库中检索信息

正餐:布尔型盲注

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

updatexml(xml_target,xpath_expr,new_xml)

主要的是,只会在盘算完第二个参数后才会抛出错误(其中包罗有if子句),也就是凭据if判断子句,应用确定是否返回错误。和SQL下的布尔值盲注思绪一样,之后通过逐个字符的提取数据即可。
电银付app下载(dianyinzhifu.com):收下这张小贴士,填补那些年在HQL注入留下的坑 数据库安全 第4张获取到的完整值:
电银付app下载(dianyinzhifu.com):收下这张小贴士,填补那些年在HQL注入留下的坑 数据库安全 第5张最后解码获得[...]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学习


网友评论

3条评论
  • 2020-12-27 00:23:08

    欧博开户www.allbetgame.us欢迎进入欧博开户平台(Allbet Game),欧博开户平台开放欧博会员开户、欧博代理开户、欧博电脑客户端下载、欧博手机版下载等业务。路过打酱油,不走了

  • 2021-01-04 00:03:29

    www.326681.com采用以太坊区块链高度哈希值作为统计数据,联博以太坊统计数据开源、公平、无任何作弊可能性。联博统计免费提供API接口,支持多语言接入。哈哈哈,大家都在呀

最新评论