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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-71206-PoC — PoC:Shiori JWT CheckToken 从不重新验证账户状态(CVE-2026-71206,高危 8.2) | Kitploit
工具/GitHubGitHub/nel-droid/cve-2026-71206-poc
身份验证与授权漏洞分析漏洞利用Web应用程序漏洞利用Web安全身份验证
GitHubnel-droid/cve-2026-71206-poc

CVE-2026-71206-PoC

PoC:Shiori JWT CheckToken 从不重新验证账户状态(CVE-2026-71206,高危 8.2)

查看仓库
524天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-71206 — Shiori:JWT CheckToken 从不重新验证账户状态

产品:go-shiori/shiori 文件:internal/domains/auth.go **CWE:**CWE-613 — 会话过期不充分 CVSS 3.1:AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:L — 8.2(高危) **CNA:**Turan Security · CVE 记录

描述

Shiori 的 CheckToken 函数(internal/domains/auth.go)仅验证 JWT 的 HMAC 签名,并原样返回嵌入的 claims.Account 对象——它不会在每次请求时从数据库重新获取账户。整个代码库中不存在任何会话存储或令牌撤销机制。

影响

一旦 JWT 被签发,无论此后账户发生什么变化,它在其整个生命周期内都保持完全有效。如果管理员删除了用户、对其进行了降级,或者用户在疑似遭到入侵后轮换了密码,那么在变更之前签发给该账户的任何 JWT 仍会继续使用令牌中内置的原始声明(角色、账户 ID 等)成功完成身份验证——服务端没有任何状态可使其失效。

复现步骤

  1. 以用户身份进行身份验证并获取签发的 JWT(例如通过 POST /api/v1/auth/login)。
  2. 以管理员身份删除该账户或降低用户角色。
  3. 对任意需要身份验证的端点重放原始 JWT:
    root@kitploit:~
    GET /api/bookmarks
    Authorization: Bearer <original JWT>
    
  4. 该请求凭借过时的声明依然成功——已删除/被降级的账户仍拥有访问权限,因为 CheckToken 从不检查当前数据库状态,只检查签名。

根本原因

CheckToken 将 JWT 负载视为账户状态的权威来源,而不是将其视为一种需要在每次使用时对照数据库重新验证(或对照撤销列表检查)的持有者凭证。

修复建议

在每次经过身份验证的请求中按 ID 重新获取账户(或至少对照以令牌 ID(jti)为键的撤销/会话存储进行检查,该存储在账户删除、降级或密码变更时失效),而不是原样信任嵌入的声明。

下载工具