Материал просмотрен 165 раз(а)

Всем привет! С вами снова litladmin и темой сегодняшней статьи стала защита WordPress сайта. Не станет открытием то, что любая более-менее осмысленная атака начинается с изучения цели и сбора информации. А для сайта на WordPress что это может быть за информация?

  1. Список пользователей. 
    Выявление учётных записей со слабым паролем. Поиск администратора сайта, подбор аутентификационных данных для этой учётной записи.
  2. Список установленных тем и плагинов.
    Выявление уязвимых элементов с целью проведения различного рода атак.
  3. Номер версии WordPress. 
    Выявление по номеру версии известных уязвимостей ядра CMS.

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

Начнём с первого этапа. Для выявления списка пользователей прекрасно подходит Kali Linux с её инструментом WPScan. Есть ещё скрипт для Nmap и модуль для Metasploit Framework, но функционируют они идентично.

Специально для этого я натравил скрипт WPScan на некоторые сайты на базе WordPress и посмотрел на её вывод:

# wpscan -u <url_site> --enumerate u

Как происходит получение пользователей

Кстати, я перед тем, как поставить сканирование, включил запись трафика. Позже, после проведения Enumerating, посмотрел дамп:

То есть скрипт просто запрашивает параметр ?author=1,2,3… для первых 10 зарегистрированных пользователей и получает редирект на логин.

Вот, даже собрал http-stream данного запроса (всё очень легко делается в WireShark):

То есть сервер просто перенаправляет по коду 301 на URL вида http://адрес_сайта/author/логин.

Проверить можно в браузере, набрав site.ru/?author=1 – перейдём на записи, созданные первым пользователем (по умолчанию – администратор сайта).

Обрабатываем GET-запрос на уровне WEB-сервера

Идея была такая. Зачем обычному посетителю блога получить все записи администратора? Не смог придумать ни одного реального сценария, поэтому решено было резать на корню подобные запросы.

Для NGINX:

if ($arg_author) {
return 403;
}

Для Apache (не силён, но примерно как-то так):

RewriteCond %{QUERY_STRING} author=\d
RewriteRule ^ /? [L,R=403]

Попытка получения списка пользователей

После изменения конфигурации попробуем получить список пользователей:

Сценарий отработал нормально.  В браузере получаем ту же картину:

Пускаем по ложному следу

В принципе, нам ничто не мешает перенаправить с 301-ым кодом на произвольный адрес и пустить скрипткиддиса по ложному следу:

if ($arg_author) {
return 301 $scheme://$server_name/author/hackersucker;
}

Конечно тут я подшутил, выгоднее всего перенаправить именно 1-ого юзера на произвольный URL, таким образом программы определения администратора пойдут по ложному следу. А тут явно видно, что “ждали” 🙂

Ну чтож, пока что всё, что я хотел рассказать.