
Раскрытие информации для CVE-2025-9886 и CVE-2025-9952
Раскрытие информации о CVE-2025-9886 и CVE-2025-9952.
Этот репозиторий раскрывает уязвимость, обнаруженную в Trinity Audio <= 5.20.1, плагине WordPress, разработанном sergiotrinity.
| Идентификатор CVE | Тип | Компонент | Воздействие |
|---|---|---|---|
| CVE-2025-9886 | Межсайтовая подделка запроса (CSRF) | admin/inc/post-management.php | Массовое включение/отключение Trinity Audio на записях в сессии жертвы |
| CVE-2025-9952 | Отражённый межсайтовый скриптинг (XSS) | admin/inc/post-management.php | Произвольное выполнение сценариев |
Затронутый компонент: Обработчик страницы управления записями (admin/inc/post-management.php)
Вектор атаки: Междоменный POST-запрос к wp-admin/admin.php?page=trinity_audio_post_management
Триггер: Аутентифицированный администратор посещает страницу злоумышленника, которая автоматически отправляет специально созданную форму
Воздействие: Злоумышленник принудительно изменяет массовое состояние (включает/отключает Trinity Audio на всех записях или за период) с правами администратора, нарушая целостность и, возможно, доступность
Затронутый компонент: Обработчик страницы управления записями (admin/inc/post-management.php)
Вектор атаки: Междоменный POST-запрос к wp-admin/admin.php?page=trinity_audio_post_management с параметрами post-management-action=activate-all-posts-range, range-before-after=after и корректной датой, за которой следует HTML.
Триггер: Аутентифицированный администратор посещает страницу злоумышленника, которая автоматически отправляет специально созданную форму. Должна существовать хотя бы одна запись, опубликованная после указанной даты.
Воздействие: Произвольный JavaScript выполняется в источнике администратора, что позволяет красть сессии, манипулировать настройками или объединять CSRF-атаки.
Объединив эти две уязвимости, злоумышленник может выполнить произвольные скрипты, направив пользователей на сайт, содержащий следующую форму.
<form method="POST" action="https://victim.example.com/wp-admin/admin.php?page=trinity_audio_post_management">
<input type="hidden" name="action" value="1">
<input type="hidden" name="post-management-action" value="activate-all-posts-range">
<input type="hidden" name="range-before-after" value="after">
<input type="hidden" name="range-date" value="2025-09-03<img src=x onerror=alert(document.domain)>">
</form>
<script>document.forms[0].submit();</script>
CSRF (CVE-2025-9886): Конечная точка, изменяющая состояние, принимает междоменные запросы без защиты CSRF. Отсутствует проверка nonce (check_admin_referer/wp_verify_nonce) и проверка Origin/Referer. Поскольку cookies отправляются автоматически, злоумышленник может выполнять действия в сессии аутентифицированного пользователя.
Отражённый XSS (CVE-2025-9952): Обработчик управления записями (admin/inc/post-management.php) вставляет значение параметра range-date из POST в уведомление об успехе без кодирования вывода (esc_html()/wp_kses()), что позволяет внедрить HTML/JS.
На первый взгляд это всего лишь CSRF и Self-XSS, но, объединив их, при успешной CSRF можно выполнить произвольный JavaScript. Создавать такой интересный PoC было забавно.
Имя: MooseLove
Роль: Независимый исследователь безопасности / баг-хантер
Контакт: Доступен по запросу
Данное уведомление предоставлено для повышения осведомлённости о безопасности. Можно свободно распространять с указанием авторства.