В WordPress-дополнении Contact Form 7 5.3.2, имеющем более 5 млн активных установок, устранена уязвимость (CVE-2020-35489), позволяющая организовать выполнение PHP-кода на сервере.
Дополнение Contact Form 7 предназначено для добавления на сайты произвольных форм обратной связи с посетителями. Уязвимость проявляется при включении функции отправки файлов в формах (например, при прикреплении изображения) и позволяет помимо явно разрешённых типов файлов загрузить на сервер файлы с любыми расширениями.
Для обхода проверки на допустимость загружаемого файла достаточно указать символ-разделитель в имени файла, отделив им допустимое расширение. Например, при передаче файла с именем "test.php\t.png" дополнение посчитает, что передана картинка в формате PNG но на диск будет сохранён файл test.php, который затем может быть вызван через прямое обращение к сайту, если в настройках web-сервера явно не запрещено выполнение скриптов в каталоге с загружаемыми данными.
Проблема решена через удаление символов-разделителей и управляющих символов из имён загружаемых файлов. Практическая возможность эксплуатации уязвимости в типовых конфигурациях оценивается как низкая, так как по умолчанию Contact Form 7 для серверов с Apache httpd создаёт в каталоге с загрузками .htaccess, запрещающий прямой доступ к загружаемым файлам ("Deny from all").
Эксплуатацию уязвимости также усложняет то, что файл сохраняется во временном каталоге со случайным именем и удаляется сразу после отправки получателю, т.е. для определения имени временного каталога на сервере должен быть разрешён вывод содержимого каталогов (Options Indexes в Apache httpd) и атакующий должен успеть отправить запрос к серверу до удаления информации. Для атаки сервер также должен допускать выполнение PHP-скриптов в обрабатываемом каталоге.
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=54281
Дополнение Contact Form 7 предназначено для добавления на сайты произвольных форм обратной связи с посетителями. Уязвимость проявляется при включении функции отправки файлов в формах (например, при прикреплении изображения) и позволяет помимо явно разрешённых типов файлов загрузить на сервер файлы с любыми расширениями.
Для обхода проверки на допустимость загружаемого файла достаточно указать символ-разделитель в имени файла, отделив им допустимое расширение. Например, при передаче файла с именем "test.php\t.png" дополнение посчитает, что передана картинка в формате PNG но на диск будет сохранён файл test.php, который затем может быть вызван через прямое обращение к сайту, если в настройках web-сервера явно не запрещено выполнение скриптов в каталоге с загружаемыми данными.
Проблема решена через удаление символов-разделителей и управляющих символов из имён загружаемых файлов. Практическая возможность эксплуатации уязвимости в типовых конфигурациях оценивается как низкая, так как по умолчанию Contact Form 7 для серверов с Apache httpd создаёт в каталоге с загрузками .htaccess, запрещающий прямой доступ к загружаемым файлам ("Deny from all").
Эксплуатацию уязвимости также усложняет то, что файл сохраняется во временном каталоге со случайным именем и удаляется сразу после отправки получателю, т.е. для определения имени временного каталога на сервере должен быть разрешён вывод содержимого каталогов (Options Indexes в Apache httpd) и атакующий должен успеть отправить запрос к серверу до удаления информации. Для атаки сервер также должен допускать выполнение PHP-скриптов в обрабатываемом каталоге.
Источник статьи: https://www.opennet.ru/opennews/art.shtml?num=54281