ElianGonzi00/pocKeycloakCVE-2023-0264
GitHub: ElianGonzi00/pocKeycloakCVE-2023-0264
针对 Keycloak CVE-2023-0264 的 PoC 工具,演示 OIDC 会话劫持并附带检测代理。
Stars: 0 | Forks: 0
# PoC CVE-2023-0264 — front (OIDC 会话劫持)
静态 front 执行针对 Keycloak 的 OIDC 流程(授权码),
并公开了该 PoC 的 `session_id` 劫持钩子。它使用 nginx 运行在
端口 **5174** 上供团队使用。
## 启动(在 VPS 上)
```
cd vps/pocCVE0264
docker compose up -d --build
```
它会在 `http://maquina:5174` 上运行。在提供商处开放
**5174/TCP** 的防火墙(就像你对 8443 端口所做的那样)。
Keycloak 的 URL 是通过环境变量注入的(没有硬编码在 HTML 中):编辑
`docker-compose.yml` 中的 `KEYCLOAK_URL/REALM/CLIENT_ID` 并重启 —— 无需重新构建。
## ⚠️ Keycloak 上的要求(没有这些,登录/token 会失败)
在 realm **poc**,客户端 **client1**(Admin Console → Clients → client1)中:
1. **Valid redirect URIs** → 添加 `http://maquina:5174/*`
(如果没有,Keycloak 会拒绝返回的重定向并提示 "Invalid parameter: redirect_uri")。
2. **Web origins** → 添加 `http://maquina:5174`
(如果没有,对 `/token` endpoint 的 `fetch` 会因为 **CORS** 失败,导致登录进行到一半中止)。
## ⚠️ Self-signed 证书
Keycloak 在 8443 端口上使用 self-signed 证书。团队的每个成员第一次
必须在浏览器中打开 `https://maquina:8443` 并**接受一次该
证书**。否则,front 到 Keycloak 的调用会静默失败。
## PoC 的使用方法
1. 打开 `http://maquina:5174` → 重定向到 Keycloak 的登录页面。
2. 带着 `code` 返回时,`prompt` 会显示当前的 `session_id` 并允许将其
**替换**为另一个会话的 `session_id`(PoC CVE-2023-0264 的核心)。
3. 如果交换完成,token 就会绑定到注入的会话上。
安全代理(`agente/` 文件夹)会检测并警告这种模式。
## 注意事项
- 通过 **HTTP** (5174) 提供服务;Keycloak 通过 **HTTPS** (8443):流程可以
正常运行(允许 http→https 请求)。如果要让 front 使用 HTTPS,则需要 cert/reverse-proxy。
- 这是一个**用于在你自己的 Keycloak 上进行授权测试的 PoC 工具**。
如果你将其公开暴露,请考虑限制访问(IP、代理中的 basic auth),以免将劫持客户端开放给任何人。
- 更换 Keycloak 实例 = 更改 compose 中的 `KEYCLOAK_URL` + `up -d`。
标签:Docker Compose, Keycloak, Maven, Nginx, OIDC, PoC, Web安全, 会话劫持, 后端开发, 暴力破解, 漏洞验证, 版权保护, 蓝队分析, 请求拦截