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

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

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

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

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

Категории

Все категории
Loading categories
jquery-cve-2022-31160 — jquery XSS Proof of Concept (PoC) | Kitploit
Инструменты/GitHubGitHub/cyberone-teamares/jquery-cve-2022-31160
Vulnerability AnalysisExploitationWeb Application ExploitationWeb SecurityCTFLearning & Education
GitHubcyberone-teamares/jquery-cve-2022-31160

jquery-cve-2022-31160

jquery XSS Proof of Concept (PoC)

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
1 год назадЕщё не проверено

jQuery UI CVE-2022-31160 Демонстрация уязвимости

Security Badge jQuery UI CVE Docker

Этот проект демонстрирует уязвимость виджета Checkboxradio jQuery UI (CVE-2022-31160), которая приводит к некорректному декодированию HTML-сущностей при обновлении виджета, что потенциально может вызвать межсайтовый скриптинг (XSS).

🚨 Предупреждение по безопасности

⚠️ Этот проект содержит действующие XSS-пейлоады только для образовательных и исследовательских целей.

  • НЕ ИСПОЛЬЗУЙТЕ на продуктивных системах
  • Используйте только в контролируемых средах
  • Предназначено для исследований в области безопасности и обучения

📋 Содержание

  • Обзор уязвимости
  • Быстрый старт
  • Структура проекта
  • Демонстрации
  • Технические детали
  • Использование Docker
  • Анализ безопасности
  • Меры по смягчению
  • Участие в разработке

🔍 Обзор уязвимости

Детали CVE-2022-31160

  • Компонент: Виджет Checkboxradio jQuery UI
  • Затронутые версии: jQuery UI ≤ 1.13.1
  • Тип уязвимости: Межсайтовый скриптинг (XSS) через декодирование HTML-сущностей
  • Оценка CVSS: 6.1 (Средний)
  • Дата первой публикации: 20 июля 2022 года

Первопричина

Когда виджет checkboxradio инициализируется на элементе ввода, вложенном внутрь метки, вызов .checkboxradio("refresh") для этого виджета приводит к ошибочному декодированию HTML-сущностей в содержимом метки. Это может преобразовать безопасно закодированное вредоносное содержимое в исполняемый JavaScript.

Вектор атаки

root@kitploit:~
<!-- Безопасно закодированное содержимое -->
<label for="checkbox">
  Текст &lt;img src=x onerror=&quot;alert('XSS')&quot;&gt;
  <input type="checkbox" id="checkbox">
</label>

<!-- После .checkboxradio("refresh") -->
<label for="checkbox">
  Текст 
  <input type="checkbox" id="checkbox">
</label>

🚀 Быстрый старт

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

  • Установленный Docker в вашей системе
  • Веб-браузер с инструментами разработчика
  • Базовое понимание концепций веб-безопасности

Сборка и запуск

root@kitploit:~
# Перейдите в директорию проекта
cd jquery-cve-2022-31160

# Соберите Docker-образ
docker build -t jquery-cve-2022-31160 .

# Запустите контейнер
docker run -p 3000:3000 jquery-cve-2022-31160

Доступ к демонстрациям

После запуска контейнера откройте:

  • Упрощённая демонстрация опроса: http://localhost:3000/survey
  • Альтернативный URL опроса: http://localhost:3000/simplified-survey

📁 Структура проекта

root@kitploit:~
jquery-cve-2022-31160/
├── README.md                    # Эта документация
├── Dockerfile                   # Конфигурация контейнера Docker
├── package.json                 # Зависимости Node.js
├── server.js                    # Сервер Express.js
└── simplified-survey.html       # Демонстрация в стиле опроса

🎯 Демонстрации

1. Упрощённая демонстрация опроса (simplified-survey.html)

URL: http://localhost:3000/survey

  • Интерфейс в стиле опроса
  • Несколько сценариев уязвимости
  • Улучшенная визуальная обратная связь

Особенности:

  • 4 различных варианта чекбоксов, демонстрирующие различные сценарии:
    • Безопасный вариант: Нет закодированных сущностей (контрольная группа)
    • Сетевая безопасность XSS: &lt;img src=x onerror=&quot;...&quot;&gt; - Немедленное выполнение
    • Мобильная безопасность XSS: &lt;details ontoggle=&quot;...&quot; open&gt; - Немедленное выполнение
    • Облачная безопасность XSS: &lt;span onmouseover=&quot;...&quot;&gt; - Интерактивное выполнение

Инструменты анализа:

  • Подробное логирование в консоль
  • Всплывающие предупреждения о выполнении XSS
  • Пошаговое отслеживание уязвимости

🔧 Технические детали

Механизм уязвимости

  1. Инициализация виджета: jQuery UI создаёт виджет checkboxradio
  2. Хранение HTML-сущностей: Содержимое метки с закодированными сущностями обрабатывается
  3. Триггер обновления: Вызывается .checkboxradio("refresh")
  4. Декодирование сущностей: jQuery UI ошибочно декодирует HTML-сущности
  5. Выполнение XSS: Декодированное вредоносное содержимое становится исполняемым

Затронутый путь кода

root@kitploit:~
// Уязвимая операция
$('#vulnerable-checkbox').checkboxradio();
$('#vulnerable-checkbox').checkboxradio("refresh"); // Запускает уязвимость

Тестовые пейлоады

Демонстрации включают различные пейлоады для тестирования разных методов выполнения XSS:

root@kitploit:~
<!-- Сетевая безопасность: XSS через обработчик ошибок (немедленное выполнение) -->
&lt;img src=x onerror=&quot;console.log('XSS via widget refresh!'); alert('Widget refresh XSS executed!');&quot;&gt;

<!-- Мобильная безопасность: XSS через событие toggle (немедленное выполнение) -->
&lt;details ontoggle=&quot;alert('Mobile Security XSS executed!'); console.log('Mobile XSS via details ontoggle!')&quot; open&gt;&lt;summary&gt;&lt;/summary&gt;&lt;/details&gt;

<!-- Облачная безопасность: Интерактивный XSS (требуется действие пользователя) -->
&lt;span onmouseover=&quot;alert('Hover XSS executed!'); console.log('Cloud Security XSS via mouseover!')&quot; style=&quot;text-decoration:underline; cursor:pointer;&quot;&gt;[Наведите для запуска]&lt;/span&gt;

Методы выполнения XSS

1. Обработчик события ошибки (onerror)

  • Запуск: Немедленный при вставке элемента в DOM
  • Надёжность: Очень высокая (всегда завершается ошибкой с src=x)
  • Сценарий использования: Демонстрирует немедленное выполнение XSS
  • Риск в реальном мире: Высокий - часто обходит фильтры ввода

2. Обработчик события toggle (ontoggle)

  • Запуск: При изменении состояния открытия/закрытия элемента details
  • Надёжность: Очень высокая (гарантированный запуск с атрибутом open)
  • Сценарий использования: Немедленное выполнение при вставке в DOM
  • Риск в реальном мире: Высокий - надёжное выполнение в разных браузерах

3. Обработчик события мыши (onmouseover)

  • Запуск: Требует действия пользователя (наведение курсора)
  • Надёжность: Высокая при взаимодействии пользователя
  • Сценарий использования: Сценарии социальной инженерии
  • Риск в реальном мире: Средний - требует участия пользователя

Почему эти пейлоады работают

Преимущества обработчиков событий:

  • Выполняются при вставке элемента через innerHTML
  • Обходят ограничения тегов <script>
  • Стабильно работают в разных браузерах
  • Не требуют загрузки внешних ресурсов
  • Триггеры на основе состояний (например, ontoggle) очень надёжны

Обход кодирования:

  • HTML-сущности (&lt;, &quot;) декодируются при обновлении jQuery UI
  • Преобразует безопасно закодированное содержимое в исполняемый код
  • Демонстрирует обход санитизации в реальном мире
  • Разнообразие векторов выполнения показывает широту поверхности атаки

🐳 Использование Docker

Сборка образа

root@kitploit:~
docker build -t jquery-cve-2022-31160 .

Запуск контейнера

root@kitploit:~
# Запуск на стандартном порту 3000
docker run -p 3000:3000 jquery-cve-2022-31160

# Запуск на пользовательском порту
docker run -p 8080:3000 jquery-cve-2022-31160

# Запуск в фоновом режиме
docker run -d -p 3000:3000 jquery-cve-2022-31160

# Запуск с пользовательским именем
docker run --name jquery-xss-demo -p 3000:3000 jquery-cve-2022-31160

Управление контейнером

root@kitploit:~
# Список запущенных контейнеров
docker ps

# Остановка контейнера
docker stop jquery-cve-2022-31160

# Удаление контейнера
docker rm jquery-cve-2022-31160

# Удаление образа
docker rmi jquery-cve-2022-31160

🔬 Анализ безопасности

Оценка воздействия

  • Серьёзность: Средний (CVSS 6.1)
  • Сложность атаки: Низкая
  • Взаимодействие с пользователем: Требуется (взаимодействие со страницей)
  • Область действия: Без изменений (один и тот же источник)
  • Конфиденциальность: Низкое воздействие
  • Целостность: Низкое воздействие
  • Доступность: Отсутствует

Реальные сценарии

Эта уязвимость может быть использована в приложениях, которые:

  1. Используют виджеты checkboxradio jQuery UI
  2. Разрешают пользовательский контент в метках
  3. Очищают контент с помощью кодирования HTML-сущностей
  4. Программно обновляют виджеты

Методы обнаружения

  • Статический анализ: Поиск вызовов .checkboxradio("refresh")
  • Динамический анализ: Мониторинг изменений содержимого HTML во время операций с виджетами
  • Автоматическое сканирование: Использование инструментов, способных обнаруживать DOM-основанные XSS
  • Ручное тестирование: Тестирование обновления виджета с закодированными пейлоадами

🛡️ Меры по смягчению

Немедленные действия

  1. Обновите jQuery UI: Перейдите на версию 1.13.2 или новее
  2. Проверка ввода: Реализуйте правильную проверку на стороне сервера
  3. Политика безопасности контента (CSP): Разверните ограничивающие заголовки CSP
  4. Кодирование вывода: Используйте соответствующее контексту кодирование вывода

Исправления кода

root@kitploit:~
// Перед обновлением очистите или проверьте содержимое
function safeRefresh(element) {
    // Проверка содержимого метки перед обновлением
    const label = $(`label[for="${element.attr('id')}"]`);
    const content = label.html();
    
    // Проверка на потенциально опасное содержимое
    if (content.includes('<') || content.includes('javascript:')) {
        console.warn('Обнаружено потенциально опасное содержимое');
        return;
    }
    
    element.checkboxradio("refresh");
}

Заголовки безопасности

root@kitploit:~
// Заголовки безопасности для Express.js
app.use((req, res, next) => {
    res.setHeader('X-Content-Type-Options', 'nosniff');
    res.setHeader('X-Frame-Options', 'DENY');
    res.setHeader('X-XSS-Protection', '1; mode=block');
    res.setHeader('Content-Security-Policy', "default-src 'self'");
    next();
});

📚 Образовательная ценность

Этот проект служит образовательным ресурсом для:

  • Исследователей безопасности: Понимание уязвимостей манипуляции DOM
  • Веб-разработчиков: Изучение вопросов безопасности jQuery UI
  • Специалистов по тестированию на проникновение: Практические методы эксплуатации XSS
  • Студентов в области безопасности: Практический анализ уязвимостей

🔗 Ссылки

  • Официальная запись CVE-2022-31160
  • Консультация по безопасности jQuery UI
  • Памятка OWASP по предотвращению XSS
  • CWE-79: Межсайтовый скриптинг

📈 Контрольный список тестирования

При использовании этой демонстрации:

Предварительная настройка:

  • Проверьте версию jQuery UI (должна быть 1.13.0)
  • Проверьте с открытыми инструментами разработчика (F12)
  • Откройте опрос по адресу http://localhost:3000/survey
  • Проверьте консоль на сообщения об инициализации

Тестирование уязвимости:

  • Нажмите кнопку "🔄 Обновить виджеты"
  • Вариант сетевой безопасности: Проверьте немедленное выполнение предупреждения
  • Вариант мобильной безопасности: Проверьте немедленное выполнение предупреждения
  • Вариант облачной безопасности: Наведите курсор на текст "[Наведите для запуска]"
  • Проверьте консоль на подробное логирование уязвимости

Проверка анализа:

  • Проверьте выполнение XSS-пейлоадов (3 различных типа)
  • Протестируйте функциональность сброса виджета
  • Убедитесь, что визуальная обратная связь чекбоксов работает корректно

🤝 Участие в разработке

Приветствуются любые вклады! Пожалуйста:

  1. Сделайте форк репозитория
  2. Создайте ветку для функции
  3. Внесите свои изменения
  4. Добавьте соответствующую документацию
  5. Отправьте pull request

Области для улучшения

  • Дополнительные примеры пейлоадов
  • Более детальные инструменты анализа
  • Улучшенные визуальные демонстрации

⚖️ Юридическое предупреждение

Данное программное обеспечение предоставляется только в образовательных и исследовательских целях. Авторы и участники:

  • Не несут ответственности за любое неправомерное использование этого программного обеспечения
  • Не поощряют и не одобряют злонамеренные действия
  • Рекомендуют использовать только в авторизованных тестовых средах
  • Советуют следовать практике ответственного раскрытия информации

📄 Лицензия

Этот проект предоставляется под лицензией MIT для образовательных целей.


Создано для исследований в области безопасности и обучения | Используйте ответственно | Сообщайте об уязвимостях через надлежащие каналы

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