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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/seanpesce/cve-2024-22243
漏洞分析代码分析漏洞利用Web应用程序漏洞利用Web安全CTF学习与教育
GitHubseanpesce/cve-2024-22243

CVE-2024-22243

示例可利用场景:影响 Spring 框架的 CVE-2024-22243(开放重定向与 SSRF)。

查看仓库
132141年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2024-22243

作者:Sean Pesce

该项目包含一个示例 Web 应用,用于演示以下漏洞的可利用场景: CVE-2024-22243, 这是 Java Spring Framework 中的一个 URL 解析漏洞 (官方披露见此处)。

漏洞

受影响版本的 Spring 会以独特方式解析 URL 中的 “userinfo”段, 这可能导致提取出的主机名段与许多 其他常见库不同。

该异常行为源于以下正则表达式(regex),它位于 UriComponentsBuilder 类中(由 此提交 于 2014 年引入):

root@kitploit:~
private static final String USERINFO_PATTERN = "([^@\\[/?#]*)";

该正则表达式不允许用户信息段中出现“左方括号”字符([)。然而, Spring 在这种行为上似乎是一个特例,因此对 UriComponents 对象调用 getHost()(该对象使用 UriComponentsBuilder.fromUriString 或 UriComponentsBuilder.fromHttpUrl 构造)可能会产生意外行为。 RestTemplate、 RestClient 和 WebClient 类由于在内部使用了 UriComponentsBuilder 而同样受到影响;因此, 即使不直接使用 UriComponentsBuilder,相关实现也可能存在漏洞。

对于特制输入,Spring 返回的主机名值将与以下所有项的 结果不同:

  • 现代网络浏览器,包括:
    • Chrome(以及其他基于 Chromium 的浏览器)
    • Firefox
    • Safari
  • java.net.URI(据称仅适用于特定 Java 版本;其他版本会抛出 URISyntaxException)
  • java.net.URL
  • curl
  • android.net.Uri
  • okhttp3.HttpUrl
  • (Python 3)urllib.parse.urlparse

(请注意,此列表并不详尽。)

这种异常行为可能使基于 Spring 的 Web 应用容易受到 开放重定向和 服务端请求伪造(SSRF)的影响,前提是 相关实现使用可信主机名进行授权或其他安全相关 机制。

示例

该示例 Web 应用包含两个存在漏洞的端点。

第一个端点 /redirect 展示了 Spring 异常的 URL 解析如何导致开放 重定向。可以使用如下 URL 进行利用:

root@kitploit:~
https://127.0.0.1[@evil.com

第二个端点 /health-check 演示了 Spring 与 Java 标准库 URL 类之间的 URL 解析差异如何导致服务端请求伪造(SSRF)。可以使用 如下 URL 进行利用:

root@kitploit:~
https://evil.com[@127.0.0.1

用法

要使用 Maven 构建此项目,只需运行以下命令(已在 OpenJDK 17 上测试):

root@kitploit:~
mvn clean package

然后,使用类似以下命令启动 Web 应用:

root@kitploit:~
java -jar seanpesce-cve-2024-22243.jar 9999

Web 应用将可通过 http://127.0.0.1:9999/ 访问。

Docker

要构建 docker 镜像,请运行以下命令:

root@kitploit:~
docker build -t seanpesce-cve-2024-22243:latest .

然后,使用类似以下命令启动 Web 应用:

root@kitploit:~
docker run -i -e PORT=9999 -p 9999:9999 seanpesce-cve-2024-22243:latest

在 Docker 主机上,Web 应用将可通过 http://127.0.0.1:9999/ 访问。

Semgrep

本仓库还包含 semgrep 规则,用于辅助扫描 可能存在漏洞的代码路径。spring-cve-2024-22243_loose.yaml 会对受漏洞影响的 API 的任何使用进行朴素扫描;因此,它通常会返回大量 误报。spring-cve-2024-22243_strict.yaml 尝试使用更严格的逻辑和污点分析;但该方法尚未经过 全面测试,并且极有可能漏掉某些存在漏洞的实现(尤其是在未使用 Semgrep Pro 时,跨文件分析需要 Semgrep Pro)。

其他资源

  • NIST 数据库条目
  • 修复该漏洞的 Git 提交
  • 漏洞实现演示:带开放重定向的易受攻击 OAuth 流程,作者:threedr3am(SecCoder Security Lab)
  • CVE-2024-22259:在 CVE-2024-22243 的后续影响中发现的第二个 URL 解析漏洞
  • CVE-2024-22262:在前两个发现的后续影响中发现的第三个 URL 解析漏洞
  • PortSwigger URL 绕过速查表,其中包含针对 CVE-2024-22243 的 payload
下载工具