漏洞报告模板 -Druid未授权访问漏洞

admin 2022年4月23日12:37:09评论126 views字数 3324阅读11分4秒阅读模式

11.Druid未授权访问漏洞

漏洞名称

Druid未授权访问漏洞

漏洞地址

https://zhuanlan.zhihu.com/p/386709187

漏洞等级

中危

漏洞描述

Druid是阿里巴巴数据库事业部出品,为监控而生的数据库连接池。Druid提供的监控功能,监控SQL的执行时间、监控Web URI的请求、Session监控。当开发者配置不当时就可能造成未授权访问。

漏洞成因

如果网站无需登录,则可利用未授权访问漏洞,直接访问以下链接:

html:
/druid/index.html              #Druid Index
/druid/sql.html                #Druid sql监控页面
/druid/weburi.html            #Druid Web URI监控页面
/druid/websession.html        #Druid Web Session监控页面

json:
/druid/weburi.json            #Druid Web URI json
/druid/websession.json        #Druid Web Session json

Druid 登录接口:
/druid/login.html            #Druid登录认证页面

其他:
/system/druid/login.html
/webpage/system/druid/login.html
/druid/datasource.html
/druid/wall.html
/druid/webapp.html
/system/druid/websession.html
/webpage/system/druid/websession.html
/druid/spring.html
/druid/api.html

漏洞危害

通过泄露的Session登录后台。

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

修复方案

Druid 开启权限校验。

Druid 的验证方式官网提供了一种根据ip来做访问限制的方式,即allowdeny, 详询 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的初始化参数loginUsernameloginPassword即可

在访问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

配置监控页面访问密码

需要配置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未授权访问漏洞
image-20211225171247390

测试过程

应用系统存在Druid后台弱口令,可获取系统的运行状态,系统的会话情况。

http://0.0.0.0:8888/mobile/druid/sql.html
http://0.0.0.0:8888/mobile/druid/basic.json
http://0.0.0.0:8888/mobile/druid/webapp.html
http://0.0.0.0:8888/mobile/druid/login.html
http://0.0.0.0:8888/mobile/druid/websession.html
http://0.0.0.0:8888/mobile/druid/spring.html
http://0.0.0.0:8888/mobile/druid/index.html
http://0.0.0.0:8888/mobile/druid/api.html
http://0.0.0.0:8888/mobile/druid/wall.html
http://0.0.0.0:8888/mobile/druid/datasource.html
http://0.0.0.0:8888/mobile/druid/weburi.html
漏洞报告模板 -Druid未授权访问漏洞
image-20211225175249543

复测情况

已修复

测试人员

南风向晚

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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月23日12:37:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞报告模板 -Druid未授权访问漏洞http://cn-sec.com/archives/937808.html

发表评论

匿名网友 填写信息