Druid未授权访问漏洞
【推荐学习】暗月渗透测试培训 十多年渗透经验,体系化培训渗透测试 、高效学习渗透测试,欢迎添加微信好友aptimeok 咨询。
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来做访问限制的方式,即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
配置监控页面访问密码
需要配置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后台弱口令,可获取系统的运行状态,系统的会话情况。
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

复测情况
已修复
测试人员
南风向晚
原创文章,作者:mOon,如若转载,请注明出处:https://www.moonsec.com/4101.html