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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2025-14855-POC — SureForms <= 2.2.0 - Неаутентифицированное хранимое Cross-Site Scripting | Kitploit
Инструменты/GitHubGitHub/ch4r0nn/cve-2025-14855-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеРазработка Полезной Нагрузки
GitHubch4r0nn/cve-2025-14855-poc

CVE-2025-14855-POC

SureForms <= 2.2.0 - Неаутентифицированное хранимое Cross-Site Scripting

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

Популярное

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

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

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

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

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

CVE-2025-14855: SureForms WordPress Plugin Доказательство концепции хранимой XSS

  • Цель: WordPress плагин "SureForms"
  • Плагин WordPress: https://wordpress.org/plugins/sureforms/
  • Тип уязвимости: Хранимая межсайтовая скриптовая атака (XSS)
  • CVE: CVE-2025-14855
  • Источник: https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/sureforms/sureforms-220-unauthenticated-stored-cross-site-scripting
  • Аутентификация: Не требуется (Гость/Публичный)
  • Воздействие: Удаленное выполнение кода (RCE) через угон сессии администратора
  • Обнаружено: https://nguyentiendung1006.wixsite.com/tiendung

1. Краткое описание

Критическая уязвимость Stored XSS существует в плагине SureForms. Уязвимость возникает из-за небезопасной реализации на стороне клиента в entries.js, где пользовательский ввод программно декодируется (отменяя серверную санитацию) и затем отображается с помощью dangerouslySetInnerHTML без надлежащей санитации на стороне клиента. Это позволяет неаутентифицированным злоумышленникам внедрять вредоносные JavaScript-нагрузки через стандартные поля формы, обходя стандартные фильтры WordPress.

wp_kses

2. Идентификация версии

Чтобы проверить, работает ли целевой сайт с SureForms, проверьте заголовок файла перевода, который обычно содержит номер версии.

Целевой URL: http://target-site.com/wp-content/plugins/sureforms/languages/sureforms.pot

Команда проверки:

root@kitploit:~
curl -s "http://target-site.com/wp-content/plugins/sureforms/languages/sureforms.pot" | grep "Project-Id-Version"

3. Обратное проектирование и анализ первопричины

Уязвимость находится в React-интерфейсе администратора, предназначенном для просмотра записей формы (entries.js).

3.1. Логика «Авто-декодера» (Обход)

В минифицированном файле entries.js есть вспомогательная функция (идентифицированная как Xv в проанализированной сборке), предназначенная для обработки HTML-сущностей.

Логика кода (восстановленная):

root@kitploit:~
// Function Xv: Pre-processing field values
var Xv = function(input) {
    var value = input.value;
    
    // VULNERABILITY ROOT CAUSE:
    // If the string contains HTML entities (e.g., &lt;), create a textarea,
    // inject the content, and extract the value. 
    // This effectively DECODES HTML entities back to raw HTML tags.
    // Example: "&lt;img ...&gt;" becomes ""
    
    if (typeof value === "string" && value.match(/&[a-zA-Z0-9#]+;/)) {
        var textarea = document.createElement("textarea");
        textarea.innerHTML = value;
        
        // Logic to revert sanitization
        if (textarea.value.includes("&lt;") || textarea.value.includes("&gt;")) {
             value = textarea.value; // Now 'value' contains RAW HTML
        }
    }
    return { ...input, value: value };
}

Анализ: Эта функция нейтрализует защиту бэкенда. Даже если WordPress правильно сохранит <script> как &lt;script&gt; в базе данных, эта функция преобразует его обратно в <script> сразу после получения из API.

3.2. Опасный приемник

После декодирования данные передаются в компонент рендеринга (идентифицированный как Jv).

Логика кода (восстановленная):

root@kitploit:~
// Function Jv: Rendering the field
var Jv = function(props) {
    var field = props.field;
    var val = field.value; // This value is now raw HTML (post-decoding)

    // THE TRIGGER: Check if the string looks like HTML
    if (typeof val === "string" && val.match(/<[^>]+>/g)) {
        // THE SINK: Render using dangerouslySetInnerHTML WITHOUT client-side sanitization (e.g., DOMPurify)
        return React.createElement("span", {
            dangerouslySetInnerHTML: { __html: val }
        });
    }
    
    // Safe render for non-HTML text
    return React.createElement("span", null, val);
}

4. Схема атаки

  1. Внедрение: Неаутентифицированный злоумышленник отправляет форму на фронтенде. Вместо использования сырых HTML-тегов (которые были бы удалены/санированы бэкендом WordPress), злоумышленник отправляет HTML-сущности.

  2. Хранение: WordPress считает ввод (например, &lt;img...) безопасным текстом и сохраняет его в базе данных.

  3. Выполнение (ловушка):

    • Администратор переходит в SureForms > Entries.
    • Браузер получает детали записи через JSON API.
    • Функция Xv обнаруживает сущности и декодирует &lt;img... обратно в ` Entries.
  4. Нажмите на запись, отправленную в Шаге 1, чтобы просмотреть детали.

  5. Результат: Браузер выполнит JavaScript-нагрузку (alert('XSS_SUREFORMS')).

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