全部
常见问题
产品动态
精选推荐

Druid未授权访问解决

管理 管理 编辑 删除

前言

相信很多朋友在服务器安全扫描的时候,遇到过Druid未授权访问低风险漏洞提示。本文先对Druid未授权访问漏洞进行介绍和分析,最后给出两种解决办法,供大家参考。

一、Druid未授权访问原因分析

漏洞说明:Druid由阿里巴巴数据库出品,为监控而生的数据库连接池,并且Druid可以提供监控,监控SQL的执行时间、监控Web URI的请求、Session监控等功能,使用广泛。

需要明确: Druid本身是不存在漏洞的,Druid未授权访问是因为开发者配置的不够全面,导致攻击者输入ip/druid/index.html即可直接即可登录到Druid监控界面,这就是所谓未授权,即可访问。

具体示例如图所示:

b4a3d202306061537483334.png

二、解决办法

1.添加登录用户名密码

未授权访问的常见原因:

(1)攻击者可以不输入账号密码即可访问管理页面

(2)或者是攻击者输入常见账号密码,比如账号:root,密码:123456等这种保密性很低的账号密码,即可访问管理页面。

以上这两种情况,都可以通过添加复杂的登录账号密码来解决。只要账号密码没有被掌握,可以很大程度避免未授权访问问题。

优点:
(1)可以继续使用Druid监控管理功能
(2)对用户使用习惯影响较小

缺点:
(1)为了尽可能降低风险,账号密码需要不定期更换,密码难度等级需要设定较高
(2)理论上来说仍然存在被攻击的可能性

具体解决方法(二选一):
(1)可以在druidConfig中配置:

@Bean
    public ServletRegistrationBean druidServlet() {
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
        servletRegistrationBean.setServlet(new StatViewServlet());
        servletRegistrationBean.addUrlMappings("/druid/*");
        Map<String, String> initParameters = new HashMap<>();
        initParameters.put("resetEnable", "false"); //禁用HTML页面上的“Rest All”功能
        initParameters.put("allow", "10.8.9.115");  //ip白名单(没有配置或者为空,则允许所有访问)
        initParameters.put("loginUsername", "admin");  //++监控页面登录用户名
        initParameters.put("loginPassword", "123.admin");  //++监控页面登录用户密码
        initParameters.put("deny", ""); //ip黑名单
        //如果某个ip同时存在,deny优先于allow
        servletRegistrationBean.setInitParameters(initParameters);
        return servletRegistrationBean;
    }

(2)也可以在web.xml中配置

<!-- 配置 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>

2.禁用Druid监控页功能

为了彻底避免未授权访问风险,如果不需要使用或者很少使用Druid的监控功能,可以尝试彻底禁用Druid监控页,这种做法比较简单粗暴,有利有弊。

优点:
(1)彻底避免未授权访问风险
(2)配置起来比较更加简单,禁用后无需再关心密码被破解问题

缺点:
(1)彻底禁用后,自己也无法使用Druid监控页功能
(2)可能影响使用习惯,可能影响工作的开展,降低Druid管理的便利性

application.properties配置文件中添加一行代码即可:

#是否启用StatViewServlet(监控页面),默认true-启动,false-不启动
spring.datasource.druid.stat-view-servlet.enabled=false

总结

本文对Druid未授权访问漏洞进行了介绍和分析,并给出了两种常见的解决办法,可以按照自己的需求来选择解决办法。
个人建议: 如果用不到Druid监控页管理功能可以考虑彻底关掉,这样后期比较省心。希望对大家有用!

CRMEB-慕白寒窗雪 最后编辑于2023-06-06 15:40:03

快捷回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
回复从新到旧

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest==1? '取消推荐': '推荐'}}
{{item.floor}}#
{{item.user_info.title}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

作者 管理员 企业

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}   {{itemc.ip_address}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
回复
回复
1442
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

CRMEB-慕白寒窗雪 作者
社区运营专员---高冷のBoy | 呆萌のGirl

回答

1929

发布

1766

经验

43425

快速安全登录

使用微信扫码登录
{{item.label}} {{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
加精
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 开源下载 CRMEB官方论坛 帮助文档
返回顶部 返回顶部
CRMEB客服