Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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 的检测脚本

查看仓库
11342个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

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 安装。

使用方法

# 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。

选项

选项说明
targets一个或多个 host、host:port 或 https://host:port
-f, --targets-file FILE从文件读取目标(每行一个;支持 # 注释)
--brief每个目标输出单行对齐结果,适合扫描大量主机
--json输出结构化的 JSON 结果
--timeout SECS单请求超时时间(默认:15)
--no-build在阳性结果时跳过额外的版本号请求
--no-color禁用彩色输出(同时遵循 NO_COLOR 和非 TTY 环境)

示例

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

$ ./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)

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

$ ./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,这在脚本中非常方便。行尾注记显示识别出的产品,以及在阳性结果时的版本号:

$ ./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 是简短说明:

$ ./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"
  }
]

判定

判定含义
POTENTIALLY_AFFECTED范围内产品且已集成 AD360;CustomSSO cookie 重放路径已激活,因此满足 CVE-2026-11374 的利用前置条件。这不是确认存在漏洞的判定;请核实补丁级别(参见后续步骤)。
UNAFFECTED重放路径不可达。可能属于以下任一情况:独立安装的范围内产品(未集成 AD360——不过如果日后集成,该路径将变得可达,因此无论如何请核实版本);不属于四个范围内产品的 ManageEngine ADS 框架产品;或者响应中根本没有范围内产品(不是 CVE-2026-11374 涉及的四个产品之一,或是剥离了会话 cookie 的代理)。
INCONCLUSIVE返回 HTTP 400——很可能是 IAM 限速锁定掩盖了信号;约 60 秒后重试。
ERROR连接/超时/TLS 失败。

退出代码

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

工作原理

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

GET /AppsHome.do
Cookie: CUSTOM_SSO_TICKET=1700000000000; CUSTOM_SSO_APP_TAG_NAME=AD360

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

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。

探测响应判定
清理响应头 + 已知范围内产品 cookiePOTENTIALLY_AFFECTED
有产品 cookie、无清理,状态 ≠ 400UNAFFECTED(独立安装 / 未集成)
无范围内产品 cookie,状态 ≠ 400UNAFFECTED(不是四个产品之一)
有清理响应头但产品 cookie 无法识别UNAFFECTED(ManageEngine,但不在范围内)
HTTP 400INCONCLUSIVE(很可能是 IAM 限速锁定;参见局限性)

局限性

  • 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 将限速记录为如下突发序列:

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

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

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

修复措施

下载工具