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安全, 会话劫持, 后端开发, 暴力破解, 漏洞验证, 版权保护, 蓝队分析, 请求拦截