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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-11374-check — CVE-2026-11374 的检测脚本 | Kitploit
工具/GitHubGitHub/bishopfox/cve-2026-11374-check
防御工具漏洞扫描器漏洞利用Web安全渗透测试威胁情报
GitHubbishopfox/cve-2026-11374-check

CVE-2026-11374-check

CVE-2026-11374 的检测脚本

查看仓库
28天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-11374 ManageEngine AD360 前置条件检测脚本

这是 CVE-2026-11374 利用前置条件的检测脚本。该漏洞是 ManageEngine AD360 套件中一个可预测的 SSO 票据缺陷,可导致未认证账户接管。四个范围内产品共享 ManageEngineADSFramework:

产品受影响版本修复版本
ADSelfService Plus≤ 65286529
RecoveryManager Plus≤ 63206321
M365 Manager Plus≤ 48164817
ADAudit Plus≤ 87028703

在受影响版本中,SSO 票据只是在受害者登录时采样的 System.currentTimeMillis()(一个可预测的时间戳),因此可以通过 CUSTOM_SSO_TICKET cookie 重放该票据以劫持该会话。修复方案用 UUID.randomUUID()(一个足够随机的标识符)替换了票据。仅当产品已集成 AD360 时,重放路径才可达:ADSFilter 通过 isProductIntegrated() 对其进行门控。该门控正是此工具所检查的前置条件。

注意: 此检测器确认的是前置条件,而非漏洞本身。POTENTIALLY_AFFECTED 结果并非确认存在漏洞的判定——更多信息请参见下文。

是否安全?

可以。它是为生产环境和评估用途而构建的。

  • 不会利用任何漏洞。探测会发送一个无效的 SSO 票据(1700000000000,一个足够久远的毫秒值,永远不可能存在于缓存中),因此绝不会恢复任何会话。服务器只是指示我们清除所发送的 cookie。
  • 不会改变目标状态。每个请求都是普通的 GET,受影响的唯一 cookie 是工具发送的一次性 cookie。
  • 不进行暴力破解或会话解析。该工具不会尝试可证明可利用性的主动时间戳票据解析;那是利用而非检测,不在本文讨论范围内(参见局限性)。

它能做什么,不能做什么

CVE-2026-11374 的补丁仅更改了票据的生成方式(从毫秒改为 UUID);并未改变此探测所触及的 cookie 重放路径。因此,对于任何未认证请求,已修补安装与易受攻击安装的响应逐字节完全相同。

该工具在未认证且非破坏性的条件下可以做到:

  • 确认可达的范围内产品已启用 CustomSSO cookie 重放路径(即已集成 AD360),这正是 CVE-2026-11374 的利用前置条件。
  • 通过各产品独有的会话 cookie 识别出四个产品中的具体某一个。
  • 尽力读取资产版本号作为提示。ADSelfService Plus、ADAudit Plus 和 M365 Manager Plus 可用;RecoveryManager Plus 不可用。

它无法做到:

  • 区分易受攻击与已修补。对此不存在安全、被动、未认证的信号。POTENTIALLY_AFFECTED 结果意味着前置条件已满足,您应去核实补丁级别,而非主机已被确认存在漏洞。
  • 确认可利用性。证明主机确实可利用,需要观察已签发票据的格式(13 位数字表示易受攻击,UUID 表示已修补,二者都需要经过认证或主机本地的可见性)、在本地读取 conf/product.conf,或主动解析实时票据(真正的利用行为,此处有意未实现)。
  • 完全信任低于修复版本的 ADSelfService Plus 版本号。ADSSP 的 ?build= 有时是真实版本,有时是一个读数低于修复版本的冻结占位符,因此低于修复版本的值含义不明确,工具会将其标记为无法确定。等于或高于修复版本的值仍然是可靠的已修补信号,因为占位符总是太低而无法达到该值。

环境要求

  • 需要 Python 3.7+ 和 requests 库。使用 pip install requests 安装。

使用方法

root@kitploit:~
# single host (prefer a URL or host:port; ports differ per product)
./cve_2026_11374_check.py https://adssp.example.com:8888

# multiple hosts (scheme optional: https is tried first, then http)
./cve_2026_11374_check.py host-a:8081 host-b:8365

# scan a list, one target per line ('#' comments allowed), compact output
./cve_2026_11374_check.py -f targets.txt --brief

# machine-readable output for pipelines
./cve_2026_11374_check.py -f targets.txt --json > results.json

各产品的默认端口不同(ADSelfService Plus 为 8888,ADAudit Plus 为 8081,M365 Manager Plus 为 8365,RecoveryManager Plus 为 8090),因此请传入 URL 或 host:port。裸主机默认使用 8888。

选项

示例

一个已集成 AD360 的控制台(详细输出,默认模式)。第二行明确指出这是前置条件而非存在漏洞的判定;第三行是尽力而为的版本提示:

root@kitploit:~
$ ./cve_2026_11374_check.py https://adssp.example.com:8888
[!] https://adssp.example.com:8888: POTENTIALLY_AFFECTED
      ADSelfService Plus: AD360-integrated, CustomSSO replay path active - precondition met. Not confirmed vulnerable; verify patch level (fixed build 6529).
      build: 6519 (below fixed 6529 - inconclusive: ?build= may be a stale placeholder or a hotfix)

同一产品的独立安装,重放路径未激活:

root@kitploit:~
$ ./cve_2026_11374_check.py https://adssp.example.com:8888
[+] https://adssp.example.com:8888: UNAFFECTED
      ADSelfService Plus: standalone / not AD360-integrated (no cleanup), so the replay path isn't reachable here. Verify build >= 6529 regardless.

使用 --brief 扫描列表,每个主机输出单行对齐结果。若任一主机为 POTENTIALLY_AFFECTED,退出状态为 1,否则为 0,这在脚本中非常方便。行尾注记显示识别出的产品,以及在阳性结果时的版本号:

root@kitploit:~
$ ./cve_2026_11374_check.py -f targets.txt --brief; echo "exit: $?"
POTENTIALLY_AFFECTED  https://host-a:8888  ADSelfService Plus 6519
POTENTIALLY_AFFECTED  http://host-b:8081   ADAudit Plus 8530
UNAFFECTED            http://host-c:8365   M365 Manager Plus
UNAFFECTED            https://host-d:443
INCONCLUSIVE          http://host-e:8888   ADSelfService Plus
ERROR                 host-f:8888  timeout
exit: 1

机器可读输出(--json)。每条结果包含 verdict、其背后的 state 和 detail、识别出的 product,以及(对于阳性结果)一个 build 对象:build 是发现的版本号,fixed_build 是该产品的修复阈值,patch_hint 是方向性判断(等于或高于修复版本为 likely_patched,否则为 inconclusive),note 是简短说明:

root@kitploit:~
$ ./cve_2026_11374_check.py https://host-b:8081 --json
[
  {
    "target": "https://host-b:8081",
    "state": "potentially_affected",
    "detail": "ADAudit Plus: AD360-integrated, CustomSSO replay path active - precondition met ...",
    "product": "ADAudit Plus",
    "build": { "build": "8530", "fixed_build": "8703", "patch_hint": "inconclusive", "note": "below fixed 8703 - inconclusive: may be a hotfix" },
    "verdict": "POTENTIALLY_AFFECTED"
  }
]

判定

退出代码

代码含义
0没有目标返回 POTENTIALLY_AFFECTED
1至少一个目标为 POTENTIALLY_AFFECTED
2用法错误(参数错误 / 目标文件不可读)

工作原理

向任意 CustomSSO URL(*.do)发送一个无效票据和一个应用标记:

root@kitploit:~
GET /AppsHome.do
Cookie: CUSTOM_SSO_TICKET=1700000000000; CUSTOM_SSO_APP_TAG_NAME=AD360

在已集成 AD360 的安装上,链路 ADSFilter → CustomSSOFilter → CookieSSOImpl 会执行其解析分支(标记指向不同的产品,因此 appName != prodName),解析虚假票据失败,并发出清理 cookie 的响应头:

root@kitploit:~
Set-Cookie: CUSTOM_SSO_TICKET=removed; Max-Age=0; ...
Set-Cookie: CUSTOM_SSO_APP_NAME=removed; Max-Age=0; ...
Set-Cookie: CUSTOM_SSO_APP_TAG_NAME=removed; Max-Age=0; ...

独立安装永远不会运行该路径,也不会发出清理。产品的识别依据是其固定的、各产品独有的 Tomcat 会话 cookie(ADSelfService Plus 为 JSESSIONIDADSSP,以此类推),该 cookie 在每次响应中都会设置。该检查以响应头而非状态码作为判断依据,因为已集成的 ADSSP 对同一探测返回 302,而 ADAudit、M365 和 RMP 返回 200。

局限性

  • POTENTIALLY_AFFECTED 并非“已确认存在漏洞”。它是利用前置条件。由于补丁没有触及此代码路径,已修补版本会做出完全相同的响应,因此您必须通过其他途径确认补丁级别(参见后续步骤)。这是未认证观察者所能获知的上限。
  • 不进行主动确认。该工具从不尝试解析真实的、当前时间的票据。该技术可以确证主机存在漏洞,但它属于主动利用(会劫持实时会话),受限速约束且具有概率性,还需要存在活动的受害者会话,因此不在本检测器范围内。
  • HTTP 400 可能是限速锁定而非真实答案。Zoho IAM 实施了 URL 滚动限速,将来源 IP 限制为每 60 秒约 40 个请求,随后将该路径锁定约 60 秒。锁定期间,请求返回 HTTP 400,集成信号被掩盖。工具将此类情况报告为 INCONCLUSIVE;请约一分钟后从该 IP 重试。
  • 在反向代理后面,剥离或重写会话 cookie 的控制台可能被误报为 UNAFFECTED。如果您预期那里是 ManageEngine 产品,请直接确认。
  • 版本号是提示而非判定。ADAudit(?v=)和 M365(?bN=)始终暴露真实版本;ADSSP 的 ?build= 有时是真实的,有时是一个读数低于修复版本的冻结占位符,因此低于修复版本的 ADSSP 值含义不明确;RMP 不暴露任何版本。在所有情况下,等于或高于修复版本的版本号都强烈表明已修补,低于则无法确定。

给防御方的后续步骤

如果目标返回 POTENTIALLY_AFFECTED,请将其视为已暴露并值得确认,然后:

  1. 直接确认补丁级别(工具无法做到)。在主机上读取 conf/product.conf(build_number),并与该产品的修复版本对比(ADSelfService Plus 6529、RecoveryManager Plus 6321、M365 Manager Plus 4817、ADAudit Plus 8703)。按方向性解读:等于或高于修复版本的版本号是主机已修补的有力指标,因为 UUID 修复就在该版本分支中。低于修复版本的版本号属于无法确定,而非存在漏洞的证明,因为带外热修复和后向移植可以在不提升版本号的情况下应用 UUID 修复;在这种情况下,请改用下方的票据格式检查。

  2. 如果可以登录,请检查已签发票据的格式。CUSTOM_SSO_TICKET cookie 不是 HttpOnly,因此认证后您可以读取其值:13 位数字表示存在漏洞,UUID 表示已修补。这是最明确的肯定性检查。

  3. 对所有存在漏洞或无法确认已修补的主机,更新到修复版本(或更高版本)。该修复用随机 UUID 替换了可预测的票据。

  4. 搜寻利用尝试。在主机上,serverOut_<date>.txt 将限速记录为如下突发序列:

    root@kitploit:~
    IAMSecurityException ErrorCode: URL_ROLLING_THROTTLES_LIMIT_EXCEEDED,
    RequestURI: "/showLogin.cc", RemoteAddr: <source IP>
    

    来自单个来源 IP 的 SSO/登录分发路径上出现 URL_ROLLING_THROTTLES_LIMIT_EXCEEDED 激增,是票据暴力破解的有力指标。同时请审查近期成功登录和会话活动,寻找被接管的迹象。

  5. 同时降低暴露面。限制对 AD360 套件的网络访问(不应面向互联网),如果不需要重放路径,禁用 CustomSSO 集成即可完全消除该前置条件。

修复措施

将受影响产品更新到至少修复版本(ADSelfService Plus 6529、RecoveryManager Plus 6321、M365 Manager Plus 4817、ADAudit Plus 8703)或更高版本。该修复用 UUID.randomUUID() 替换了可预测的 System.currentTimeMillis() SSO 票据。

许可证

此代码根据 MIT 许可证 分发。

法律免责声明

未经事先双方同意而使用本工具攻击目标属违法行为。遵守所有适用的地方、州和联邦法律是最终用户的责任。开发人员不承担任何责任,也不对本程序造成的任何滥用或损害负责。

另请参阅

  • NVD:CVE-2026-11374
  • ManageEngine 服务包: ADSelfService Plus · RecoveryManager Plus · M365 Manager Plus · ADAudit Plus
  • Bishop Fox 博客:完整技术分析
下载工具
选项说明
targets一个或多个 host、host:port 或 https://host:port
-f, --targets-file FILE从文件读取目标(每行一个;支持 # 注释)
--brief每个目标输出单行对齐结果,适合扫描大量主机
--json输出结构化的 JSON 结果
--timeout SECS单请求超时时间(默认:15)
--no-build在阳性结果时跳过额外的版本号请求
--no-color禁用彩色输出(同时遵循 NO_COLOR 和非 TTY 环境)
判定含义
POTENTIALLY_AFFECTED范围内产品且已集成 AD360;CustomSSO cookie 重放路径已激活,因此满足 CVE-2026-11374 的利用前置条件。这不是确认存在漏洞的判定;请核实补丁级别(参见后续步骤)。
UNAFFECTED重放路径不可达。可能属于以下任一情况:独立安装的范围内产品(未集成 AD360——不过如果日后集成,该路径将变得可达,因此无论如何请核实版本);不属于四个范围内产品的 ManageEngine ADS 框架产品;或者响应中根本没有范围内产品(不是 CVE-2026-11374 涉及的四个产品之一,或是剥离了会话 cookie 的代理)。
INCONCLUSIVE返回 HTTP 400——很可能是 IAM 限速锁定掩盖了信号;约 60 秒后重试。
ERROR连接/超时/TLS 失败。
探测响应判定
清理响应头 + 已知范围内产品 cookiePOTENTIALLY_AFFECTED
有产品 cookie、无清理,状态 ≠ 400UNAFFECTED(独立安装 / 未集成)
无范围内产品 cookie,状态 ≠ 400UNAFFECTED(不是四个产品之一)
有清理响应头但产品 cookie 无法识别UNAFFECTED(ManageEngine,但不在范围内)
HTTP 400INCONCLUSIVE(很可能是 IAM 限速锁定;参见局限性)