












说实话,共享主机又出事了。这次是 cPanel:一个持有合法 cPanel 账户的租户,只要能用"域停放"或"附加域"功能,就能在服务器上创建任意文件——然后以 root 身份执行代码,拿到整台服务器的控制权。
8 月 27 日,cPanel 发布安全更新,覆盖所有受支持分支。官方公告的原话我引用一下,一字不差:
"an authenticated account holder who can add parked or addon domains can create arbitrary files on the server"
翻译过来:一个能添加停放域或附加域的认证账户,可以在服务器上创建任意文件。
而最终后果,公告同样说得很直白:code execution as the root user——root 级代码执行,服务器全盘沦陷。
一个"加个域名"的功能,一路通向 root。这是今年 cPanel 的第二次了——上回是 7 月底的数据库重命名(CVE-2026-58048)。上次的钥匙是"解析状态丢失",这次的钥匙看起来是"任意文件写"。
拆开看。
先搞清楚受害功能长什么样。
共享主机上,一个 cPanel 账户可以有多个域名,分几种角色:
主域:开户时绑定的域名,对应账户的主文档根目录(通常public_html)。
停放域(parked domain):一个"别名"。访问停放域和访问主域看到的是同一个网站,文档根目录共用,DNS 解析过去就行,不需要新内容。
附加域(addon domain):一个"新站点"。它有自己独立的文档根目录(通常public_html/<域名>),有自己的文件、数据库和配置。
对用户来说,这两个功能的界面操作都很简单:填一个域名,点添加。域名归属验证一下,cPanel 就替你完成后续一切。
问题就出在"后续一切"上。
用户看到的是一个表单,系统看到的是几十个文件的写入——界面越简单,后台替你做的文件操作就越多。
添加停放域或附加域时,cPanel 后端实际做的工作,大致是这么一串(这部分是 cPanel 公开的机制,不是漏洞细节):
校验域名格式和归属(用户可控输入的第一道闸)。
写账户的域配置文件:/var/cpanel/userdata/<用户>/<域名>,一个 YAML 文件,记录文档根目录、serveralias、域名角色(parked / addon)等。
重建 Apache 虚拟主机配置:cPanel 会重新生成 httpd 的 vhost 段,这一步以 root 身份运行(root 属主的配置重建脚本)。
写 DNS zone 文件,把域名指过来。
刷新一堆缓存:domainlist、httpd 配置缓存、服务重启。
注意到没有:第 2、3 步,用户可控的输入(域名),被写进了 root 进程会读取和执行的配置文件。域名在这里不只是"域名",它成了文件路径的一部分、文件内容的一部分。
cPanel 的整个体系就是建立在这种模式上的:租户的输入,经过后台 root 进程处理,落到服务器的配置文件里。这套模式没问题,前提是——输入的每一处都经过严格校验。
域名的角色决定了漏洞的形状:它既是路径片段,又是配置内容,还是 DNS 记录——三个不同的解析上下文,三种不同的校验规则。
关于这个漏洞本身,官方公告透露的细节其实很少:漏洞类型是任意文件写(arbitrary file write),触发点在停放域/附加域的添加流程,影响所有受支持版本。
"输入 → 任意文件写"之间的具体机关,官方没公开——CVE 记录在 8 月 28 日核查时甚至还没发布到公开库。我能做的是基于公开机制,把可能的路子摆出来,标注清楚:以下是我基于 cPanel 公开机制的分析推演,不是官方确认的漏洞细节。
候选路径一:路径穿越类。如果域名在被当作路径片段使用之前没有严格白名单校验(合法域名只该有字母、数字、连字符、点),攻击者可以用特殊字符
已在FreeBuf发表 0 篇文章
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。