Разработчики популярного плагина Contact Form 7 для WordPress, который установлен более чем на 5 000 000 сайтов, выпустили исправление для критической уязвимости.
Проблема позволяла злоумышленникам обмануть защитные механизмы, отвечающие за очистку имен файлов при загрузке. В результате хакеры получали возможность загрузить вредоносный файл с произвольным кодом на уязвимый сервер, а затем запустить его как скрипт, чтобы выполнить код, скрытый внутри.
Баг был обнаружен специалистами компании Astra Security, во время аудита, который те проводили для одного из своих клиентов. Уязвимость устранили в версии 7 5.3.2, и теперь разработчики настоятельно рекомендуют всем администраторам сайтов обновить плагин как можно скорее.
Журналисты издания Bleeping Computer объясняют, что баг возникал из-за файла includes/formatting.php, который является частью Contact Form 7. В уязвимых версиях плагин не удалял специальные символы из загруженных файлов, включая управляющий символ и разделители. Из-за этого атакующий имел возможность загрузить на сервер файл с двойным расширением, например, «abc.php .jpg».
В этом примере разделителем между расширениями выступает символ табуляции (\t), и для клиентского интерфейса плагина такой файл будет выглядеть как обычное изображение в формате .jpg. Однако при загрузке на сервер Contact Form 7 осуществит парсинг имени файла, отбросит лишнее расширение, и на сервер попадет файл abc.php, то есть PHP-скрипт, к которому затем сможет получить доступ злоумышленник (для выполнения произвольного кода).