Druid 未授权访问漏洞

  • A+
所属分类:安全文章

Druid未授权(弱口令)的一些利用方式

Druid简介

1.Druid是阿里巴巴数据库事业部出品,为监控而生的数据库连接池.
2.Druid提供的监控功能,监控SQL的执行时间、监控Web URI的请求、Session监控.

Druid可能存在的一些问题

首先Druid是不存在什么漏洞的。
当开发者配置不当时就可能造成未授权访问下面给出常见Druid未授权访问路径
/druid/websession.html
/system/druid/websession.html
/webpage/system/druid/websession.html(jeecg)
当遇到需要登录的Druid是可能存在弱口下面给出Druid常见登录口路径。
/druid/login.html
/system/druid/login.html
/webpage/system/druid/login.html
以上路径可能不止存在于根目录,遇到过在二级目录下的,我们扫路径时可能就关注根目录这个点可以注意一下

Druid的一些利用方式

通过泄露的Session登录后台

Druid 未授权访问漏洞

直接在/druid/websession.html页面ctrl+a复制整个页面内容到EmEditor

Druid 未授权访问漏洞

删除红框部分,点击制表符

Druid 未授权访问漏洞

这样就可以直接复制了,也可以通过其他方式处理,个人比较喜欢这个方式

Druid 未授权访问漏洞

然后再到URI监控处找一条看起来像登录后台才能访问的路径(可用home等关键词快速定位)

Druid 未授权访问漏洞

Druid 未授权访问漏洞

此处设置爆破,将刚才得到的Session值填入,因为此处的session值存在一些特殊符号需要关闭burp默认的url编码

Druid 未授权访问漏洞

200即为有效session,用改cookie的插件改成有效的就能进入后台测试

Druid 未授权访问漏洞

通过URI监控测试未授权越权

由于有的Druid可能Session监控处没有东西,可以通过URI监控测试未授权越权

Druid 未授权访问漏洞

具体案例现在手上没有,之前众测挖到过通过session爆破,有效的只是一个普通账号,回过来看URI监控找到了任意用户密码重置,越权查看任意用户信息,越权添加管理员等.


Druid未授权访问利用


Druid简介

druid是阿里研发的一款数据库连接池,其开发语言为java,druid集合了c3p0、dbcp、proxool等连接池的优点,还加入了日志监控、session监控等数据监控功能,使用Druid能有效的监控DB池连接和SQL的执行情况。


更多信息可参考官方GitHub项目:https://github.com/alibaba/druid


druid虽高效好用,但当开发者配置不当时就可能造成未授权访问,攻击者可利用泄露的Session登录后台


Druid未授权访问路径

怎么探寻Druid未授权访问呢?可以直接拼接以下路径进行访问,如果页面存在,即为Druid未授权访问


html:

ip/druid/index.html ##Druid Index

ip/druid/sql.html ##Druid sql监控页面

ip/druid/weburi.html ##Druid Web URI监控页面

ip/druid/websession.html ##Druid Web Session监控页面


json:

ip/druid/weburi.json ##Druid Web URI json

ip/druid/websession.json ##Druid Web Session json


Druid 登录接口:

ip/druid/login.html ##Druid登录认证页面


当一级目录不存在时,可尝试拼接二级目录进行访问


也可利用谷歌语法或目录扫描工具进行探测:


site:xx.com intitle:Druid Stat Index


提取session

访问ip/druid/weburi.html看到以下页面则证明漏洞可被利用,如果url和session页面都为空,则说明这两项druid并不管理


Druid 未授权访问漏洞


当/druid/websession.html页面存在数据时,我们可利用该页面的session伪造登录,点击最后访问时间,然后复制一条离现在时间最为接近的session进行伪造登录;之所以要点击最后访问时间排序session,是因为此处记录的Session并非全部都是用户在线时的session,当用户退出系统时,session虽然还存在,但已失效,无法再利用。


也可利用py提取session然后结合burp的Intruder模块批量遍历高权限用户,session地址可参考上面给出的链接


如果我们并不清楚后台的位置,我们可再把脚本改一下,利用url监控处为我们提供清晰的站点目录架构


ok,得到后台地址,接下来我们访问一下


重新刷新一下页面,然后开启burp进行抓包,抓包过程中发现站点cookie值存在session字段,点击最后访问时间排序一下session,随后复制session过来访问一下


毫无意外,成功进去,但是权限不高,看来还是得开启神奇的Intruder模块,爆破结果如下


根据返回包信息看哪条session权限高就用它伪造登录


注:除session伪造外,url监控和sql监控也能为我们开拓攻击的思路,当我们遇到一个注入且不清楚其语法结构时,查看sql监控处有可能会得到,此外,url监控处也为我们提供了较为清晰的站点目录架构


Druid 未授权访问漏洞


session伪造进后台

之后就是替换cookie值伪造登录了,f12改一下session值即可


结语

druid作为数据源的一名后起之秀,凭借其出色的性能,渐渐被大家使用。当然还有他的监控页面也有这非常大的作用。但是监控页面往往包含了很多隐私的数据信息,所以需要将其保密,可以为监控页面添加一个用户名和密码,确保其安全性


Druid 开启权限校验


Github: https://github.com/alibaba/druid


Druid 的验证方式官网提供了一种根据ip来做访问限制的方式,即allow和deny, 详询 https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE




还有一种方式,即用户名和密码,但是此方法官网没有提及,这个方式也是我看了源码后才知道的,现在分享给大家

首先从web.xml中的servlet出发

 <servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>


综合分析在web.xml中配置servlet的初始化参数loginUsername和loginPassword即可

在访问druid的监控页面,会自动转到login.html


整改思路


Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。

这个StatViewServlet的用途包括:

提供监控信息展示的html页面

提供监控信息的JSON API



配置web.xml

StatViewServlet是一个标准的javax.servlet.http.HttpServlet,需要配置在你web应用中的WEB-INF/web.xml中。

  <servlet>

      <servlet-name>DruidStatView</servlet-name>      <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>

  </servlet>

  <servlet-mapping>

      <servlet-name>DruidStatView</servlet-name>

      <url-pattern>/druid/*</url-pattern>

  </servlet-mapping>

根据配置中的url-pattern来访问内置监控页面,如果是上面的配置,内置监控页面的首页是/druid/index.html

例如:https://zhxx.chinacoal-safety.gov.cn/mj/druid/index.html

配置监控页面访问密码

需要配置Servlet的 loginUsername 和 loginPassword这两个初始参数。

示例如下:

<!-- 配置 Druid 监控信息显示页面 -->  

<servlet>  

    <servlet-name>DruidStatView</servlet-name>  

    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>  

    <init-param>  

<!-- 允许清空统计数据 -->  

<param-name>resetEnable</param-name>  

<param-value>true</param-value>  

    </init-param>  

    <init-param>  

<!-- 用户名 -->  

<param-name>loginUsername</param-name>  

<param-value>druid</param-value>  

    </init-param>  

    <init-param>  

<!-- 密码 -->  

<param-name>loginPassword</param-name>  

<param-value>druid</param-value>  

    </init-param>  

</servlet>  

<servlet-mapping>  

    <servlet-name>DruidStatView</servlet-name>  

    <url-pattern>/druid/*</url-pattern>  

</servlet-mapping>  


整改效果


Druid 未授权访问漏洞


本文始发于微信公众号(利刃信安):Druid 未授权访问漏洞

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: