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

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

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

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

工具目录

分类

查看所有分类
Loading categories
keycloak-cve-2026-18963-hunt — 在 Keycloak 数据库中搜寻 CVE-2026-18963 的利用痕迹(Keycloak 未认证账户接管) | Kitploit
工具/GitHubGitHub/kyos-public/keycloak-cve-2026-18963-hunt
漏洞分析数字取证身份验证事件响应数据库安全日志分析
GitHubkyos-public/keycloak-cve-2026-18963-hunt

keycloak-cve-2026-18963-hunt

在 Keycloak 数据库中搜寻 CVE-2026-18963 的利用痕迹(Keycloak 未认证账户接管)

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
914小时37分前尚未审核
分享

CVE-2026-18963:Keycloak 账户接管,利用痕迹追踪

一个 psql 脚本,用于在 Keycloak PostgreSQL 数据库中搜索 CVE-2026-18963 的利用痕迹(通过重置凭据流程进行的未认证账户接管)。

由 KYOS 发布。我们在修补所运营的 Keycloak 部署时编写了该脚本,用于核实在暴露窗口期内是否有人被接管。

漏洞

CVE-2026-18963 是 keycloak-services 重置凭据流程中的一个缺陷 (keycloak#51833)。 未认证攻击者无需点击邮件验证链接即可完成任意用户的密码重置流程, 然后在该账户上设置新密码。整个过程无需用户交互。

严重级别:严重(Critical),CVSS v3.1 9.1(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N), 依据 Red Hat 和 NVD。根本原因是 认证流程中的状态验证不当,已在 keycloak#51844 中修复。

受影响 / 已修复版本

下载工具
版本流修复版本
26.7.x26.7.2(发布说明)
26.6.x26.6.6
26.4.x(LTS)26.4.15
26.826.8.0

受支持版本流中低于上述版本的所有版本均存在漏洞。不受支持的版本 (26.5.x、26.3 及更早版本)不会有修复:应视为已暴露,并升级到 已修复的版本流。Red Hat 将旧版 RH-SSO 7 列为不受影响;Red Hat Build of Keycloak 26.4/26.6 已在 26.4.15-1 / 26.6.6-1 中修复。

无法立即修补时的临时缓解措施

禁用自助密码重置可移除易受攻击的入口点:在每个 realm 的管理控制台 > Realm 设置 > 登录 中关闭"忘记密码"。通过管理 API: PUT /admin/realms/{realm} 并携带 {"resetPasswordAllowed": false}。

这会阻断 login-actions/reset-credentials 端点,但也会阻止合法用户 重置自己的密码,因此请仅将其作为升级前的临时措施。请注意,Red Hat 并未为此 CVE 列出官方认可的缓解方案;修补才是唯一真正的修复方式。

脚本检查的内容

cve-2026-18963-keycloak-hunt.sql 运行四个只读查询:

查询作用
Q0realm 是否存储登录/管理事件及其 TTL。如果事件记录已关闭或已过期,Q2/Q3 中的空结果不能证明任何问题。
Q1暴露窗口期内设置的所有密码凭据(credential.created_date)。这即是接管行为本身,即使事件日志已关闭也能生效。
Q2重置/凭据登录事件,标记此前 24 小时内没有 SEND_RESET_PASSWORD 的已完成重置(no_email_before = t)。该标记即为 CVE 特征:攻击者从未触发邮件。
Q3管理 API 凭据重置和 execute-actions 操作,用于排除管理员操作的途径。

使用方法

root@kitploit:~
# defaults: realm 'master', window since 2026-06-01
psql -U keycloak -d keycloak -f cve-2026-18963-keycloak-hunt.sql

# explicit realm and window (run once per realm, quote values exactly like this)
psql -U keycloak -d keycloak \
  -v realm="'myrealm'" -v since="'2026-05-01'" \
  -f cve-2026-18963-keycloak-hunt.sql

将 since 设置为您的易受攻击版本上线之前的时间点。在 Kubernetes 上:

root@kitploit:~
kubectl exec -it my-postgres-pod -- \
  psql -U keycloak -d keycloak -v realm="'myrealm'" -v since="'2026-05-01'" \
  -f - < cve-2026-18963-keycloak-hunt.sql

解读结果

Q1 中的行并不自动意味着账户被入侵。请将每一行与已知的合法原因 (自助重置、服务台操作、新注册)进行比对,并将任何无法解释的记录 视为接管候选。

Q2 中 RESET_PASSWORD、UPDATE_CREDENTIAL 或 UPDATE_PASSWORD 带有 no_email_before = t 的行是该 CVE 被利用的最强指示。 请将 ip_address 列与您的访问日志进行关联分析。

先检查 Q0:登录事件会过期(events_expiration),并且可能被完全禁用。 Q1 不会过期,因此是最可靠的检查项。

如果发现账户被接管

  1. 禁用受影响的账户,或通过可信渠道强制重置密码。
  2. 撤销该账户的会话和离线令牌(管理控制台 > 会话),并轮换其可能接触到的所有机密。
  3. 扩大调查范围:围绕 Q2 中时间戳和 IP 的反向代理/入口(ingress)日志、凭据更改后该账户执行的操作,以及通过 Keycloak 联合的下游应用程序。

注意事项

  • 只读脚本,但建议在副本或备份上运行。
  • 针对 PostgreSQL 上的 Keycloak 26.x 编写。表名在近期版本中保持稳定,但在其他数据库或更旧版本上请予以验证。
  • 没有发现结果并不等于未被入侵(参见 Q0),尤其是在事件保留时间较短或日志被禁用的情况下。

许可证

MIT,参见 LICENSE。按现状提供,不附带任何担保。