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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-78159 — Эксплойт proof-of-concept для CVE-2026-78159 — неаутентифицированное RCE в плагине WordPress The Events Calendar через точку сброса классов виджета parse_array. | Kitploit
Инструменты/GitHubGitHub/abraxas/cve-2026-78159
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеИнструмент Удаленного Доступа
GitHubabraxas/cve-2026-78159

CVE-2026-78159

Эксплойт proof-of-concept для CVE-2026-78159 — неаутентифицированное RCE в плагине WordPress The Events Calendar через точку сброса классов виджета parse_array.

Репозиторий
7 ч 27 мин назадЕщё не проверено

Популярное

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

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

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

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

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

Abraxas Labs — CVE-2026-78159

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  CVE-2026-78159

CVE-2026-78159

The Events Calendar 6.17.3 — stellarwp

Плагин The Events Calendar для WordPress уязвим к удалённому выполнению кода во всех версиях вплоть до 6.17.3 включительно через функцию parse_array. Это обусловлено недостаточной проверкой карты 'classes' виджета, что позволяет полезной нагрузке в виде простого массива обойти проверку объекта is_safe_widget_instance() и достичь точки вызова callable в Element_Classes::parse_array(). Это даёт возможность неаутентифицированным злоумышленникам выполнять код на сервере. Для эксплуатации требуется, чтобы на целевой сайте были включены комментарии для записей tribe_events и был отправлен хотя бы один комментарий, содержащий специально сформированный блок wp:legacy-widget, поскольку цепочка атаки срабатывает, когда do_blocks() обрабатывает HTML одиночного события, включая область комментариев.

CVECVE-2026-78159 · CVE.org
CWECWE-94
CVSSCritical: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ПродуктThe Events Calendar
Затронутовсе версии вплоть до 6.17.3 (включительно)
Исправлено6.17.3.1 и новее
Аутентификацияотсутствует (см. карту исходников)
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1 · пакет раскрытия для вендора/клиента, не сканер

Рекомендации (из карты исходников)

parse_array — это точка вызова (sink), а не ajax action=. HTTP — это POST /wp-comments-post.php, затем GET URL предпросмотра модерации. idBase виджета — tribe-widget-events-list, а не events-list.


Точка входа

  • Метод: POST
  • Путь: /wp-comments-post.php
  • Маршрутизатор: Неаутентифицированный wp-comments-post.php. TEC V2 одиночное событие буферизует comments_template(), затем do_blocks(). render_block_data пересчитывает хеши экземпляров tribe-widget-*. the_widget('tribe-widget-events-list') с featured_events_only true опустошает список, поэтому components/messages.php запускает tec_classes($classes). Element_Classes::parse_array вызывает значения string-callable. Канарейка лаборатории poc_witness_78159, а не system() и не wp_update_user.
  • Примечания: CVE-2026-78159 CWE-94: The Events Calendar 6.17.3. idBase ДОЛЖЕН быть tribe-widget-events-list (ПРЕФИКС tribe-widget- + слаг events-list). Фиктивный хеш подходит. Первый GET /event/lab-event/ — только сбор данных. УСПЕХ только если POCWitness78159 появляется после редиректа комментария.

Цепочка вызовов

  • GET /event/lab-event/ сбор comment_post_ID
  • POST /wp-comments-post.php comment=<!-- wp:legacy-widget {idBase tribe-widget-events-list, instance.encoded php-serialize-base64, instance.hash 0} /-->
  • 302 Location включает unapproved=COMMENT_ID&moderation-hash=wp_hash(comment_date_gmt)
  • GET этого Location: comments_template включает неодобренный комментарий
  • Template_Bootstrap::get_v1_single_event_template_html do_blocks($html)
  • Service_Provider::enable_rendering_widget_copied (render_block_data) unserialize allowed_classes false, is_safe_widget_instance отклоняет только объекты, wp_hash простого массива
  • render_block_core_legacy_widget the_widget tribe-widget-events-list
  • Widget_List setup_arguments array_merge instance (classes сохраняется; setup_template_vars его не перезаписывает)
  • пустой featured список -> widget-events-list.php ветка else components/messages.php
  • tec_classes($classes) -> Element_Classes::parse_array строковый ключ + значение is_callable -> poc_witness_78159($results) выводит POCWitness78159

Предусловия лаборатории

  • The Events Calendar 6.17.3 активен
  • классическая тема (Twenty Twenty-One). Блочные темы пропускают Template_Bootstrap::filter_template_include через tec_is_full_site_editor(), поэтому do_blocks никогда не видит HTML комментария
  • tribe_events_calendar_options showComments=yes, чтобы tribe_events поддерживал комментарии
  • опубликованная запись tribe_events lab-event с comment_status=open
  • comment_registration=0, первые комментарии задерживаются (unapproved + moderation-hash)
  • mu-plugin функция poc_witness_78159 выводит POCWitness78159 (канарейка лаборатории, не цепочка гаджетов)
  • V2 views/widgets включены (всегда true в 6.17.3)

Свидетельство

HTTP-тело GET предпросмотра модерации содержит POCWitness78159. Обычный HTML события без этой строки — это не оно. debug.log также может дописать POCWitness78159.

Не успех

  • обычный 200 HTML события без POCWitness78159
  • wp-comments-post.php 200/302 без перехода по Location
  • комментарий 409/дубликат без блока
  • 403/404 без свидетельства
  • reverse shell или исходящее соединение
  • полезная нагрузка system()/exec()/wp_update_user для сброса пароля

Патч / устранение

Сделайте это в первую очередь: Обновите The Events Calendar до 6.17.3.1 или новее (Wordfence рекомендует 6.17.4.1, чтобы также закрыть CVE-2026-78006).

Проверка после обновления

  • Повторно запустите CVE-2026-78159-Abraxas-Labs.py против пропатченной сборки: отображённое свидетельство не должно появиться.
  • Подтвердите наличие рекомендации вендора / changeset в развёрнутом дереве (см. ссылки).
  • Сигнатура WAF — это задержка, а не патч.

Если вы не можете обновиться немедленно

  • Отключите или изолируйте затронутый компонент.
  • Ищите условие свидетельства на продакшене (новые привилегированные пользователи, неожиданные файлы, внедрённые строки — то, что называет карта этой CVE).

Воспроизведение (авторизованная лаборатория)

Цель — только http://127.0.0.1:8088 (или loopback, к которому вы привязались). Не направляйте этот скрипт в интернет.

root@kitploit:~
python3 CVE-2026-78159-Abraxas-Labs.py

Успех — это свидетельство выше в теле ответа. Обычный 200 HTML — это не оно.


Образы лаборатории

Loopback-стек, использованный для воспроизведения. Официальные образы, если только Dockerfile в этой папке не собирает из исходников.

  • lab/docker-compose.yml
  • lab/docker-compose.override.yml
  • lab/Dockerfile
root@kitploit:~
cd lab
docker compose up --force-recreate

Привяжите дерево уязвимого продукта рядом с Compose, если YAML монтирует локальный каталог (zip плагина / тег исходников из таблицы версий). Не публикуйте ничего, кроме 127.0.0.1.


Ссылки

  • CVE-2026-78159 · NVD

  • CVE-2026-78159 · CVE.org

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/common/src/Tribe/Utils/Element_Classes.php#L211

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Template_Bootstrap.php#L214

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Widgets/Service_Provider.php#L279

  • plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/views/v2/components/messages.php#L30

  • plugins.trac.wordpress.org/changeset?reponame=&old=3667866%40the-events-calendar&new=3667866%40the-events-calendar

  • plugins.trac.wordpress.org/changeset?reponame=&old=3667867%40the-events-calendar&new=3667867%40the-events-calendar

  • www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve

  • github.com/advisories/GHSA-9c57-9fxg-8x9j

  • nvd.nist.gov/vuln/detail/CVE-2026-78159

  • Каталог плагинов: the-events-calendar

  • Браузер Trac: plugins.trac.wordpress.org/the-events-calendar

  • Теги SVN: plugins.svn.wordpress.org/the-events-calendar

  • Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null


Записи (структурированные)

root@kitploit:~
# CVE-2026-78159  (structured records)

- input: `https://nvd.nist.gov/vuln/detail/CVE-2026-78159`
- CWE: CWE-94
- published: 2026-09-12T08:16:24.377

## NVD description

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.

## MITRE description

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.

## Affected

- stellarwp The Events Calendar 0 affected

## References (JSON sources only)

- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/common/src/Tribe/Utils/Element_Classes.php#L211
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Template_Bootstrap.php#L214
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Widgets/Service_Provider.php#L279
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/views/v2/components/messages.php#L30
- https://plugins.trac.wordpress.org/changeset?reponame=&old=3667866%40the-events-calendar&new=3667866%40the-events-calendar
- https://plugins.trac.wordpress.org/changeset?reponame=&old=3667867%40the-events-calendar&new=3667867%40the-events-calendar
- https://www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve
- https://github.com/advisories/GHSA-9c57-9fxg-8x9j
- https://nvd.nist.gov/vuln/detail/CVE-2026-78159

## GitHub advisory

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all...

The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.

Лицензия

Этот пакет раскрытия лицензирован под GNU Affero General Public License v3.0. См. LICENSE.


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

Этот пакет предназначен для вендора, владельца сайта и лицензированных лабораторий. Скрипт обращается к 127.0.0.1. Использование его против систем, которыми вы не владеете, не авторизовано Abraxas Labs. Без гарантий.

abraxaslabs.tech · github.com/abraxas · @abraxas_null

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