
cve-2026-48907 scanner
Автономный сканер в одном файле для Joomla! JCE Editor < 2.9.99.5 — неаутентифицированное удалённое выполнение кода (CVE-2026-48907)
Автор: Alma
[!CAUTION]
🚨 ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ — ПРОЧТИТЕ ПЕРЕД ИСПОЛЬЗОВАНИЕМ
ЭТО ИНСТРУМЕНТ ДЛЯ ПРОВЕДЕНИЯ ИНТРУЗИВНЫХ ТЕСТОВ БЕЗОПАСНОСТИ.
ДАННЫЙ ИНСТРУМЕНТ ПРЕДНАЗНАЧЕН ТОЛЬКО ДЛЯ АВТОРИЗОВАННЫХ ОЦЕНОК БЕЗОПАСНОСТИ.
Сканирование систем, которыми вы НЕ владеете или на которые НЕ ИМЕЕТЕ ПИСЬМЕННОГО РАЗРЕШЕНИЯ, является НЕЗАКОННЫМ в большинстве юрисдикций.
Автор (Hussein Mohamed masta ghimau) НЕ НЕСЁТ НИКАКОЙ ответственности за любое неправомерное использование, ущерб, судебные разбирательства или потерю данных, возникшие в результате использования данного инструмента.
Запуская этот сканер, вы соглашаетесь с тем, что:
- Вы будете сканировать только те активы, которыми ВЛАДЕЕТЕ или на сканирование которых имеете ЯВНОЕ ПИСЬМЕННОЕ РАЗРЕШЕНИЕ.
- Вы понимаете, что в рамках интрузивной проверки точности на целевой сервер загружается безвредный PoC-файл PHP.
- Вы вручную удалите каждый загруженный PoC-файл сразу после использования.
- ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК.
[!IMPORTANT] Почему «интрузивность» важна для точности: Чтобы достичь максимально возможной уверенности и исключить ложные срабатывания, данный инструмент выполняет проверку с активной математической верификацией. Он загружает безопасную строку PoC на PHP, а затем подтверждает удалённое выполнение кода, сверяя точный вычисленный математический результат, возвращаемый сервером. Неинтрузивные сканеры, которые только считывают строки версий, могут пропустить обратно портированные исправления или пользовательские «горячие» заплатки. Этот инструмент проверяет, что уязвимость действительно существует. Поэтому он интрузивен по своей конструкции — используйте его с умом и при полной авторизации.
masta-cve-2026-48907.py — это полностью оригинальный, однофайловый сканер на Python, предназначенный для обнаружения CVE-2026-48907 в экземплярах Joomla!, использующих компонент JCE Editor версий ниже 2.9.99.5.
requests/httpx..py файл, который можно разместить где угодно.openpyxl или rich, но выглядит великолепно, когда они установлены.ThreadPoolExecutor..xlsx) с условной раскраской.openpyxl для отчётов Excelrich для красивых карточек в терминалеВсё остальное — из стандартной библиотеки Python (urllib, http.cookiejar, argparse, threading и т. д.).
# 1. Клонируйте репозиторий
git clone https://github.com/YOUR_USERNAME/masta-cve-2026-48907.git
cd masta-cve-2026-48907
# 2. (Опционально, но рекомендуется) установите дополнительные зависимости
pip install -r requirements.txt
Вы также можете запустить скрипт напрямую без установки чего-либо (только вывод в терминал, без Excel):
python masta-cve-2026-48907.py -u https://target.com
python masta-cve-2026-48907.py -u https://target.com/joomla
python masta-cve-2026-48907.py -l targets.txt -t 10
python masta-cve-2026-48907.py -u https://target.com -p http://127.0.0.1:8080
python masta-cve-2026-48907.py -h
-u URL URL одиночной цели
-l FILE Файл, содержащий URL (по одному на строку)
-o OUTPUT Пользовательский путь для выходного файла Excel
-t THREADS Количество одновременных потоков (по умолчанию: 5)
-p PROXY URL прокси (например, http://127.0.0.1:8080)
--timeout N Таймаут запроса в секундах (по умолчанию: 12)
--verify-ssl Включить проверку SSL-сертификата (по умолчанию: выключено)
-v, --verbose Показывать подробные карточки результатов для каждой цели во время сканирования
-d, --debug Показывать внутренние трассировки HTTP-запросов
--no-color Отключить цветной вывод в терминале
Ниже представлена полная логика сканирования от входных данных до финального отчёта.
flowchart TD
A[User provides -u URL or -l FILE] --> B[Normalize & deduplicate targets]
B --> C[Launch ThreadPoolExecutor]
C --> D[For each target]
D --> E1[probe_joomla<br/>GET /, meta, manifest,<br/>static assets, README]
E1 --> F1{Joomla! detected?}
F1 -- No --> R1[Status: NOT_JOOMLA]
F1 -- Yes --> E2[probe_jce<br/>GET jce.xml, endpoints,<br/>JCE-specific markers]
E2 --> F2{JCE detected?}
F2 -- No --> R2[Status: SAFE<br/>JCE not installed]
F2 -- Yes --> F3{Version >= 2.9.99.5?}
F3 -- Yes --> R3[Status: PATCHED]
F3 -- No --> E3[extract_csrf<br/>Parse Joomla! CSRF token]
E3 --> F4{Token found?}
F4 -- No --> R4[Status: PATCHED<br/>CSRF missing → likely hardened]
F4 -- Yes --> E5[Build math-verifier payload<br/>masta-cve-2026-48907-poc ...]
E5 --> E6[Vector 1: Multipart POST<br/>profile_file upload to tmp/]
E6 --> F5{HTTP 200?}
F5 -- Yes --> E7["GET /tmp/masta-{rand}.xml.php"]
E7 --> F6{Body contains<br/>MATHOK:3105:END ?}
F6 -- Yes --> R5[Status: VULNERABLE<br/>Confidence: CONFIRMED]
F6 -- No --> E8[Vector 2: Browser chain<br/>upload + rename via RPC]
E8 --> F7{RCE confirmed?}
F7 -- Yes --> R5
F7 -- No --> E9[Check for WAF block page]
E9 --> F8{WAF detected?}
F8 -- Yes --> R6[Status: BLOCKED_BY_WAF]
F8 -- No --> R7[Status: SAFE]
F5 -- No --> E8
R1 --> S[Append result to Excel + Terminal card]
R2 --> S
R3 --> S
R4 --> S
R5 --> S
R6 --> S
R7 --> S
S --> D
D --> T[Print Summary Dashboard]
T --> U[Save Excel Report to reports/]
U --> V[Print cleanup reminder for<br/>all uploaded POC files]
style R5 fill:#ff0000,stroke:#333,color:#fff
style R3 fill:#32CD32,stroke:#333,color:#000
style R6 fill:#FFD700,stroke:#333,color:#000
Замените изображение ниже на ваш реальный скриншот терминала.
Заглушка скриншота терминала
Замените изображение ниже на ваш реальный скриншот отчёта Excel.
Заглушка скриншота отчёта Excel
Совет: Запустите сканер на локальном тестовом экземпляре Joomla!, чтобы создать реальные скриншоты. Поместите их в папку assets/, и они будут автоматически отображаться на GitHub.
Этот сканер загружает безвредный PHP-подтверждение концепции на целевой сервер для подтверждения уязвимости. Инструмент всегда выводит напоминание в конце сканирования со списком всех загруженных файлов. Вы должны вручную удалить их после тестирования. Эти файлы называются masta-{random}.xml.php или подобным образом и содержат строку с явным указанием авторства:
masta-cve-2026-48907-poc. This test is done as part of Security Assessment - masta ghimau.
Используя данное программное обеспечение, вы принимаете на себя полную ответственность за свои действия. Код предоставляется «как есть», без каких-либо гарантий. Если вы не понимаете последствий запуска интрузивного сканера проверки RCE, не используйте этот инструмент.
🛡 Используйте его для защиты своих собственных активов. Не для нанесения вреда другим.
| Функция | Описание |
|---|
| 🔍 Многоисточниковая идентификация | Обнаруживает Joomla! и JCE через мета-теги, манифесты, статические ресурсы, языковые файлы и специфичные для JCE конечные точки |
| 🛡 Обнаружение WAF | Определяет блокировки Cloudflare, Incapsula, Sucuri и ModSecurity |
| 🧪 Безопасный интрузивный PoC | Загружает безвредный математический верификатор на PHP (с указанием авторства и явной пометкой для удаления) |
| 📊 Карточный интерфейс терминала | Богатые Panel + Table из библиотеки Rich (или ANSI-запасной вариант) для каждой цели |
| 📁 Отчёт Excel | Автоматически генерируемый .xlsx с заголовками, закреплёнными областями, шириной столбцов и цветовой кодировкой ячеек статуса |
| ⚙️ Поддержка прокси | Маршрутизация всего трафика через Burp / ZAP / любой HTTP-прокси |
| 🧵 Многопоточность | Настраиваемое количество рабочих потоков для массовых списков |
| Статус | Значение | Уверенность |
|---|
| VULNERABLE | Полезная нагрузка PHP выполнена, математическое подтверждение проверено. RCE реально. | CONFIRMED |
| VULNERABLE_UPLOAD_ONLY | Файл успешно загружен, но выполнение PHP было заблокировано. Уязвимость существует, но RCE не подтверждено. | HIGH |
| PATCHED | Joomla! / JCE обнаружены, версия >= 2.9.99.5, или CSRF усилен. | HIGH / MEDIUM |
| SAFE | JCE не установлен, или векторы эксплуатации не сработали (вероятно, исправлено/усилено). | HIGH |
| BLOCKED_BY_WAF | Межсетевой экран веб-приложений (WAF) заблокировал тест. | LOW |
| NOT_JOOMLA | Цель, по-видимому, не является сайтом на Joomla!. | CERTAIN |
| ERROR | Сетевая ошибка / ошибка подключения / необработанное исключение. | LOW |