Заметка Ломаем/защищаем WordPress

ccvata

Проверенный
Сообщения
47
Симпатии
13
Баллы
8
#1
Как всегда, по началу мы собираем информацию о цели. Часто помогает неправильная настройка индексирования сайта, что приводит к просмотру содержимое отдельных разделов сайта, и к примеру получить информацию об установленных плагинах, также доступ к конфиденциальным данным или резервным копиям базы данных.

Для проверки видимых директорий достаточно выполнить запрос гугл дорок, к примеру site:example.com intitle: index of inurl:/wp-content/ . В операторе inurl: можно указать следующее:
Код:
/wp-content/
/wp-content/languages/plugins
/wp-content/languages/themes
/wp-content/plugins/
/wp-content/themes/
/wp-content/uploads/
Если возможно посмотреть директорию /wp-content/plugins/, следующий шаг по сбору информации об установленных плагинах и версиях упрощается. И да, запретить индексирование можно с помощью файла robots.txt, по умолчанию который не включен в установочный пакет WP. Вот пример запрета:
Код:
User-Agent: *
Disallow: /cgi-bin
Disallow: /wp-login.php
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Disallow: /?author=*
Allow: /
Если в файлах, хранящихся в папке uploads, имеются сведения конфиденциального характера, добавляем к этому списку строчку: Disallow: /wp-content/uploads/. С другой стороны, в файле robots.txt не рекомендуется размещать ссылки на директории, которые были созданы специально для хранения чувствительной информации.

Определяем версию WordPress.

Еще один важный шаг — идентификация версии CMS. Иначе как подобрать подходящий сплоит? Существует три быстрых способа для определения используемой на сайте версии WordPress:

1. Найти в исходном коде страницы. Она указана в метатеге generator: /> или же в тегах : <link rel='stylesheet' id='twentyfifteen-style-css' href='

Пожалуйста, Войдите или Зарегистрируйтесь, что бы увидеть скрытый контент.

/>.
2. Найти в файле readme.html (рис. 1), который входит в состав установочного пакета и находится в корне сайта. Файл может иметь и другие названия типа readme-ja.html.
3. Найти в файле ru_RU.po (рис. 2), который входит в состав установочного пакета и расположен по адресу /wp-content/languages/: «Project-Id-Version: WordPress 4.1.1\n».

Версия WordPress в файле readme.html

bf6c069b9cc5453c88ed84d7a0eb3953.png

Один из вариантов защиты в данном случае — ограничить доступ к файлам readme.html и ru_RU.po с помощью .htaccess.

Определяем установленные компоненты.

Давайте соберем информацию об установленных плагинах и темах независимо от того, активированы они или нет. Прежде всего такую информацию можно выудить из исходного кода HTML-страницы, например по JavaScript-ссылкам, из комментариев и ресурсов типа CSS, которые подгружаются на страницу. Это самый простой способ получения информации об установленных компонентах. Например, строчки ниже указывают на используемую тему twentyeleven:

Код:
<link rel="stylesheet" type="text/css" media="all" href="http://example.com/wp-content/themes/twentyeleven/style.css" />

<script src="http://example.com/wp-content/themes/twentyeleven/js/html5.js" type="text/javascript"></script>
Далее, HTTP-заголовки, такие как X-Powered-By, могут указывать на наличие плагина (например, на плагин W3 Total Cache).
Так как информация о плагинах не всегда отображается в исходном коде HTML-страницы, то обнаружить установленные компоненты можно с помощью утилиты WPScan (см. врезку). Только не забывай, что перебор путей плагинов зафиксируется в логах веб-сервера.
Получив данные об установленных компонентах, уже можно приступать к поиску уязвимостей своими силами либо найти общедоступные эксплойты на ресурсах.

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

X-Oleg

Местный
Сообщения
576
Симпатии
586
Баллы
93
#2
WordPress — довольно крупный и сложный продукт, со своими плюсами и минусами. К сожалению, в дефолтной конфигурации его безопасность находится под большим вопросом, так как даже обычный скрипткидис при наличии прямых рук и интернетов сможет пробить защиту.
Как-раз вордпрес хорошо защищен из коробки, все уязвимости в плагинах к нему, нужно осторожней с плагинами !

Для доп. защиты есть плагины для скрытия админки и блокировки указанных папок, в качестве доп. защиты можно еще установить web application firewall, или сделать кое-какие правки в .htaccess например от xss и скули !
 

zem

Пользователь
Сообщения
5
Симпатии
1
Баллы
3
#3
Пользуюсь вордпресом уже два года, полет нормальный!
 

Suren

Проверенный
Сообщения
11
Симпатии
19
Баллы
3
#4
Намного адекватнее защищаться на уровне самого сервера. Например ограничить доступ к админке по ip адресу через конфиг nginx.

location ~ ^/(wp-admin|wp-login\.php) {
if (!-f $root_path/ips-allowed/$remote_addr) {
return 404;
# здесь можно отдавать любой ответ -- как пожелаете
}
или

location ~ ^/(wp-admin|wp-login\.php) {
allow 192.168.1.0/24;
deny all;
}

В остальном же конечно, ставьте меньше проверенных плагинов, так как каждый разраб пишет и допускает ошибки, которые не всегда видны