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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2021-20323 — 针对CVE-2021-20323的概念验证与分析,该漏洞是Keycloak的clients-registrations端点中的反射型XSS漏洞,内容包括利用条件、缓解建议以及官方公告链接。 | Kitploit
工具/GitHubGitHub/ndmalc/cve-2021-20323
漏洞分析Web应用程序漏洞利用Web安全渗透测试论文与研究学习与教育
GitHubndmalc/cve-2021-20323

CVE-2021-20323

针对CVE-2021-20323的概念验证与分析,该漏洞是Keycloak的clients-registrations端点中的反射型XSS漏洞,内容包括利用条件、缓解建议以及官方公告链接。

查看仓库
13213年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-20323

描述

Keycloak 18.0.0 之前和 10.0.0 之后的版本在 clients-registrations 端点存在反射型 XSS 漏洞。该漏洞通过 POST 提交一个 JSON 结构触发,该结构的键是端点不支持的参数名。响应会在错误信息中回显该 JSON 键,并将头部设置为 Content-Type: text/html。在浏览器中执行时,JSON 键中的 HTML 代码会被解析,从而触发 JavaScript 代码。无需认证,漏洞影响所有可用的 realm。

当前,由于该漏洞需要 Content-Type: application/json 并通过 POST 提交,因此没有常见的可利用途径会对用户造成影响。

此仓库提供了 CVE-2021-20323 的 POC 以及修复/缓解建议。

如何触发漏洞

漏洞非常容易触发。

root@kitploit:~
curl -v -X POST {BaseURL}/realms/master/clients-registrations/default -H "Content-type: application/json" -d "{\"\":1}"

也可以使用 openid-connect 提供程序触发。

root@kitploit:~
curl -v -X POST {BaseURL}/realms/master/clients-registrations/openid-connect -H "Content-type: application/json" -d "{\"\":1}"

注意:在较旧版本的 Keycloak(使用 wildfly 而非 quarkus 运行的版本)中,基础路径使用 /auth/realms/* 而不是 /realms/*

漏洞是否可被利用?

正如我们在多个来源中看到的那样这里或这里,通常无法利用需要 Content-Type: application/json 的反射型 POST XSS 漏洞。唯一可能发生的情况是 CORS 策略被手动放宽,允许跨域请求。这种情况仅在应用程序所有者出于功能原因而设定的非常特定的用例中才合理。为了在这种情况下利用,攻击者要么需要控制 CORS 策略中允许的域/服务器,要么需要在该第二域上有一个 XSS 漏洞作为中继。

对于 CVE-2021-20323,Keycloak 不接受 Content-Type 为 multipart/form-data 或 application/x-www-form-urlencoded 的 POST 请求,而这两者是基本表单提交中唯一允许的类型。这使得 CVE-2021-20323 仅在 CORS 明确允许的情况下才有可能被利用。

root@kitploit:~
# curl -X POST {BaseURL}/realms/master/clients-registrations/default -H "Content-type: multipart/form-data" -d "{\"\":1}"
{"error":"RESTEASY003065: Cannot consume content type"}

# curl -X POST {BaseURL}/realms/master/clients-registrations/default -H "Content-type: application/x-www-form-urlencoded" -d "{\"\":1}"
{"error":"RESTEASY003065: Cannot consume content type"}

如何修复?

更新到 Keycloak 18.0.0 或更高版本。

RedHat Single Sign-On(RedHat 重新打包的 Keycloak 版本)没有已知的修复版本。

缓解替代方案

  1. 配置反向代理以禁止任何对 clients-registrations 的调用。
  2. 使用 ACL 配置 Keycloak 以限制对 clients-registrations 的访问,类似于这篇 Keycloak 博客文章。

链接

  • https://github.com/keycloak/keycloak/security/advisories/GHSA-m98g-63qj-fp8j
  • https://nvd.nist.gov/vuln/detail/CVE-2021-20323
  • https://bugzilla.redhat.com/show_bug.cgi?id=2013577
  • https://access.redhat.com/security/cve/CVE-2021-20323
  • https://github.com/keycloak/keycloak/commit/3aa3db16eac9b9ed8c5335ac86f5f50e0c68662d
  • https://security.stackexchange.com/questions/263301/reflected-xss-found-in-web-application-via-post-request-with-json-body-is-this
  • https://www.keycloak.org/2021/12/cve

许可证

MIT License © [ndmalc]

下载工具