
Вторая CVE — снова удалённое выполнение кода
CVE-2026-35196 · Chamilo LMS · Внедрение команд ОС → RCE
Исследователь: K
Тип раскрытия: Ответственное раскрытие
Статус: Исправлено Затронутый продукт: Chamilo LMS< 2.0(подтверждено наv1.11.32)
Критическая уязвимость внедрения команд ОС существует в действии export_all_certificates файла main/inc/ajax/gradebook.ajax.php в Chamilo LMS v1.11.32.
Приложение получает код курса через api_get_course_id(), который читает значение напрямую из $_SESSION['_cid']. Это значение, полученное из сессии, конкатенируется без санитизации в вызов shell_exec() — без escapeshellarg(), без проверки по белому списку, без контроля типов.
Злоумышленник, способный манипулировать или отравить переменную _cid своей сессии (через отравление сессии, цепочки IDOR или другие примитивы манипуляции сессией), может внедрить произвольные метасимволы оболочки и добиться полного удалённого выполнения кода от имени пользователя веб-сервера (www-data).
Уязвимый файл: main/inc/ajax/gradebook.ajax.php
Уязвимая функция: export_all_certificates
Когда пользователь запускает действие export_all_certificates, скрипт пытается запустить фоновый процесс для обработки сертификатов:
$courseCode = api_get_course_id(); // Retrieves the value from $_SESSION['_cid']
$sessionId = api_get_session_id();
// ...
$commandScript = api_get_path(SYS_CODE_PATH).'gradebook/cli/export_all_certificates.php';
$userList = implode(',', $userList);
// Flaw: Variables like $courseCode are passed directly to the shell without escapeshellarg()
shell_exec("php $commandScript $courseCode $sessionId $categoryId $userList > /dev/null &");
Поскольку приложение неявно доверяет содержимому переменных сессии и не экранирует их должным образом перед передачей системной оболочке, злоумышленник с изменённой сессией может добавлять и выполнять вредоносные команды. Например, если _cid содержит "; touch /tmp/remote_code_by_k; #", команда, интерпретируемая оболочкой bash/sh, становится:
php /var/www/chamilo/main/gradebook/cli/export_all_certificates.php ; touch /tmp/remote_code_by_k; # ... > /dev/null &
Оболочка выполняет CLI-скрипт, затем внедрённую полезную нагрузку и игнорирует остальную часть исходной командной строки.
$_SESSION['_cid']. Этого можно достичь, скомбинировав данную уязвимость с уязвимостью отравления сессии или изменив значение кода курса через IDOR или небезопасную обработку параметров в другом месте приложения, чтобы обновить контекст своей сессии._cid в значение: "; [MALICIOUS_COMMAND]; #"GET-запрос на: /main/inc/ajax/gradebook.ajax.php?a=export_all_certificates&cat_id=1 с отравленной cookie сессии.www-data).escapeshellarg(): Оборачивайте все переменные, полученные от пользователя (например, $courseCode, $sessionId и $userList), в PHP-функцию escapeshellarg() перед передачей в shell_exec(), чтобы нейтрализовать произвольные метасимволы ОС.$_SESSION['_cid']), строго типизированы и санитизированы, чтобы потенциальные атаки «отравления сессии» или цепочки IDOR блокировались на входе.www-data) с ограниченными правами на запись в файловой системе и ограничьте доступ приложения только необходимыми исполняемыми файлами оболочки Linux, чтобы снизить возможности пост-эксплуатации.Handle : K
GitHub : https://github.com/kx00007
Focus : Server-Side Vulnerability RCE, CVE Hunting, Vulnerability Research, Exploit Development
Prior : CVE-2026-29041 (Chamilo LMS — Authenticated RCE via File Upload)
⚡Постарайся сильнее.
| Поле | Сведения |
|---|
| Продукт | Chamilo LMS |
| Затронутая версия | < 2.0 (подтверждено на v1.11.32) |
| Уязвимость | Внедрение команд ОС |
| CWE | CWE-78 — Некорректная нейтрализация специальных элементов, используемых в команде ОС |
| Оценка CVSSv3.1 | 8.8 (ВЫСОКАЯ) |
| Вектор | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Требуется аутентификация | Да (любой аутентифицированный пользователь с отравленной сессией) |
| Тип эксплуатации | Аутентифицированное удалённое выполнение кода |
| Уязвимый файл | main/inc/ajax/gradebook.ajax.php |
| Аспект | Воздействие |
|---|
| Конфиденциальность | Полный доступ на чтение — исходный код, конфигурации, учётные данные БД, /etc/passwd |
| Целостность | Произвольная запись файлов, развёртывание веб-шелла, манипуляция базой данных |
| Доступность | Нарушение работы сервиса, уничтожение файловой системы, развёртывание программ-вымогателей |
| Область воздействия | Процесс веб-сервера (www-data); потенциальное боковое перемещение из-за раскрытия учётных данных |
| Компонент | Сведения |
|---|
| ОС | Ubuntu Server (Docker) |
| Веб-сервер | Apache / Nginx |
| PHP | 7.x / 8.x |
| Приложение | Chamilo LMS v1.11.32-v2.0 |
| Оболочка | /bin/sh → bash |