
Лабораторная валидация CVE-2026-48908 в Joomla SP Page Builder, охватывающая несанкционированную загрузку иконок, запись PHP-файлов, выполнение кода от имени www-data, доказательства из auditd и PCAP, реконструкцию временной шкалы событий и рекомендации для обнаружения в SOC. Включает доклады на польском и английском языках.
Лабораторная валидация CVE-2026-48908 в компоненте Joomla SP Page Builder, ориентированная на технические доказательства, реконструкцию событий и возможности защитного обнаружения.
В репозитории документируется контролируемый тест, в котором эндпоинт asset.uploadCustomIcon компонента SP Page Builder принимал загружаемые архивы иконок, что приводило к записи PHP-артефактов в каталог медиа Joomla. Вызов загруженного PHP-файла по HTTP приводил к выполнению команд от имени пользователя процесса веб-сервера. Результирующая HTTP, файловая, процессная, аутентификационная и сетевая активность была зафиксирована с помощью логов контейнера Apache, Linux auditd, tcpdump, телеметрии Docker, опроса изменений файлов и скриншотов с хоста Windows.
[!IMPORTANT] Этот репозиторий содержит только отчеты и скриншоты. Эксплойт-код, исходный код полезной нагрузки, сырые файлы PCAP и сырые пакеты данных с хоста намеренно не включены. Материал предназначен для валидации уязвимости, инженерии SOC, разработки обнаружения, подготовки к реагированию на инциденты и авторизованных исследований.
Оба отчета содержат полную методологию тестирования, выдержки из доказательств, временную шкалу событий, доказательства изменений файлов, сетевые индикаторы, рекомендации по устранению, рекомендации по аудиту и пример логики SIEM.
.
├── README.md
├── SHA256SUMS.txt
├── reports/
│ ├── CVE-2026-48908_SP_Page_Builder_detection_EN.pdf
│ └── CVE-2026-48908_SP_Page_Builder_detection_PL.pdf
└── screenshots/
├── 01_poc_upload_and_code_execution.png
├── 02_http_whoami_www_data.png
├── 03_tcp_callback_ncat.png
├── 04_reverse_shell_session.png
└── 05_root_access_and_su_failure_redacted.png
Исходный код эксплойта, исходный код полезной нагрузки, сырые файлы PCAP, сырые пакеты Docker-данных или исходные файлы DOCX не включены.
Корневой веб-каталог Joomla /var/www/html был подкреплён томом Docker joomla5-builders_joomla_data. Это важно для обнаружения: docker diff не предоставлял детальной видимости изменений файлов внутри тома, поэтому мониторинг файлов должен был полагаться на списки файлов с учётом томов и рекомендации по мониторингу на стороне хоста.
Тест был выполнен в изолированной и авторизованной лабораторной среде. Валидация охватила следующую последовательность:
asset.uploadCustomIcon принимал загружаемые архивы иконок в лабораторной среде./media/com_sppagebuilder/assets/iconfont/ были созданы новые каталоги и файлы..htaccess, изменяющий обработку PHP для расширения .PHP./root и переключения пользователя с помощью su - завершились неудачей.Отчеты намеренно документируют доказательства и логику обнаружения без распространения повторно используемого эксплойта или реализации полезной нагрузки.
Лабораторный тест подтвердил:
asset.uploadCustomIcon;.htaccess в каталоге медиа Joomla;www-data;Внутри контейнера действующая идентификационная информация была:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
Неудачная попытка повышения привилегий была видна как:
cd root
bash: cd: root: Permission denied
su -
Password:
su: Authentication failure
Публичный PoC протестировал несколько вариантов расширений и подтвердил, что комбинация расширения PHP в смешанном регистре и .htaccess может привести к выполнению в лабораторной установке.

Контролируемый HTTP-запрос выполнил whoami, и браузер отобразил действующего пользователя процесса.

Перед интерактивным тестом для подтверждения исходящего соединения из целевой среды на хост Windows через TCP-порт 4444 использовался более безопасный одноразовый обратный вызов.

Интерактивная сессия подтвердила выполнение от имени www-data, Linux в качестве операционной системы и рабочий каталог в пути медиа Joomla SP Page Builder.

Попытки доступа к /root и аутентификации с помощью su - завершились неудачей. Скриншот отредактирован, чтобы не публиковать тестовый пароль.

Полная временная шкала доступна в обоих PDF-отчётах. Наиболее важные события:
На хосте жертвы было собрано:
auditd для execve;tcpdump;Тест также выявил ограничение мониторинга: поскольку /var/www/html был подкреплён томом Docker, команда docker diff не показывала детального создания файлов в /var/www/html/media/com_sppagebuilder/assets/iconfont/. Поэтому мониторинг целостности файлов должен охватывать реальный путь хоста, на котором расположен том.
Доказательства с хоста Windows были намеренно ограничены релевантными скриншотами:
whoami;/root и su - с отредактированным паролем.Мониторинг HTTP, обратного прокси, WAF или сетевой телеметрии на следующую комбинацию:
POST /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon
User-Agent содержит: sppb-rce-poc
Статус: 200, 201 или 204
В производственной среде не полагайтесь только на User-Agent публичного PoC. Эндпоинт и неожиданный паттерн загрузки являются более стабильными индикаторами, чем значение User-Agent.
.htaccess в пути иконок SP Page BuilderМониторинг файловой телеметрии на новые или изменённые файлы, соответствующие:
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.php
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.PHP
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.pHp
/media/com_sppagebuilder/assets/iconfont/*/fonts/*.Php
/media/com_sppagebuilder/assets/iconfont/*/fonts/.htaccess
Наличие .htaccess, содержащего AddType application/x-httpd-php .PHP в каталоге загрузки медиа, является индикатором высокого приоритета.
Коррелируйте активность загрузки с последующими HTTP-запросами к путям, подобным:
/media/com_sppagebuilder/assets/iconfont/*/fonts/*
Более высокая уверенность достигается, когда запрос нацелен на расширение, похожее на PHP, и включает такие параметры, как t= и c=.
Индикаторы процессов высокого приоритета включают:
пользователь: www-data, apache или nginx
процесс: bash, sh, dash или php
командная строка содержит: /dev/tcp, bash -i, операторы перенаправления или необычное выполнение интерпретатора
Срабатывайте, когда оболочка или интерпретатор, запущенные процессом веб-сервера, инициируют исходящее соединение с рабочей станцией или необычным портом назначения. В лабораторном тесте использовался TCP-порт 4444, но производственное обнаружение не должно зависеть от одного порта.
Тест показал неудачную попытку su -. Мониторинг вспомогательных средств аутентификации, таких как unix_chkpwd, записей в /var/log/btmp и интерактивных команд после компрометации учётной записи веб-службы.
При обнаружении индикатора HTTP-загрузки SOC должен немедленно скоррелировать его с:
/media/com_sppagebuilder/assets/iconfont/;.htaccess в каталогах медиа Joomla;t= и c=;whoami, id, uname, hostname, pwd, ip, ifconfig, netstat или ss;Одного события загрузки часто недостаточно. Самый сильный сигнал тревоги объединяет загрузку, создание файла, доступ к файлу, выполнение процесса и исходящую сетевую телеметрию в одном коротком временном окне.
/media/com_sppagebuilder/assets/iconfont/ и более широкий каталог медиа Joomla на наличие файлов, похожих на PHP, и артефактов .htaccess..htaccess, .phtml, .phar, архивов или исполняемых файлов из каталогов загрузки.asset.uploadCustomIcon из ненадёжных сетей.docker diff для мониторинга корневого веб-каталога, когда данные приложения хранятся в томах Docker или bind-монтированиях.www-data; повышение привилегий до root не было подтверждено.Этот материал предоставлен для исследований в области оборонительной безопасности, управления уязвимостями, разработки обнаружения, подготовки к реагированию на инциденты и авторизованного тестирования. Не используйте его против систем без явного разрешения.
| Роль | Система |
|---|
| Хост жертвы | Ubuntu 24.04.4 LTS, kernel 6.17.0-35-generic, Docker Engine 29.5.3 |
| Целевое приложение | Joomla 5.4.7, PHP 8.3.32, Apache HTTP Server, image joomla:5-php8.3-apache |
| Компонент | JoomShaper SP Page Builder |
| Контейнер | joomla5-builders |
| Рабочая станция атакующего | Microsoft Windows 11 Home 10.0.26200 |
| Сервис Joomla | http://172.20.10.3:8080 |
| Тестовый адрес Windows | 172.20.10.2 |
| Адрес контейнера | 172.21.0.3 |
| Дата теста | 9 июля 2026 г. |
| UTC | Событие |
|---|
| 19:33:56 | Запуск аудита Linux, tcpdump, событий Docker и опроса изменений файлов |
| 19:34:23 | Серия POST-запросов к /index.php?option=com_sppagebuilder&task=asset.uploadCustomIcon |
| 19:34:23.291 | GET к загруженному файлу .PHP с контролируемой арифметической командой |
| 19:34:23.329 | GET к загруженному файлу .pHp с контролируемой арифметической командой |
| 19:34:23.361 | GET к загруженному файлу .Php с контролируемой арифметической командой |
| 19:34:23.398 | GET к финальному артефакту .PHP с контролируемой арифметической командой |
| 19:34:23.411 | Публичный PoC выполнил id через загруженный PHP-артефакт и получил HTTP 200 |
| 19:35:05 | Ручной запрос whoami вернул www-data |
| 19:35:27 | Одноразовый TCP-обратный вызов на 172.20.10.2:4444 успешен |
| 19:35:59 | HTTP-запрос инициировал обратное TCP-соединение на 172.20.10.2:4444 |
| 19:36:22-19:36:31 | whoami, uname, id и pwd подтвердили контекст выполнения |
| 19:37:13 | cd root вернул Permission denied |
| 19:37:21-19:37:28 | Попытка su - завершилась с Authentication failure |
| 19:39:25 | Сбор данных аудита остановлен, артефакты упакованы |