spring boot actuator 未授权访问(env泄露redis密码)

Actuator

Actuator是Spring Boot提供的服务监控和管理中间件,默认配置会出现接口未授权访问,部分接口会泄露网站流量信息和内存信息等,使用Jolokia库特性甚至可以远程执行任意代码,获取服务器权限。

/dump - 显示线程转储(包括堆栈跟踪)
/autoconfig - 显示自动配置报告
/configprops - 显示配置属性
/trace - 显示最后几条HTTP消息(可能包含会话标识符)
/logfile - 输出日志文件的内容
/shutdown - 关闭应用程序
/info - 显示应用信息
/metrics - 显示当前应用的’指标’信息
/health - 显示应用程序的健康指标
/beans - 显示Spring Beans的完整列表
/mappings - 显示所有MVC控制器映射
/env - 提供对配置环境的访问
/restart - 重新启动应用程序

渗透过程

访问浏览器访问actuator
在这里插入图片描述
访问env获取到敏感信息redis服务器地址以及口令
在这里插入图片描述
尝试连接redis服务服务器127.0.0.1:30008,端口拒绝访问,goby扫描redis真实端口31626
在这里插入图片描述
在这里插入图片描述
使用工具Another Redis Desktop Manager连接redis服务器,如图连接成功
在这里插入图片描述
在这里插入图片描述

漏洞风险

当 Spring Boot 应用程序运行时,它会自动将多个端点注册到路由进程中。而由于对这些端点的错误配置,就有可能导致一些系统信息泄露、XXE、甚至是 RCE 等安全问题。

修复建议

引入spring-boot-starter-security依赖,在application.properties中指定actuator的端口以及开启security功能,配置访问权限验证,这时再访问actuator功能时就会弹出登录窗口,需要输入账号密码验证后才允许访问。

<think>嗯,用户想知道如何在Spring Boot中设置通用的active profile为redis。首先,我需要回忆一下Spring Boot的配置机制。记得Spring Boot使用profile来区分不同环境的配置,比如开发、测试、生产环境。每个profile可以有自己的配置文件,命名格式是application-{profile}.properties或yml。 用户提到的是激活redis这个profile,可能需要让应用在启动时默认使用redis配置。通常激活profile的方法有几种,比如在application.properties里设置spring.profiles.active,或者通过环境变量、命令行参数。 但是用户想要的是通用配置,也就是无论怎么启动应用,都默认激活redis profile。这时候应该在主配置文件里设置spring.profiles.active=redis。这样每次启动时都会自动加载application-redis.properties或yml中的配置。比如在application.properties中添加一行:spring.profiles.active=redis。或者在application.yml中写成: spring: profiles: active: redis 不过,用户可能有不同的环境,比如测试和生产,这时候可能需要更灵活的方法。比如使用外部配置覆盖。但根据用户的问题,他们希望通用配置,也就是默认激活redis,所以主配置文件里的设置应该足够了。 另外,记得引用中的内容,比如引用[1]提到Spring Boot会自动加载默认配置文件,而引用[2]讨论了如何覆写配置。所以如果用户需要覆盖默认的active profile,可以通过命令行参数,如--spring.profiles.active=redis,但这可能不是他们需要的通用方法。通用方法应该是在配置文件中设置,而不是每次启动都指定。 还有,用户可能已经创建了application-redis.properties文件,里面配置了Redis相关的属性,比如连接信息。激活redis profile后,这些配置就会生效。比如: # application-redis.properties spring.redis.host=localhost spring.redis.port=6379 这样,当redis profile激活时,这些Redis配置会被加载。 总结步骤应该是:1. 在主配置文件中设置active profile为redis;2. 确保对应的redis配置文件存在;3. 如果需要外部覆盖,可以通过命令行参数,但通用配置是前者。同时,可能需要检查代码中的配置是否正确引用了这些属性,比如使用@Profile注解或者条件装配。 另外,用户的问题可能涉及到如何正确配置多个profile,或者如何测试是否生效。比如启动应用时,日志中会显示激活的profile,或者通过端点检查。比如访问/actuator/env可以看到当前激活的profile。 最后,生成相关问题的时候,需要考虑用户可能的后续疑问,比如如何在不同环境中切换profile,或者如何结合多个profile使用,以及如何处理profile冲突等。</think>在Spring Boot中设置通用的Active Profile为"redis"有以下几种方法: ### 方法一:主配置文件设置(推荐) 1. 在`application.properties`文件中添加: ```properties spring.profiles.active=redis ``` 2. 或者在`application.yml`文件中配置: ```yaml spring: profiles: active: redis ``` 这会强制应用始终加载名为`application-redis.properties/yml`的配置文件[^1][^2]。 ### 方法二:启动参数设置 通过命令行启动时指定: ```bash java -jar your-app.jar --spring.profiles.active=redis ``` ### 方法三:环境变量设置 设置系统环境变量: ```bash export SPRING_PROFILES_ACTIVE=redis ``` ### 验证配置 1. 创建对应的Profile配置文件: ```properties # application-redis.properties spring.redis.host=localhost spring.redis.port=6379 ``` 2. 启动日志中会出现激活的Profile信息: ``` INFO [main] o.s.b.a.ApplicationAvailabilityBean : Active profiles: redis ``` ### 注意事项 - 当存在多个Active Profile时,配置会按照以下优先级合并:命令行参数 > 系统环境变量 > 配置文件设置[^1] - Profile配置文件必须遵循`application-{profile}.properties/yml`命名规范 - 可以通过`@Profile("redis")`注解实现条件装配[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值