Spring Security身份认证绕过漏洞(CVE-2022-22978或CVE-2023-34034)复现
1 漏洞概述
Spring Security是一个基于框架的安全性身份验证和授权管理组件,提供一套完善的安全解决方案,可以轻松地实现基于角色或者资源的安全访问控制以及单点登录等。具有兼容性好、易集成等特点。近日,新华三盾山实验室监测到Spring官方发布了安全公告,修复了一个存在于Spring Security中的身份认证绕过漏洞(CVE-2023-34034),攻击者利用该漏洞可绕过身份认证。
由于Spring Security存在身份认证绕过漏洞,当WebFlux中的Spring Security配置使用“**”作为匹配模式时,会导致Spring Security 和Spring WebFlux之间的模式匹配存在差异,恶意攻击者成功利用此漏洞可绕过身份认证机制。
2 影响范围
Spring Security 6.1.0 <= 6.1.1
Spring Security 6.0.0 <= 6.0.4
Spring Security 5.8.0 <= 5.8.4
Spring Security 5.7.0 <= 5.7.9
Spring Security 5.6.0 <= 5.6.11
修复方案:
目前官方已发布安全更新,请及时升级至最新版本:
Spring Security 5.7.10 >= 5.7.13(仅限企业支持)
Spring Security 5.8.5 >= 5.8.15(仅限企业支持)
Spring Security 6.2.* >= 6.2.7
Spring Security 6.3.* >= 6.3.4
3 严重等级
威胁等级 | 严重 |
---|---|
影响程度 | 广泛 |
利用价值 | 高 |
利用难度 | 中等 |
漏洞评分 | 9.1 |
4 poc环境验证
下载地址,5.6.3在范围之内
https://github.com/vulhub/vulhub/tree/master/base/spring/spring-security/5.6.3/code
配置maven,jdk1.8,进行启动
进行控制层,访问127.0.0.1:8080/admin
@Controller
public class DemoController {
@GetMapping("/admin/*")
public String Admin(){
return "admin";
}
@GetMapping("/")
public String User(){
return "index";
}
}
进行访问127.0.0.1:8080/admin,显示成功拒绝
根据"/admin/*"匹配模式,*便是任何路径都可,使用/admin/index%0a,成功绕过权限, %0a为换行符
Payload: /admin/index%0a
5 修复方案
官方补丁目前官方已修复该漏洞,受影响用户可以升级更新到安全版本。官方下载链接:https://spring.io/projects/spring-security