springboot actuator未授权访问
原理:
未授权访问可以理解为需要授权才可以访问的页面由于错误的配置等其它原因,导致其它用户可以直接访问,从而引发各种敏感信息泄露
漏洞描述
Actuator是Spring Boot提供的服务监控和管理中间件,默认配置会出现接口未授权访问,部分接口会泄露网站流量信息和内存信息等,使用Jolokia库特性甚至可以远程执行任意代码,获取服务器权限。
Spring Boot Actuator未授权访问
/dump - 显示线程转储(包括堆栈跟踪)
/autoconfig - 显示自动配置报告
/configprops - 显示配置属性
/trace - 显示最后几条HTTP消息(可能包含会话标识符)
/logfile - 输出日志文件的内容
/shutdown - 关闭应用程序
/info - 显示应用信息
/metrics - 显示当前应用的’指标’信息
/health - 显示应用程序的健康指标
/beans - 显示Spring Beans的完整列表
/mappings - 显示所有MVC控制器映射
/env - 提供对配置环境的访问
/restart - 重新启动应用程序
spingboot框架的判断
- 出现404报错如图所示
- 通过 web 应用程序网页标签的图标(favicon.ico);如果 web 应用开发者没有修改 springboot web 应用的默认图标,那么进入应用首页后可以看到如下默认的绿色小图标:
安全建议
- 安全建议
- 禁用所有接口,将配置改成:endpoints.enabled = false
- 或者引入spring-boot-starter-security依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
- 开启security功能,配置访问权限验证,类似配置如下:
management.port=8099
management.security.enabled=true
security.user.name=xxxxx
security.user.password=xxxxxx
漏洞复现:
1.进入url栏中发现此框架采用springboot框架
2.经过检查:输入地址http://xxx.com/actuator/env
发现其存在未授权访问
3.经检查在env配置下不存在mysql mangodb数据库账号密码
4.在health目录下并未发现git项目地址
5.经过检验在/heapdump路径下存在内存泄漏,其中拥有大量后台密码