影响范围

  • Spring Security 5.5.0 - 5.5.6
  • Spring Security 5.6.0 - 5.6.3
  • 以及更早的停止维护版本。

漏洞类型

权限绕过

操作系统限制

配置要求

  • Spring Security 默认使用 AntPathRequestMatcher
  • 正则表达式使用了点号(.)通配符
  • 未显式设置 caseInsensitive 或 DOTALL 参数

漏洞利用

越权获取敏感信息

利用原理

RegexRequestMatcher(正则匹配器)初始化未开启 DOTALL 模式(开启后点号匹配范围扩大,可以匹配包括换行符在内的所以字符),安全框架用正则匹配路径,由于. 无法识别 %0a,导致正则引擎判定匹配失败,即认为加入 %0a 不属于受保护的范围,绕过了权限检验,从而能够访问敏感业务信息

漏洞复现

用现成的 vulhub 来拉取镜像

1
2
3
4
5
6
#下载vulhub源代码
git clone https://github.com/vulhub/vulhub.git
#进入漏洞目录
cd vulhub/spring/CVE-2022-22978
#拉取镜像
docker-compose up -d

1773377227416

用 burpsuite 抓 http://公网: 8080 数据包

1773377288363

发送到 Repeater 模块

1773377315682

修改路径 / admin,访问 admin 页面,返回 404,确认有防护

1773377352454

修改路径/admin/%0a,返回 200,成功绕过认证访问受保护资源

1773377378600