文章目录
Spring Boot Actuator未授权访问漏洞笔记
场景
公司安扫,发现很多项目有 Spring Boot Actuator未授权访问漏洞。
描述:
引入actuator的项目,很多路径未授权就可以访问。例如: /info、/beans等。
实际这些都不应开放,最对只开放个健康检查/health。
解决方案
方案一 配置健康检查
endpoints.enabled = false
endpoints.health.enabled = true
对,你没看错,就是这么简单。
遇到的问题
apollo配置了,服务也重启了,就是不生效。
为此差点怀疑人生,本地开了个项目,这么配置是没问题的。
说明apollo这么配置是不行的。
改为本地启动时加上参数(在jar前即可):
-Dendpoints.enabled=false -Dendpoints.health.enabled=true
如果在脚本中应该这样配:
--endpoints.enabled=false --endpoints.health.enabled=true
方案二 配置security(略)
其他
get请求访问不了、post请求却可以访问
那么把 endpoints.env.enabled 也设置为false吧,如果无效,就进一步细粒度设置下。
endpoints.env.enabled=false # 感觉这一个就行了
endpoints.env.post.enabled=false # 实际加的这个
endpoints.env.refresh.enabled=false # 实际加的这个
如果版本比较高,前面加个```management.`
management.endpoint.env.enabled=false # spring2.0版本以上用这个(也有说2.2.4版本以上,不管了,反正高版本就用这个)
实测填这3个也是可以的。
management.endpoints.enabled-by-default=false
management.endpoints.web.base-path=/disabled
management.endpoints.web.exposure.include=
Spring Eureka 未授权访问漏洞
这个比较好理解,连eureka的时候,不需要账号密码,所以是不安全的。
解决方案
1、添加账号密码验证。
如果服务比较少还好,如果服务比较多,改动比较大。
2、外网禁用8889端口。
防火墙层面的思路。
本文主要探讨了SpringBootActuator的安全问题,描述了未授权访问漏洞,并提出了两种解决方案。方案一是通过配置关闭除健康检查外的所有端点,但在Apollo配置中需注意需通过命令行参数生效。方案二是配置Security,但具体细节未详述。此外,还建议了针对GET请求无法访问而POST请求可以的情况,通过细化配置来禁用不需要的端点。
4万+

被折叠的 条评论
为什么被折叠?



