Уязвимость в timthumb.php
Прочитал на Хабре, что в популярном модуле ресайза картинок timthump.php, который входит в большинство современных тем для WordPress, обнаружена критичная уязвимость. Злоумышленник может загрузить на сервер любой php-код.
Дырку обнаружил Марк Маундер на своем блоге.
А состоит она в следующем: в конфиге timthumb.php указаны несколько «доверенных» доменов (flickr.com, picasa.com, blogger.com, wordpress.com, img.youtube.com, upload.wikimedia.org, photobucket.com),с которых он может загружать картинки. Однако проверка передаваемого URL реализована с ошибкой, в результате которой можно загрузить на сервер шелл с адреса поддомена, совпадающего с доверенным доменов. Например, скрипт с адреса wordpress.com.hacker.com/shell.php будет пропущен, как доверенный, и загружен на сайт.
Радует только то, что для злоумышленник должен быть зарегистрирован на вашем блоге с правами создания постов и загрузки изображений.
Однако если у вас многопользовательский блог, советую скачать пропатченный файл timthumb.php.
Безопасный WordPress
Проблема безопасности стоит на одном из первых мест для любого веб-сайта на любом движке. Вордпресс – не исключение, хотя это и не самая дырявая система, но и он подвержен взлому и обладает уязвимостями. Конечно, если у вас скромненький личный блог с парой десятков посетителей, вы вряд ли станете жертвой хакерских атак, но даже и в этом случае, что приятного может быть в хакнутом сайте? А уж про серьезные прибыльные проекты и не говорю, тут не только моральный ущерб можно получить. Короче говоря, сразу после установки и настройки вашего WordPress-сайта рекомендую заняться его безопасностью. Надеюсь, несколько нехитрых советов вам помогут:
1. Включите использование SSL.
Между прочим, Вордпресс умеет использовать защищенный протокол SSL для обмена данными во время сеанса администратора. Это защитит ваш блог от возможного перехвата данных, правда необходимо, что ваш хостер позволял вам использовать SSL.
Просто добавьте в wp-config.php в корневой директории установки Вордпресса следующую строчку:
define('FORCE_SSL_ADMIN', true);
