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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-22381 — Обнаружение CVE-2025-22381: Внедрение заголовка Host в проекте с открытым исходным кодом Aggie | Kitploit
Инструменты/GitHubGitHub/pescada-dev/cve-2025-22381
Атаки на ПаролиАнализ уязвимостейЭксплуатацияФишингВеб-безопасностьОбучение и Образование
GitHubpescada-dev/cve-2025-22381

CVE-2025-22381

Обнаружение CVE-2025-22381: Внедрение заголовка Host в проекте с открытым исходным кодом Aggie

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

Популярное

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

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

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

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

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

CVE-2025-22381: Host Header Injection в Aggie

Подробный анализ и доказательство концепции для CVE-2025-22381, уязвимости Host Header Injection, обнаруженной в проекте с открытым исходным кодом Aggie.



Обзор уязвимости+



CVE ID: CVE-2025-22381

Опубликована: Октябрь 2025 (назначение MITRE)

Раскрыта публично: Февраль 2026

Автор отчета: Anas Abderrahman Benbarek

Дата обнаружения: 17 сентября 2025

Затронутый проект: TID-Lab/aggie

Затронутые версии: Все версии (включая 2.6.1 и более ранние; исправление не применено по состоянию на февраль 2026)

Серьезность: Средняя—Высокая (оценочный CVSS ~7.1–7.5)

Влияние: Обеспечивает фишинговые атаки, ведущие к краже токена сброса пароля и возможному захвату учетной записи.



Предыстория



Я провожу достаточно много времени, изучая проекты с открытым исходным кодом на Node.js на GitHub, особенно те, что обрабатывают потоки аутентификации. В сентябре 2025 года, просматривая репозиторий Aggie, я заметил кое-что, что сразу же бросилось в глаза в логике сброса пароля. То, что началось как обычное чтение кода, в итоге стало CVE-2025-22381 — классической уязвимостью Host Header Injection, которая позволяет злоумышленнику управлять доменом в письмах для сброса пароля.



Как я это нашел



Я клонировал репозиторий и начал читать файлы в lib/api/, сосредоточившись на всем, что связано с аутентификацией и генерацией писем.

Файл lib/api/reset-password.js содержит логику эндпоинта /reset-password. Критическая часть находится внутри вспомогательной функции sendEmail:

function sendEmail(user, req, callback) { var token = encodeToken(user);

mailer.sendFromTemplate({ template: 'forgotPassword', user: user, token: token, host: req.headers.host, // ← уязвимо protocol: req.protocol, acceptLanguage: req.headers['accept-language'] }, callback); }

Строка host: req.headers.host — это проблема. В express req.headers.host берется непосредственно из HTTP-заголовка Host, который полностью контролируется злоумышленником. Никакой валидации, никакого белого списка, никакого fallback на доверенный домен из конфигурации.



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



Я быстро развернул локальный экземпляр, следуя инструкциям README (Ubuntu, nvm, npm install, secrets.json с тестовым SMTP), запустил сервер и инициировал сброс пароля. Сгенерированная ссылка в письме, как и ожидалось, содержала localhost:3000.

Затем я повторил запрос с поддельным заголовком Host:

curl -X POST http://localhost:3000/reset-password
-H "Host: evil-phish.example"
-d "email=[email protected]"

Письмо (перехваченное через MailHog) содержало: http://evil-phish.example/reset-password?token=...

Доказательство получено. Приложение доверяет заголовку Host, предоставленному клиентом, при формировании ссылки для сброса.



Как на самом деле работает атака



Злоумышленник отправляет запрос на сброс пароля для адреса электронной почты жертвы, но устанавливает заголовок Host на контролируемый им домен (например, evil-phish.example).

Aggie генерирует легитимный токен сброса (на стороне сервера, с ограничением по времени, зашифрованный с помощью секрета конфигурации).

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

Жертва получает письмо и переходит по ссылке (условие успешного фишинга).

Жертва попадает на сервер злоумышленника.

Сервер злоумышленника может:

Просто отобразить поддельную страницу «ошибка сброса» и молча отбросить токен, или

Захватить токен из строки запроса (через логирование на стороне сервера или JavaScript), или

Проксировать запрос на настоящий экземпляр Aggie, захватить токен и перенаправить пользователя на легитимную страницу сброса (чтобы жертва сразу не заметила ничего подозрительного).

Позже злоумышленник использует захваченный токен на настоящем домене, чтобы сбросить пароль жертвы.

Ключевой момент: сама по себе Host Header Injection не позволяет злоумышленнику напрямую использовать токен. Злоумышленнику все еще нужно, чтобы жертва перешла по вредоносной ссылке, чтобы токен попал в инфраструктуру злоумышленника. Именно поэтому это уязвимость, способствующая фишингу, а не прямой захват учетной записи без взаимодействия с пользователем.



Техническая серьезность и влияние



Это проблема средней или высокой степени серьезности в зависимости от контекста:

AV:N: Доступность по сети

PR:N: Не требует привилегий

AC:L: Низкая сложность

UI:R: Требуется взаимодействие с пользователем

S:C: Область может измениться (влияние распространяется на учетную запись жертвы на легитимном домене)

C:L / I:H: Влияние на конфиденциальность и целостность учетной записи жертвы

Многие базы данных оценивают её в диапазоне CVSS ~7.1–7.5. Лично я считаю её серьезной в производственных средах, где Aggie используется для чувствительного мониторинга (выборы, кризисы), так как успешный фишинг здесь может привести к полному захвату учетной записи.



Доказательство концепции (подробное и воспроизводимое)



Окружение

Ubuntu 18.04/20.04 (как рекомендовано)

Node 12.16 (согласно .nvmrc)

MailHog: Запущен локально для перехвата писем (docker run -d -p 8025:8025 -p 1025:1025 mailhog/mailhog)

Aggie настроен с email.transport, указывающим на localhost:1025

Пошагово

Клонируйте и запустите Aggie:

git clone https://github.com/TID-Lab/aggie.git cd aggie nvm install npm install cp config/secrets.json.example config/secrets.json edit secrets.json → set adminPassword, add test SMTP if needed npm start

Создайте тестового пользователя через веб-интерфейс или напрямую в MongoDB.

Запустите вредоносный сброс:

curl -i -X POST http://localhost:3000/reset-password
-H "Host: evil-phish.example"
-H "Content-Type: application/x-www-form-urlencoded"
-d "email=[email protected]"

Откройте MailHog: Просмотрите отправленное письмо. Ссылка для сброса будет указывать на http://evil-phish.example/reset-password?token=...



График раскрытия



17 сен 2025: Обнаружено + локальный PoC

17 сен 2025: Отправлено письмо на [email protected] с полными деталями и PoC

17 сен 2025: Отправлено в MITRE (запрос на обслуживание 1926730 / MCID15453119)

9 окт 2025: MITRE присвоен CVE-2025-22381

Окт–дек 2025: Публичного патча или ответа не наблюдалось

Фев 2026: Публичное раскрытие (эта статья)



Рекомендуемое исправление



Изменение кода

Замените уязвимую строку на доверенное значение в lib/api/reset-password.js:

// In lib/api/reset-password.js, inside sendEmail() const config = require('../../config/secrets').get();

// Option A: Hard trust config value (recommended for single-domain) const host = config.appHost || 'localhost:3000';

// Then use it: mailer.sendFromTemplate({ template: 'forgotPassword', user: user, token: token, host: host, // Use the trusted variable protocol: config.environment === 'production' ? 'https' : req.protocol, acceptLanguage: req.headers['accept-language'] }, callback);

Конфигурация

Добавьте в secrets.json:

"appHost": "https://your-real-domain.com"



Заключительные мысли



Host Header Injection остаётся удивительно распространённой в 2025–2026 годах, особенно в проектах, которые были начаты несколько лет назад и не подвергались тщательному аудиту. Aggie — ценный инструмент для гражданских технологий и мониторинга кризисов. Надеюсь, что мейнтейнеры скоро применят исправление.

Если вы поддерживаете или используете Aggie, проверьте своё развёртывание и примените патч вручную до выхода официального релиза. Не стесняйтесь обращаться, если у вас есть вопросы или вы хотите обсудить подобные проблемы в других проектах.

Спасибо за чтение и оставайтесь в безопасности.

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