lucastran05/CVE-2026-29000
GitHub: lucastran05/CVE-2026-29000
CVE-2026-29000漏洞复现实验室
Stars: 0 | Forks: 0
# CVE-2026-29000 实验环境
模拟 CVE-2026-29000 中关于 JWT/JWE 身份验证漏洞的 Java/SparkJava 实验环境。应用程序运行在端口 `4567` 上,并提供用于测试正常登录流程、伪造 token 以及检查 dashboard 的 API。
## CVE 信息
CVE-2026-29000 影响到了 `4.5.9`、`5.7.9` 和 `6.3.3` 之前版本中的 `pac4j-jwt`。该漏洞存在于处理 encrypted JWT/JWE 的 `JwtAuthenticator` 中,允许 attacker 在某些身份验证流程中伪造身份验证 token。
根据当前使用的分支,建议至少升级到的版本如下:
- `4.x`:升级至 `4.5.9` 或更高版本
- `5.x`:升级至 `5.7.9` 或更高版本
- `6.x`:升级至 `6.3.3` 或更高版本
## 环境要求
- Docker Desktop 或 Docker Engine
- Docker Compose 插件
- 如果想在不使用 Docker 的情况下直接运行,需要 Java 17 和 Maven
## 使用 Docker Compose 安装
在项目根目录下,运行:
```
docker compose up --build
```
构建完成后,打开:
```
http://localhost:4567
```
停止实验环境:
```
docker compose down
```
## 使用 Docker CLI 安装
构建 image:
```
docker build -t cve-2026-29000-lab .
```
运行 container:
```
docker run --rm -p 4567:4567 --name cve-2026-29000-lab cve-2026-29000-lab
```
检查 server public key:
```
curl http://localhost:4567/api/public-key
```
## 使用 Maven 直接运行
进入 `lab` 目录:
```
cd lab
```
运行应用程序:
```
mvn exec:java
```
或者先构建再使用 classpath 运行:
```
mvn -DskipTests package dependency:copy-dependencies
java -cp "target/classes;target/dependency/*" com.demo.App
```
在 Linux/macOS 上,使用 `:` 代替 `;`:
```
java -cp "target/classes:target/dependency/*" com.demo.App
```
## 基础 API
- `GET /` - 演示步骤快速指南
- `POST /api/login` - 生成合法 token
- `POST /api/forge-token` - 生成用于演示 bypass 的 token
- `GET /api/dashboard` - 检查 `Authorization: Bearer ` header 中的 token
- `GET /api/public-key` - 以 JWK 格式查看 public key
## 快速测试示例
正常登录:
```
curl -X POST http://localhost:4567/api/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"user_lucas\",\"role\":\"user\"}"
```
生成伪造 token:
```
curl -X POST http://localhost:4567/api/forge-token \
-H "Content-Type: application/json" \
-d "{\"username\":\"admin\",\"role\":\"administrator\"}"
```
## 项目结构
```
CVE-2026-29000-lab/
|-- Dockerfile
|-- docker-compose.yml
|-- lab/
| |-- pom.xml
| `-- src/main/java/com/demo/
| |-- App.java
| `-- VulnerableAuthenticator.java
`-- README.md
```
## 注意事项
本实验环境仅用于在本地环境中学习和测试。请勿公开部署或将其用于攻击未经授权的系统。
标签:Docker, Java, JWT, 域名枚举, 安全防御评估, 漏洞复现环境, 身份验证绕过