Если ваш сайт работает на YOOtheme Pro, проверьте версию сегодня. Версии с 5.0.0 по 5.0.52 уже атакуют: через уязвимость на сайт загружают вебшелл. Исправление вышло в 5.0.53. Я Андрей, и совет у меня простой: сначала обновитесь, потом проверьте, не успел ли кто-то проникнуть на сайт раньше. Второй шаг не менее важен. Обновление темы не удалит файл, который злоумышленник уже оставил на сервере.
Что случилось с YOOtheme Pro?
YOOtheme Pro - платная тема и конструктор страниц для WordPress и Joomla. В обработчике изображений нашли уязвимость CVE-2026-102785. По журналу изменений YOOtheme, версия 5.0.53 закрыла удаленное выполнение кода без авторизации через этот обработчик. Обновление вышло 21 октября 2026 года, запись о CVE опубликовали на следующий день, а с 23 октября стали доступны готовые примеры эксплуатации. Оценка по CVSS 4.0 - 10.0 из 10. В записи CVE также указано, что атаку можно автоматизировать.
На пальцах: обработчик подписывает ссылки на картинки, но подпись не охватывала все дополнительные операции с изображением и путь сохранения результата. Злоумышленник мог взять подписанную ссылку на картинку, уже опубликованную на вашем сайте, добавить свои операции и заставить сервер записать .php-файл в wp-content/uploads. Вход в админку ему для этого не нужен.
Есть неприятная ловушка. Сервер может ответить ошибкой HTTP 500, но файл при этом все равно запишется. Так что запросы с ошибкой в логах не считайте безобидными. Подброшенный файл может быть настоящим JPEG с PHP-кодом в метаданных - с виду обычная картинка.
Исследователи Palo Alto Networks Unit 42 зафиксировали автоматические атаки. Первый вебшелл записали через два дня после выхода патча. В их отчете сканер проверил подброшенный файл примерно через три секунды. Еще через две минуты человек загрузил второй вебшелл, записал файлы в wp-content/uploads/ALFA_DATA/ и попытался установить инструмент удаленного доступа gsocket. Неожиданный PHP-файл в uploads - не задача «на потом».
Что сделать сегодня
- Проверьте версию. В WordPress зайдите в
Appearance > Themesили откройте настройки YOOtheme. В Joomla смотрите менеджер расширений. Если стоит версия с 5.0.0 по 5.0.52, обновитесь до 5.0.53 или новее. - Убедитесь, что обновление установилось. YOOtheme Pro - платный продукт, апдейты зависят от вашего аккаунта YOOtheme и API-ключа. Из-за просроченного ключа сайт может остаться на старой версии, хотя внешне все работает. После обновления еще раз сверьте номер.
- Проверьте файлы и логи. Если сайт работал на уязвимой версии после примерно 23 октября, сделайте это даже при уже установленной 5.0.53. Апдейт закрывает дыру, но не убирает вебшелл.
Если вы платите за обслуживание WordPress, попросите специалиста подтвердить две вещи: установленную версию и результат проверки uploads. Ответ «обновления сделаны» на второй вопрос не отвечает.
Проверьте папку uploads на PHP-файлы
На сайте WordPress в wp-content/uploads обычно не должно быть PHP-файлов. Есть доступ к файловому менеджеру или SSH? Начните с этой папки. Если доступа нет, попросите хостинг или разработчика выполнить команды ниже. И не открывайте подозрительный PHP-файл в браузере «просто посмотреть».
find wp-content/uploads -name "*.php"
find wp-content/uploads -name "yt*.php"
ls -la wp-content/uploads/ALFA_DATA
grep -rl "<?php" wp-content/uploads --include="*.jpg" --include="*.jpeg" --include="*.png"
find wp-content/uploads -type f -newermt 2026-10-21
Unit 42 описали имена первых вебшеллов по схеме: yt, семь шестнадцатеричных символов и .php. Файл лежал прямо в uploads - например, yt3a9f0c1.php. Но одним шаблоном не ограничивайтесь. Другое имя, PHP-файл глубже в папке с датой или неожиданная директория ALFA_DATA тоже требуют проверки. Последняя команда покажет недавно измененные файлы шире. Сам по себе свежий файл еще не значит, что он вредоносный.
Проверьте логи доступа - ошибки тоже
Попросите хостинг выдать логи запросов с 21 октября, особенно если после примерно 23 октября сайт еще работал на уязвимой версии. Ищите запросы с yootheme= вместе с FromFile или Save в параметрах адреса. Проверьте и обращения к .php-файлам внутри uploads. Один совпавший запрос - еще не диагноз. Но повод разобраться, особенно если среди файлов тоже нашлось что-то странное.
Не отбрасывайте ответы HTTP 500: обработчик мог записать файл и лишь потом сообщить об ошибке. Если логи уже удалились при ротации или хостинг не может их выдать, так и скажите тому, кто проверяет сайт. Ставить галочку «все чисто» рано.
Запретите запуск PHP в uploads - для подстраховки
Uploads нужна для медиафайлов, а не для запуска скриптов. Если сайт работает на Apache и сервер разрешает правила .htaccess, создайте файл wp-content/uploads/.htaccess с таким содержимым:
<FilesMatch "\.php$">
Require all denied
</FilesMatch>
На Nginx .htaccess не сработает - аналогичное правило хостинг должен добавить в настройки сервера и проверить, что оно действует. Это страховка, а не замена обновлению YOOtheme или очистке после взлома. Команды, которые успели выполниться до запрета, правило не отменит.
Запустите сканер, но не останавливайтесь на нем
После проверки файлов и логов запустите привычный сканер малвари. Он может найти другие изменения. Но файл, который остается корректным JPEG и прячет PHP в метаданных, сканер способен пропустить, если смотрит на содержимое как на обычную картинку. Одного результата «угроз нет» мне бы не хватило. Почему так бывает, подробнее объясняю в статье о том, что проверяет и пропускает сканер malware.
Если у вас Joomla
Уязвимые версии YOOtheme Pro и исправление 5.0.53 относятся и к Joomla. Посмотрите версию в менеджере расширений, затем проверьте папки с медиафайлами и изображениями на PHP-файлы. У Joomla другая структура каталогов: пути wp-content/uploads там нет. Не копируйте команды для WordPress без замены пути.
Если нашли вебшелл
Не удаляйте один файл с мыслью «ну вот, починили». Первый вебшелл умеет выполнять команды и дает форму загрузки файлов. Если им воспользовались, считайте потенциально скомпрометированными и весь сайт, и учетную запись на сервере. Сохраните найденные файлы и сведения о них, свяжитесь с хостингом, проверьте остальные изменения. Пересмотрите список администраторов, смените пароли. Дальше - восстановление из заведомо чистого бэкапа или полноценная очистка.
Порядок действий расписан в статье что делать после взлома WordPress. Если разбирать файлы и логи некому, можно заказать очистку взломанного сайта. Угадывать весь день, какой файл был «тем самым», - плохой план: через первый уже могли загрузить второй.
Начните с номера версии. Потом проверьте uploads, даже если апдейт прошел успешно. Это две разные задачи.