Druid未授权访问解决

news2024/11/15 10:32:18

Druid未授权访问原因分析

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

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

具体示例如图所示:

解决办法

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.10.119.115");  //ip白名单(没有配置或者为空,则允许所有访问)
        initParameters.put("loginUsername", "admin");  //++监控页面登录用户名
        initParameters.put("loginPassword", "admin");  //++监控页面登录用户密码
        initParameters.put("deny", ""); //ip黑名单
        //如果某个ip同时存在,deny优先于allow
        servletRegistrationBean.setInitParameters(initParameters);
        return servletRegistrationBean;
    }

也可以在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-不启动,对于某些低版本druid-spring-boot-starter.jar默认是true
spring.datasource.druid.stat-view-servlet.enabled=false

是否启用StatViewServlet(监控页面),true-启动,默认false-不启动,对于某些低版本druid-spring-boot-starter.jar默认是true

例如:1.1.2版本

1.1.22版本

参考其他:

【漏洞预警】druid未授权访问漏洞
漏洞级别:高危
漏洞类型:逻辑漏洞

漏洞讲解:druid没有设置授权访问,通过/druid/index.html进入到druid监控页面后打开sessin监控,里面是监控的所有sessin,只要配置url监控里面的地址,判断session是否失效,拿到没有失效的sessin,通过浏览器cookie替换器,替换sessin,即可登录后台

1.检查 POM 清单中是否引用 Druid 组件:
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>
		<version>${druid-version}</version>
	</dependency>

<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.24</version>
</dependency>

2.检查application配置文件中是否开启Druid监控:
spring:
  datasource:
    druid:
      stat-view-servlet:
        # 是否启用StatViewServlet(监控页面),true-启动,默认false-不启动
        enabled: true
 或
spring.datasource.druid.stat-view-servlet.enabled=true


修复方法:

方式一:关闭druid监控
【springboot application.yml配置】
spring:
  datasource:
    druid:
      stat-view-servlet:
        # 是否启用StatViewServlet(监控页面),默认true-启动,false-不启动
        enabled: false

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

方式二:配置内网白名单与账号密码

spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.login-username=自定义用户名
spring.datasource.druid.stat-view-servlet.login-password=强口令
spring.datasource.druid.stat-view-servlet.allow=127.0.0.1 #禁止暴露公网

spring:
  datasource:
    druid:
      stat-view-servlet:
        # 是否启用StatViewServlet(监控页面),默认true-启动,false-不启动
        enabled: false
        login-username: 自定义用户名
        login-password: 强口令
allow: 127.0.0.1 #禁止暴露公网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物联网(IoT)支持的小型水处理厂实时硬件在环(HIL)仿真

这篇论文的标题是《Real-Time Hardware-In-The-Loop Simulation of IoT-Enabled Mini Water Treatment Plant》&#xff0c;作者是 Mohamad Taib Miskon 等人&#xff0c;发表在 2024 年 IEEE 自动控制与智能系统国际会议&#xff08;I2CACIS&#xff09;上。以下是该论文的主要…

搭建 xxl-job 调度中心

文章目录 1、初始化“调度数据库”2、修改“调度中心”配置3、打包运行”调度中心“ 1、初始化“调度数据库” 请下载项目源码并解压&#xff0c;获取 “调度数据库初始化SQL脚本” 并执行即可。 “调度数据库初始化SQL脚本” 位置为&#xff1a;/xxl-job/doc/db/tables_xxl_j…

微服务日常总结

1.当我们在开发中&#xff0c;需要连接多个库时&#xff0c;可以在yml中进行配置。 当在查询的时候&#xff0c;跨库时&#xff0c;需要通过DS 注解来指定&#xff0c;需要yml配置需要保持一致。 2. 当我们想把数据存入到clob类型中&#xff0c;需要再字段 的占位符后面加上j…

鸢尾花书实践和知识记录[数学要素3-1万物皆数]

章节框图 文章目录 本章用到的函数使用math库来打印出一些常用的值判断奇数偶数两数加减产生序列矩阵向量的表示&#xff1a;取数组矩阵元素的方法streamlit的绘图矩阵的一般类型构造二维矩阵矩阵的加和运算 本章用到的函数 复数和自然数 使用math库来打印出一些常用的值 i…

多表查询_关联查询

inner join:通常关联项on后面的是主外键&#xff0c;两个表都有的才显示 left join:左连&#xff0c;select * from S left join B on s.字段 B.字段&#xff0c;一定会将左边表的数据全部查询出来 right join:select * from S right join B on s.字段 B.字段一定会将右边表的…

Unity面向对象补全计划 之 List<T>与class(非基础)

C# & Unity 面向对象补全计划 泛型-CSDN博客 关于List&#xff0c;其本质就是C#封装好的一个数组&#xff0c;是一个很好用的轮子&#xff0c;所以并不需要什么特别说明 问题描述 假设我们有一个表示学生的类 Student&#xff0c;每个学生有姓名和年龄两个属性。我们需要创…

Git学习尚硅谷(002 git常用命令)

尚硅谷Git入门到精通全套教程&#xff08;涵盖GitHub\Gitee码云\GitLab&#xff09; 总时长 4:52:00 共45P 此文章包含第8p-第p15的内容 文章目录 git常用命令设置用户签名初始化本地库查看本地库状态添加暂存区提交本地库日志查看修改文件版本穿梭 git常用命令 设置用户签名…

视频集中存储智能边缘计算网关软硬一体机智能边缘计算网关应用场景

在信息化飞速发展的今天&#xff0c;数据处理的速度和效率直接影响到各行各业的运作和发展。传统的云计算模式虽然强大&#xff0c;但在面对实时性和带宽要求越来越高的应用场景时&#xff0c;往往显得力不从心。此时&#xff0c;智能边缘计算网关的出现&#xff0c;为我们带来…

源代码怎么加密防泄漏?9种方法教会你

想做源代码加密防止泄漏&#xff0c;首先要了解程序员可以通过哪些方式将源代码传输出去&#xff01; 程序员泄密的常见方式 物理方法&#xff1a; — 网线直连&#xff0c;即把网线从墙上插头拔下来&#xff0c;然后和一个非受控电脑直连; — winPE启动&#xff0c;通过光盘…

pikachu文件包含漏洞靶场攻略

1.File inclusion(local)&#xff08;本地文件包含&#xff09; 步骤一&#xff1a;选择一个球员提交 步骤二&#xff1a;filename后面输入../../../../shw.php访问php文件 2.File Inclusion(remote)&#xff08;远程文件包含&#xff09; 步骤一&#xff1a;修改配置 远程包…

网吧业务安全对抗(有源码)

网吧业务竞争激烈&#xff0c;网吧都会有以下系统软件。 无盘: 无盘是指没有硬盘。好处是统一维护管理和节约成本。本人研究无盘好几年&#xff0c;后面会专门发帖介绍。 计费: 是指收费系统。 营销软件: 包括销售饮品、‌零食和向客户发送电子邮件营销和短信营销等。产品如…

银行资本种类

一、账面资本&#xff08;会计资本&#xff09; 账面资本又称为会计资本&#xff0c;是指商业银行持股人的永久性资本投入&#xff0c;即出资人在商业银行资产中享有的经济利益&#xff0c;其金额等于资产减去负债后的余额&#xff0c;包括实收资本或普通股、资本公积、盈余公…

【C++第十六章】多态

【C第十六章】多态 定义&#x1f9d0; 多态通俗来说&#xff0c;就是多种形态&#xff0c;我们去完成某个行为时&#xff0c;不同对象完成时会产生出不同的状态。比如游乐园中&#xff0c;1.2米以上买票就需要买成人票&#xff0c;1.2米以下就可以买儿童票。 多态是在不同继承…

Spring之整合Mybatis底层源码解析

整合核心思路 由很多框架都需要和Spring进行整合&#xff0c;而整合的核心思想就是把其他框架所产生的对象放到Spring容器中&#xff0c;让其成为Bean。 ​ 比如Mybatis&#xff0c;Mybatis框架可以单独使用&#xff0c;而单独使用Mybatis框架就需要用到Mybatis所提供的一些类…

ctfshow之文件包含(web78~web86)

web78 if(isset($_GET[file])){$file $_GET[file];include($file); }else{highlight_file(__FILE__); } 解法一&#xff1a;data伪协议 ?filedata://text/plain,<?php system("tac flag.php"); 解法二&#xff1a;php:filter伪协议 ?filepHp://FilTer/conver…

数理天地杂志数理天地杂志社数理天地编辑部2024年第12期目录

基础精讲 “瓜豆模型”与动点问题探析 明倩妤; 2-3 二次函数参数取值范围常见题型分析 邹纯; 4-5 基于数形结合思想的初中数学解题实践——以初中函数问题为例 李玉平; 6-7 旋转思想在构造全等三角形中的渗透 赵兴燕; 8-9 初中数学“一元一次方程”试题设计…

作业0903

1.封装栈 #include <iostream>using namespace std;class myStack { private:int size; // 大小int capacity;int *ptr;int top; // 栈顶下标 public:// 无参构造函数myStack():size(0), top(-1), capacity(10) {ptr new int[capacity];}// 有参构造函数myStack(in…

【数据结构】你真的了解栈和队列吗?

文章目录 1. 栈1.1 概念与结构1.2 栈的实现 2. 队列2.1 概念与结构2.2 队列的实现 3. 栈和队列的算法题3.1 有效的括号3.2 用队列实现栈3.3用栈实现队列3.4 设计循环队列 4. 结语 1. 栈 1.1 概念与结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插…

.hackme靶机通关攻略

第一步查找ip 通过御剑扫描到IP进入尝试 成功找到靶场 步骤二来到这个靶场注册登录 进来点一下提交出来书名 只有一个框框那就来试试sql注入 1’ and 12 -- 然后查看数据库 -1 union select database(),2,3 # 查看数据库表名 -1 union select group_concat(table_name),2…