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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-29000-Lab — 库级概念验证实验室,演示 pac4j-jwt 中的 CVE-2026-29000,通过 Docker 对比存在漏洞的版本与已修补版本,展示伪造 JWT 的接受与拒绝。 | Kitploit
工具/GitHubGitHub/rootdirective-sec/cve-2026-29000-lab
漏洞分析漏洞利用Web安全身份验证
GitHubrootdirective-sec/cve-2026-29000-lab

CVE-2026-29000-Lab

库级概念验证实验室,演示 pac4j-jwt 中的 CVE-2026-29000,通过 Docker 对比存在漏洞的版本与已修补版本,展示伪造 JWT 的接受与拒绝。

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
15个月前尚未审核
分享

CVE-2026-29000 — pac4j-jwt 库级 PoC 实验室

概述

本仓库包含针对 pac4j-jwt 中 CVE-2026-29000 的库级 PoC。

它通过两个用例对比了存在漏洞的版本与已修复版本的行为:

  • 基线测试:合法令牌应被接受
  • 攻击测试:伪造令牌在存在漏洞的版本上应被接受,在已修复版本上应被拒绝
版本基线测试攻击测试结果
6.0.3✅✅存在漏洞
6.0.4.1✅✅存在漏洞
6.3.3✅❌已修复

本 PoC 演示了在存在漏洞的版本上,攻击者可控制主体(subject)和角色(roles)来创建已认证的用户配置文件,而已修复版本会拒绝伪造的令牌。


本项目是什么

这不是一个 Web 应用演示。

它是一个小型 Java 程序,直接调用 JwtAuthenticator,并在 Docker 中对比多个版本的 pac4j-jwt。

目标是证明三件事:

  1. 合法令牌仍然有效
  2. 攻击者控制的伪造声明在存在漏洞的版本上会被接受
  3. 攻击者控制的伪造声明在已修复版本上会被拒绝

为什么选择这些版本

测试版本是经过精心挑选的:

  • 6.0.3 — 因为公开的技术文章报告了该版本上可用的 PoC
  • 6.0.4.1 — 因为公开的公告数据将其归入受影响的 6.x 范围
  • 6.3.3 — 因为它是 6.x 系列的修复版本

这为实验室提供了三个有用的参考点:

  • 公开 PoC 参考版本
  • 公告确认的受影响版本
  • 已修复版本

项目结构

root@kitploit:~
.
├── docker-compose.yml
├── Dockerfile
├── pom.xml
└── src/main/java/lab/Repro.java

文件职责

  • docker-compose.yml 定义每个版本的测试矩阵。

  • Dockerfile 在容器内构建并运行 PoC。

  • pom.xml 定义依赖并构建可运行的 fat JAR。

  • src/main/java/lab/Repro.java 实际的 PoC 测试框架。


服务含义

docker-compose.yml 文件定义了三个服务:

  • v603 = 测试 pac4j-jwt 6.0.3
  • v6041 = 测试 pac4j-jwt 6.0.4.1
  • patched = 测试 pac4j-jwt 6.3.3

因此以下命令表示“针对该特定版本运行一次 PoC”:

root@kitploit:~
docker compose run --rm v603
docker compose run --rm v6041
docker compose run --rm patched

--rm 表示运行结束后临时容器会被移除。


如何运行

构建

root@kitploit:~
docker compose build --no-cache

运行

root@kitploit:~
docker compose run --rm v603
docker compose run --rm v6041
docker compose run --rm patched

PoC 做了什么

对于每个版本,程序会运行两个用例。

1) 基线测试

它生成一个合法令牌,并通过 JwtAuthenticator 进行验证。

预期结果:

  • 在所有测试版本上均被接受

2) 攻击测试

它生成一个带有攻击者控制声明的伪造令牌,并通过 JwtAuthenticator 进行验证。

预期结果:

  • 存在漏洞的版本 → 伪造身份被接受
  • 已修复版本 → 伪造令牌被拒绝

如何解读输出

存在漏洞版本的输出

你应该会看到类似这样的内容:

root@kitploit:~
[case] baseline
  result: ACCEPTED
  observed_subject: alice
  observed_roles: [ROLE_USER]

[case] attack
  result: ACCEPTED
  observed_subject: admin#override
  observed_roles: [ROLE_SUPERUSER, ROLE_ADMIN]

[summary]
  conclusion: VULNERABLE: forged token accepted

含义:

  • 正常令牌有效
  • 伪造令牌也被接受
  • 主体和角色被替换为攻击者控制的值

已修复版本的输出

你应该会看到类似这样的内容:

root@kitploit:~
[case] baseline
  result: ACCEPTED
  observed_subject: alice
  observed_roles: [ROLE_USER]

[case] attack
  result: REJECTED
  reason: CredentialsException: A non-signed JWT cannot be accepted as signature configurations have been defined

[summary]
  conclusion: PATCHED: forged token rejected

含义:

  • 正常令牌有效
  • 伪造令牌被拒绝
  • 已修复版本不再接受攻击所使用的未签名内部 JWT 路径

为什么本仓库关注库行为而非通用令牌脚本

该 CVE 影响的是库级身份验证路径,而非具有单一通用角色模型的某个应用程序。

可复用的部分是攻击形态:

  • 攻击者控制的伪造声明
  • 加密为 JWE
  • 传入 JwtAuthenticator

在真实应用中并非通用的部分:

  • 声明名称
  • 角色名称
  • 授权映射
  • 密钥材料 / JWKS 配置
  • 应用特定的配置文件处理

因此,本仓库专注于证明该库在存在漏洞的版本上会接受攻击者控制的伪造声明,而不是假装存在一个能自动适用于任意应用的通用令牌。


截图

  1. docker compose run --rm v603
  2. docker compose run --rm v6041
  3. docker compose run --rm patched

存在漏洞的版本:6.0.3

example 603 output

存在漏洞的版本:6.0.4.1

example 6041 output

已修复版本:6.3.3

example patched output


参考资料

  • pac4j 关于 JwtAuthenticator 的安全公告
  • GitHub 公告数据库:CVE-2026-29000
  • NVD 条目:CVE-2026-29000
  • CodeAnt 技术文章:公钥认证绕过 PoC

最终结论

本项目证明了三个核心事实:

  1. 合法基线令牌在所有测试版本上均被接受
  2. 攻击者控制的伪造声明在 6.0.3 和 6.0.4.1 上被接受
  3. 攻击者控制的伪造声明在 6.3.3 上被拒绝

这是本仓库中该 CVE 的核心“存在漏洞与已修复”对比证据。

在存在漏洞的版本上,伪造令牌不仅会被解析——它还会生成一个带有攻击者控制的主体和角色的已认证用户配置文件。

下载工具