Хакер #305. Многошаговые SQL-инъекции
Если вы используете плагин Custom Contact Forms для WordPress, то необходимо немедленно сделать апгрейд до последней версии 5.1.0.4.
Специалисты из компании Sucuri обнаружили критическую уязвимость в этом плагине, позволяющую злоумышленнику получить неавторизованный доступ к базе данных на сервере. Кто угодно может скачать или полностью удалить всю информацию.
Несколько недель назад компания Sucuri связалась с разработчиком и сообщила ему о баге, но тот не ответил. Пришлось обратиться в отдел безопасности WordPress, так что патч всё-таки выпустили.
Custom Contact Forms — довольно популярный плагин, который скачали более 600 000 раз, а уязвимость затрагивает все версии от 5.1.0.3 и ниже.
Баг находится в одном фрагменте кода, который создаёт класс CustomContactFormsAdmin в любом случае, когда пользователь просматривает страницу в папке /wpadmin/.
if (!is_admin()) { /* is front */
require_once(‘customcontactformsfront.php’);
$custom_contact_front = new CustomContactFormsFront();
(…)
} else { /* is admin */
$GLOBALS['ccf_current_page'] = (isset($_GET['page'])) ? $_GET['page'] : ”;
require_once(‘customcontactformsadmin.php’);
$custom_contact_admin = new CustomContactFormsAdmin();
(…)
add_action(‘init’, array(&$custom_contact_admin, ‘adminInit’), 1);
(…)
}
Функция adminInit()
скрывает за собой весьма интересную функциональность.
function adminInit() {
$this>downloadExportFile();
$this>downloadCSVExportFile();
$this>runImport();
}
В частности, функция downloadExportFile()
используется для генерации и скачивания SQL-дампа параметров плагина, а функция runImport()
делает в точности обратную операцию, импортируя бэкап SQL обратно в базу данных. Таким образом, кто угодно может отредактировать дамп и добавить в базу произвольные запросы.
Кстати, несколько дней назад уязвимость нашли в другом популярном плагине MailPoet, который тоже следует немедленно обновить.