Содержание
Всем привет! С вами снова litladmin и темой сегодняшней статьи стала защита WordPress сайта. Не станет открытием то, что любая более-менее осмысленная атака начинается с изучения цели и сбора информации. А для сайта на WordPress что это может быть за информация?
- Список пользователей.
Выявление учётных записей со слабым паролем. Поиск администратора сайта, подбор аутентификационных данных для этой учётной записи. - Список установленных тем и плагинов.
Выявление уязвимых элементов с целью проведения различного рода атак. - Номер версии 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, таким образом программы определения администратора пойдут по ложному следу. А тут явно видно, что “ждали”
Ну чтож, пока что всё, что я хотел рассказать.
Comments: