
Docker-лаборатория, демонстрирующая CVE-2026-17532 — неаутентифицированный отражённый XSS в Seraphinite Accelerator, который через сессию администратора приводит к RCE, с эксплойт-скриптом и веб-шеллом.
Docker-лаборатория для CVE-2026-17532 — неавторизованного отражённого XSS в плагине WordPress Seraphinite Accelerator, который превращается в удалённое выполнение кода в тот момент, когда вошедший в систему администратор открывает одну сконструированную ссылку.
Полное описание: BLOG
python3 или php на хосте (только для сборки URL эксплойта — exploit.sh использует то, что доступно)docker compose down -v # очистить старые данные
docker compose up -d
docker compose logs -f wpcli
Дождитесь LAB READY, затем нажмите Ctrl-C. WordPress теперь доступен по адресу с активным уязвимым плагином и включённым кэшированием страниц.
http://127.0.0.1:8080Контейнер wpcli — одноразовый установщик; он завершает работу после настройки. Это нормально.
Войдите как администратор на http://127.0.0.1:8080/wp-admin
adminadmin-lab-pwСоберите сконструированный URL и откройте его в том же браузере:
./exploit.sh # или: ./exploit.sh http://127.0.0.1:8080
Страница зависает примерно на 5 секунд — это буквальный sleep( 5 ) в ветке selfTest плагина, а не сломанная лаборатория. Затем срабатывает XSS, записывает веб-шелл с использованием вашей административной сессии и выводит URL шелла в консоль браузера.
http://127.0.0.1:8080/wp-content/plugins/hello.php?c=id
Или откройте его без ?c= для интерактивного поля ввода.
xss.js выполняется в сессии администратора и в том же origin, поэтому он может:
GET wp-admin/plugin-editor.php и извлечь одноразовый nonce редактора из HTML.POST на admin-ajax.php с action=edit-theme-plugin-file, записав PHP-веб-шелл в hello.php.Почему hello.php? Потому что он неактивен. Когда вы редактируете активный плагин и изменение привело бы к фатальной ошибке сайта, WordPress обнаруживает ошибку и откатывает файл. Неактивные плагины пропускают эту проверку, поэтому шелл записывается и остаётся записанным. Подойдёт любой доступный для записи файл неактивного плагина; hello.php просто поставляется с WordPress по умолчанию.
Весь скрипт встроен в сконструированный URL, поэтому сервер атакующего не нужен.
docker compose down -v