• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
+380 (44) 364 05 71

WordPress  является  самой популярной платформой для создания блогов и новостных  лент.  Согласно  исследованию  w3techs.com  21.5%  всех веб сайтов на данный момент созданы именно на WordPress. Из-за своей популярности эта cms является объектом пристального внимания злоумышленников.

Взлом админпанели.

Обычно при установке логин администратора устанавливается как admin, что значительно облегчает подбор пароля к админке. Чтобы сменить логин достаточно создать нового пользователя с произвольным именем и привилегиями администратора, перезайти в админку под этим пользователем и удалить пользователя admin, если под admin были сделаны какие-либо записи их можно перекинуть на нового пользователя. Сменить логин можно так же отредактировав запись в базе данных. Для этого подключаемся к серверу MySQL(можно как
консолью так и через phpMyAdmin) и выполняем SQL-запрос:

UPDATE wp_users SET user_login = 'new_login' WHERE user_login = 'admin';

new_login — имя нового администратора. Данный способ менее желателен т. к. может вызвать некоторые проблемы с записями или коментариями пользователя admin. Так например, картинка аватарки пользователя может слететь или записи сделаные под admin не сменят автора. Пароль для нового пользователя так же желательно выставить более сложный, например воспользовавшись генераторами паролей.

При вводе неверного логина админка сообщает что имя пользователя неверное, если же имя пользователя коректное а пароль неверный, то сообщение проинформирует о том что пароль для пользователя не подходит. Эта информация достаточно упрощает подбор пароля. Убрать этот вывод можно добавив в код файла functions.php используемой темы следующий фрагмент:

add_filter('login_errors', create_function('$a', "return null;"));

После этого сообщения об ошибке введенных данных выводится не будут. Можно вместо "return null;" вписать нечто вроде "return ?authentication failed?;" чтобы выводилось соответствующее сообщение. Смена ключей безопасности. В файле wp-config.php указаны ключи для аунтефикации:

define('AUTH_KEY', '');
define('SECURE_AUTH_KEY', '');
define('LOGGED_IN_KEY', '');
define('NONCE_KEY', '');
define('AUTH_SALT', '');
define('SECURE_AUTH_SALT', '');
define('LOGGED_IN_SALT', '');
define('NONCE_SALT', '');


В более старых версиях строк _SALT может не быть. Сгенерировать эти ключи можно пройдя по ссылке api.wordpress.org/secret-key/1.1/salt/ сгенерированые ключи необходимо вписать в файл wp-config.php
Ограничить доступ к админке по IP можно прописав в файле .htaccess корневого каталога следующее:

<Files wp-login.php>
Order deny,allow
Deny from All
Allow from 10.32.0.5
</Files>

Где 10.32.0.5 — внешний IP адрес, с которого нужно обеспечить доступ. Хорошим плагином по защите административной части является Login LockDown позволяющий блокировать временно IP с которых производились неудачные попытки авторизации.

Уязвимости в скриптах.

Необходимо всегда проверять наличие новых версий WordPress а так же плагинов. В случаях когда это не возможно можно попытатся скрыть факт использования WordPress или используемых плагинов.

Из корневой папки сайте необходимо удалить информационные файлы readme.html и license.txt. Похожие файлы могут быть в папке с используемой темой, их тоже
желательно удалить. В папке с используемой темой, в файле header.php необходимо найти код:

<meta name="generator" content="WordPress <?php bloginfo('version'); ?>"
/>

И удалить в нем эту часть - <?php bloginfo('version'); ?>
В файле functions.php в этой же папке поместить код:

<?php remove_action('wp_head', 'wp_generator'); ?>

В папке wp-includes есть файл version.php в котором можно изменить строчку

$wp_version = ?2.5.1?;

Но это может вызвать проблемы при обновлении, рекомендуется выставлять правильную версию в этой переменной перед обновлением WordPress. В папках wp-content , wp-content/plugins, wp-content/uploads необходимо создать пустые файлы index.html для того чтобы было не возможно просмотреть список директории и определить какие плагины используются. Для защиты папок и удаления данных о версии WordPress можно воспользоватся плагином Secure WordPress.

Так же необходимо регулярно удалять неактивных пользователей и неиспользуемые
темы и плагины.

Взлом базы данных

По умолчанию WordPress использует префикс таблиц wp_. Что дает возможность атаковать сайт используя SQL-инъекцию. Если префикс при установке не был сменен со стандартного, то его можно изменить следующим способом. Для начала нужно сделать резервную копию базы данных. После чего в файле wp-config.php изменить строку:

$table_prefix = "wp_"

вместо wp_ нужно вписать новый префикс, например b3t4g_
Далее нужно сменить префиксы в таблицах базы данных. Зайдя в phpMyAdmin нужно последовательно выполнить несколько SQL запросов:

RENAME TABLE 'wp_posts' TO 'b3t4g_posts';

Таких запросов нужно выполнить около 10 подставляя в 'wp_posts' имена существующих таблиц в базе данных а в 'b3t4g_posts' имена этих же таблиц но с новым префиксом. В таблицах wp_options и wp_usermeta некоторые плагины могут хранить данные использующие старый префикс, их нужно найти SQL запросами:

SELECT * FROM b3t4g_options WHERE option_name LIKE 'wp_%';
SELECT * FROM b3t4g_usermeta WHERE meta_key LIKE 'wp_%';

Найденные значения нужно изменить средствами phpMyAdmin на значения с новым префиксом. Сменить префикс базы данных можно так же используя плагины наподобие WP Table Prefix Changer.

В файле wp-config.php содержится информация о базе данных и другие важные данные. Этот файл можно переместить выше корневой директории WordPress. Если перемещение файла не возможно по каким-либо причинам его можно защитить прописав в .htaccess корневой директории:

<files wp-config.php>
Order deny,allow
deny from all
</files>

Так же необходимо помнить о резервном копировании файлов и баз данных. Делать это можно как вручную так и с помощью таких плагинов как CYAN Backup, BackWPup Free и UpdraftPlus.

 

Дата: 14.03.2014
Автор: Антон
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
Спасибо, что выбираете FREEhost.UA