Springboot框架actuator配置不当修复方案及验证详细
Springboot框架actuator配置不当修复方案及验证详细
1.判断是否使用了Springboot框架
方法一: 查看网页图标 如果是类似SpringBoot框架的默认图标
这样的图标则大概率是使用了该框架
方法二:在方法一如果不能完全确定时,可以在网页路径在输入错误路径导致网页报错
查看网页的报错界面,如果是如下界面则基本可以确定使用了SpringBoot框架
2.枚举actuator下的路径
在确定是SpringBoot框架后,枚举站点的一级、二级甚至三级目录,查看目录下面是否存在actuator执行端点路径
在application.properties配置文件中查看actuator的访问路径
如 设置management.context-path=/monitor
则访问访问ip:port/monitor/actuator
默认配置下 management.context-path=/
此时访问ip:port/actuator 暴露配置信息
根据actuator信息知道可以访问/actuator/health 和 /actuator/info
Actuator模块下路径功能
漏洞修复方案
方案一:
可以在application.properties配置文件修改配置
开启业务需求上必须的端口(建议全部禁用)
通过配置management.endpoint.<端点名称>.enabled为true/false来开启/禁用端口``
management.endpoints.enabled = false //禁用所有端口
management.endpoints.metrics.enabled = true //开启metrics端点
通过配置management.endpoint.web.exposure.include=xxx 来暴露某个web端点
通过配置management.endpoint.web.exposure.exclude=xxx 来隐藏某个web端点
如:
暴露所有端点
management.endpoints.web.exposure.include=*
隐藏(不暴露)端点info
management.endpoints.web.exposure.exclude=info
隐藏(不暴露)端点env beans
management.endpoints.web.exposure.exclude=env,beans
方案二:
引入安全依赖,增加验证环节
引入spring-boot-starter-security依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
在application.properties中指定actuator的端口以及开启security功能,下图是程序启动时自动生成的字符串
management.port=8099
management.security.enabled=true
security.user.name=账号
security.user.password=密码(注意密码复杂度)
这样再访问actuator的时候就会弹出登陆框
验证方法
- 再次访问指定的路径,若未能查看到配置信息,则配置安全
总结
在使用Actuator时,不正确的使用或者一些不经意的疏忽,就会造成严重的信息泄露等安全隐患。在代码审计时如果是Springboot项目并且遇到actuator依赖,则有必要对安全依赖及配置进行复查。也可作为一条规则添加到黑盒扫描器中进一步把控。
安全的做法是一定要引入security依赖,打开安全限制并进行身份验证。同时设置单独的Actuator管理端口并配置不对外网开放。