
Доказательство концепции эксплуатации CVE-2026-1357 — неаутентифицированная произвольная загрузка файлов в плагине WPvivid Backup & Migration для WordPress, позволяющая удалённое выполнение кода.
Плагин Migration, Backup, Staging – WPvivid Backup & Migration для WordPress уязвим к неаутентифицированной произвольной загрузке файлов в версиях до 0.9.123 включительно. Это связано с некорректной обработкой ошибок в процессе расшифровки RSA в сочетании с отсутствием санитизации путей при записи загруженных файлов. Когда плагину не удаётся расшифровать ключ сессии с помощью openssl_private_decrypt(), он не завершает выполнение, а вместо этого передаёт логическое значение false в инициализацию AES-шифра библиотеки phpseclib. Библиотека интерпретирует это значение false как строку нулевых байтов, что позволяет атакующему зашифровать вредоносную полезную нагрузку с помощью предсказуемого ключа из нулевых байтов. Кроме того, плагин принимает имена файлов из расшифрованной полезной нагрузки без санитизации, что позволяет выполнить обход каталога и выйти за пределы защищённого каталога резервных копий. Это делает возможным для неаутентифицированных атакующих загрузку произвольных PHP-файлов в общедоступные каталоги и достижение удалённого выполнения кода через параметр wpvivid_action=send_to_site.
https://nvd.nist.gov/vuln/detail/CVE-2026-1357
Организуйте папку проекта следующим образом:
.
├── docker-compose.yml
├── exploit.py
├── requirements.txt
├── vulnerable-plugin-folder/ # Промежуточная область для плагина
└── wp-content/ # Постоянные данные WP (создаются Docker)
Поскольку уязвимость была исправлена в более поздних версиях, вам необходимо вручную загрузить и подготовить версию 0.9.123. Выполните эти команды из корня вашего проекта:
# Скачивание уязвимой версии
wget https://downloads.wordpress.org/plugin/wpvivid-backuprestore.0.9.123.zip
# Создание промежуточного каталога
mkdir vulnerable-plugin-folder
# Распаковка и перемещение файлов
unzip wpvivid-backuprestore.0.9.123.zip
mv wpvivid-backuprestore/* vulnerable-plugin-folder/
rm -rf wpvivid-backuprestore wpvivid-backuprestore.0.9.123.zip
docker-compose up -d
http://localhost:8080 и завершите установку./wp-admin).pip install -r requirements.txt
Выполните скрипт против вашей лабораторной цели:
python3 exploit.py localhost:8080 --command "id"
В случае успеха скрипт выведет результаты выполнения команды (например, uid=33(www-data) gid=33(www-data)). Вы также можете проверить наличие шелла в вашей лабораторной среде:
docker exec wpvivid-lab ls /var/www/html/wp-content/uploads/
Этот инструмент предназначен только для образовательных целей и авторизованных исследований в области безопасности. Несанкционированный доступ к компьютерным системам является незаконным.