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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-90907 — Python CLI, который обнаруживает и эксплуатирует CVE-2026-90907 — обход авторизации в Joomla! com_users, позволяющий создавать учётные записи без аутентификации; неразрушающий режим проверки плюс PoC. | Kitploit
Инструменты/GitHubGitHub/aorozco-sys/cve-2026-90907
Аутентификация и авторизацияСканеры уязвимостейАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на Проникновение
GitHubaorozco-sys/cve-2026-90907

CVE-2026-90907

Python CLI, который обнаруживает и эксплуатирует CVE-2026-90907 — обход авторизации в Joomla! com_users, позволяющий создавать учётные записи без аутентификации; неразрушающий режим проверки плюс PoC.

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

Популярное

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

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

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

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

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

CVE-2026-90907 — несанкционированное создание учётных записей пользователей в Joomla! CMS

Python Severity Fixed

ТОЛЬКО ДЛЯ АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ БЕЗОПАСНОСТИ. Запуск режима эксплуатации против систем, которыми вы не владеете или на тестирование которых у вас нет явного письменного разрешения, является незаконным. Режим по умолчанию (CHECK) неразрушающий и ничего не создаёт.

CLI-инструмент, который обнаруживает и (опционально, с флагом -U) эксплуатирует CVE-2026-90907 — уязвимость обхода авторизации средней степени опасности (CVSS 6.9) в ядре Joomla! CMS, позволяющую неаутентифицированному удалённому злоумышленнику инициировать несанкционированное создание учётной записи пользователя через контроллер com_users → profile.save — даже когда публичная регистрация отключена в глобальной конфигурации.

Сводка уязвимости

ПолеЗначение
CVE IDCVE-2026-90907
Степень опасностиСредняя — CVSS 6.9
ТипОбход авторизации / некорректный контроль доступа (CWE-862)
КомпонентКомпонент com_users, задача profile.save
Вектор атакиУдалённый, неаутентифицированный, двухшаговый POST в рамках одной сессии
Исправлено вJoomla! 5.4.9 и 6.1.4 (релиз безопасности, 2026-09-29)

Уязвимые версии

Согласно бюллетеню безопасности Joomla! (2026-09-29) и публичным источникам уведомлений:

  • Joomla! 1.5.0 – 5.4.8
  • Joomla! 6.0.0 – 6.1.3

Joomla! 3.x также уязвима, но находится в статусе End-of-Life: официальный патч для неё не будет выпущен — планируйте миграцию. Проверка версии по баннеру в инструменте носит информационный характер; вердикт основан на поведении (см. ниже).

Воздействие

Созданная злоумышленником учётная запись — это учётная запись фронтенда с низкими привилегиями, без административного доступа или доступа к бэкенду. Тем не менее это позволяет злоумышленнику:

  • Создавать учётные записи, даже когда регистрация явно отключена
  • Занимать имена пользователей / адреса электронной почты
  • Непредвиденно запускать плагины-хуки регистрации
  • Исследовать внутреннюю логику приложения в рамках аутентифицированной сессии

Первопричина

ProfileModel::save() выполняет unset() для $data['username'] только когда имя пользователя считается соответствующим требованиям. isUsernameCompliant выводится из состояния пользователя com_users.edit.profile.data, которое контроллер заполняет полным запросом при неудачной валидации формы. Контроллер также не проверяет состояние входа входящего запроса. Поэтому в рамках одной гостевой сессии:

  1. W1 (затравка) — POST с несоответствующим требованиям именем пользователя и без privacyconsent → валидация не проходит → «грязное» имя пользователя сохраняется в состоянии пользователя сессии (пока ничего не создаётся).
  2. W2 (эксплуатация) — в той же сессии повторная отправка с чистым именем пользователя плюс jform[privacyconsent][privacy]=1 → проверка unset() пропускается → INSERT INTO #__users → редирект 303 с user_id > 0.
  3. Дифференциальная проверка входа — POST user.login (имя поля — password, а не passwd) с правильным и неправильным паролем и чтение flash-сообщения: правильный → "you cannot access the private section" (аутентификация OK, ACL блокирует) / неправильный → "do not match". Разница в ответах и есть доказательство.

Установка

git clone https://github.com/aorozco-sys/CVE-2026-90907.git
cd CVE-2026-90907
pip install -r requirements.txt   # only dependency: requests

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

# CHECK mode (default) — non-destructive: never sends consent, never creates an account
python3 joomla_cve_2026_90907.py https://ejemplo.com

# Verbose CHECK (full request/response log on stderr)
python3 joomla_cve_2026_90907.py https://ejemplo.com --no-color -v

# EXPLOIT mode (-U) — creates a real account in #__users (authorized targets only!)
python3 joomla_cve_2026_90907.py https://ejemplo.com \
    -U audit.user -E [email protected] -N "CVE Audit"

# Through a proxy (e.g. Burp Suite) with a custom timeout
python3 joomla_cve_2026_90907.py https://ejemplo.com -U audit.user \
    --proxy http://127.0.0.1:8080 --timeout 30

# Exploit without the differential login verification
python3 joomla_cve_2026_90907.py https://ejemplo.com -U audit.user \
    --no-verify-login

Флаги

ФлагОписание
TARGETБазовый URL (нормализованный; без завершающего слэша)
-U/--usernameВключает режим EXPLOIT. Без -U → неразрушающая проверка CHECK
-P/--passwordПо умолчанию: генерируется с помощью secrets, 16 символов (буквы, цифры и символы), всегда выводится
-E/--emailПо умолчанию: <username>@example.invalid
-N/--nameПо умолчанию: CVE Audit
-o/--outputКаталог для доказательств (по умолчанию evidence_cve90907_<ts> в текущем рабочем каталоге)
--proxy URLПрокси для запросов (Burp: http://127.0.0.1:8080)
--timeoutПо умолчанию 20 с
--uaUser-Agent (по умолчанию cve-2026-90907-audit/1.0)
--no-verify-loginПропускает дифференциальную проверку входа (режим exploit)
--verify-sslПроверять TLS (по умолчанию: не проверять)
--no-colorБез ANSI-цветов
-v/--verboseПолный журнал запросов/ответов в stderr

Коды выхода (удобно для CI)

КодЗначение
0Ok / не уязвим / неизвестно
1Уязвим (LIKELY в режиме check, CONFIRMED в режиме exploit)
2Операционная ошибка (сеть, зависимость и т. п.)

Вердикты

  • VULNERABLE (LIKELY) — check: токен в порядке + W1 обработан анонимно (303 с profile в Location, без перенаправления на вход) + flash-сообщение об ошибке валидации (например, сообщение о необходимости принять политику конфиденциальности). Окончательное подтверждение = режим exploit.
  • NOT VULNERABLE (behavioral) — W1 перенаправляет на вход или отвечает 401/403/404: анонимная обработка заблокирована.
  • UNKNOWN — отсутствуют сигналы (нет токена, нечитаемая версия и т. п.). Пробелы перечислены в консоли и в summary.json.
  • VULNERABLE (CONFIRMED) — exploit: Location с user_id > 0 после W2.

Артефакты доказательств

Каждый запуск записывает в каталог -o с меткой времени файлы 00_token.txt, 01_version.txt, 02_w1_seed.txt, 03_w2_exploit.txt, 04_login_correct.txt, 05_login_wrong.txt и summary.json. Каждый файл фиксирует полный REQUEST (метод/URL/ключевые заголовки/тело), RESPONSE (статус, Location, Server, извлечённый flash, первые 500 байт тела) и метки времени ISO — готово к приложению к отчёту о пентесте.

Операционная безопасность

  • Режим CHECK никогда не отправляет privacyconsent и использует несоответствующее правилам имя пользователя (probe()): сохранение завершается ошибкой валидации формы, и ничего не сохраняется.
  • Защита от прерывания: если W1 когда-либо вернул user_id > 0 (чего быть не должно), режим exploit прерывается до W2.
  • После успешного эксплойта инструмент выводит предупреждение об очистке: удалите созданную учётную запись через Joomla Admin → Users (это также удалит строку в user_usergroup_map).

Устранение уязвимости

  • Немедленно обновите рабочие экземпляры до Joomla! 5.4.9 или 6.1.4.
  • На сайтах, где регистрация была отключена, отсортируйте пользователей в бэкенде по дате регистрации и проверьте группу по умолчанию на наличие нераспознанных учётных записей, созданных до установки патча.

Ссылки

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