xaker

Критическая уязвимость в плагине Custom Contact Forms для WordPress

  • вторник, 12 августа 2014 г. в 03:10:38
http://xakep.ru/news/custom-contact-forms/

Если вы используете плагин Custom Contact Forms для WordPress, то необходимо немедленно сделать апгрейд до последней версии 5.1.0.4.

Custom-Contact-Form

Специалисты из компании Sucuri обнаружили критическую уязвимость в этом плагине, позволяющую злоумышленнику получить неавторизованный доступ к базе данных на сервере. Кто угодно может скачать или полностью удалить всю информацию.

Несколько недель назад компания Sucuri связалась с разработчиком и сообщила ему о баге, но тот не ответил. Пришлось обратиться в отдел безопасности WordPress, так что патч всё-таки выпустили.

Custom Contact Forms — довольно популярный плагин, который скачали более 600 000 раз, а уязвимость затрагивает все версии от 5.1.0.3 и ниже.

Баг находится в одном фрагменте кода, который создаёт класс CustomContactFormsAdmin в любом случае, когда пользователь просматривает страницу в папке /wp­admin/.

if (!is_admin()) { /* is front */
require_once(‘custom­contact­forms­front.php’);
$custom_contact_front = new CustomContactFormsFront();

(…)
} else { /* is admin */

$GLOBALS['ccf_current_page'] = (isset($_GET['page'])) ? $_GET['page'] : ”;
require_once(‘custom­contact­forms­admin.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, который тоже следует немедленно обновить.