Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2022-22978-PoC — CVE-2022-22978 漏洞在 Spring Security 框架中的 PoC | Kitploit
工具/GitHubGitHub/ducluongtran9121/cve-2022-22978-poc
身份验证与授权漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubducluongtran9121/cve-2022-22978-poc

CVE-2022-22978-PoC

CVE-2022-22978 漏洞在 Spring Security 框架中的 PoC

查看仓库
13124年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE 2022-22978:RegexRequestMatcher授权绕过 🥶

概述

据我了解,此漏洞与Spring Security框架中的RegexRequestMatcher类有关。具体而言,使用RegexRequestMatcher且正则表达式中包含点(.)的应用程序,可以通过字符**\r(%0a)、\n(%0d)**被绕过;从而攻击者无需认证即可访问不允许的路径。

受影响的Spring Security框架版本:

  • 5.5.x 低于 5.5.7
  • 5.6.x 低于 5.6.4
  • 以及更早的不受支持的版本。

分析

我们需要访问Spring Security的源代码来静态分析此漏洞。具体来说,我使用Github的提交比较功能,对比5.6.3(受漏洞影响的版本)和5.6.4(已修复的版本)之间的差异。查看以下链接:Comparing 5.6.3...5.6.4 · spring-projects/spring-security (github.com)

img1

我检查了RegexRequestMatcher类中的更改。可以看到,在5.6.4版本中,该类使用了Pattern.DOTALL,而不是像5.6.3版本那样使用默认的.。

其中:

  • Pattern:java.util.regex包中的三个类之一,用于处理正则表达式。
  • Pattern.DOTALL:使用此标志时,正则表达式中的“.”将匹配所有字符,包括换行符如\n , \r。
  • Pattern.CASE_INSENSITIVE:不区分大小写。

img2

演示

步骤1: 使用Spring Initializr创建一个Spring Boot Web应用程序,附带两个依赖:Spring Security和Spring Web。

img4

步骤2: 创建一个Controller,当请求到达/admin/*路径时输出字符串This is a CVE-2022-22978 demo

img5

步骤3: 设置认证机制,要求用户在访问/admin/<任何>路径时必须经过认证,使用regexMatchers("/admin/.*").authenticated()。这正是攻击者利用的漏洞,无需认证即可查看/admin/<任何>页面的内容。

img6

步骤4: 在配置文件中,声明包含漏洞的Spring Security版本。这里我选择版本5.6.3。

img7

步骤5: 使用命令gradlew bootRun运行应用程序,程序默认使用Apache Tomcat监听8080端口。我们访问/admin/xyz路径(任何以/admin/开头的路径都可以)。

img8

结果返回403 Forbidden状态码,意味着由于未认证而无法访问。

此时,利用Spring Security(版本5.6.3)中regexMatchers函数的漏洞,它不匹配换行符如\r(%0d)和\n(%0a),因此我们可以使用payload /admin/%0dxyz无需认证即可访问上述路径。

img9

类似地,使用payload /admin/%0axyz

img10

因此,我们仅用一个非常简单的payload就成功利用了CVE-2022-22978漏洞。

修复方法

  • 将Spring Security版本更新为:
    • 5.5.7+
    • 5.6.4+
    • 5.7+
  • 演示:使用已修复的版本,具体为5.7.1

img11

尝试使用与上述类似的payload攻击Web:/admin/%0dxyz

img12

此时,应用程序不再返回攻击者期望的响应。

使用方法

root@kitploit:~
git clone https://github.com/ducluongtran9121/CVE-2022-22978-PoC.git
cd CVE-2022-22978-PoC
gradlew bootRun

要求

root@kitploit:~
Java 18
Gradle 7.4.1
下载工具