Привет! В рамках продолжения серии статей по этичному хакингу написал опус для счастливых обладателей сайтов на CMS WordPress. А их на данный момент более 75 миллионов. На официальном сайте разработчиков движка можно посмотреть не только активность, но и другую статистику использования. В общем данная система управления контентом весьма популярная, распространённая и как следствие наиболее подвержена взломам. Редко когда вектором атаки является само ядро WordPress, как правило — устанавливаемые пользователем дополнительные плагины. Наиболее популярные типы уязвимостей в них — межсайтовый скриптинг (XSS) и SQL-инъекции. Но про это сегодня писать не буду, а поведаю как подбирают пароли к учётным записям пользователей сайтов на WordPress. К брутфорсу обычно прибегают когда в web-приложении не получается найти уязвимостей.

В одной из статей как-то уже разворачивал WordPress при помощи Docker. Сегодня нужна CMS на виртуальной машине. Готовый образ взял у Bitnami. Процесс установки не сложный, останавливаться смысла нет. Единственное что может омрачить щенячью радость использования такого быстрого коробочного решения — это то что система не имеет изначальной общеизвестной стандартной пары логин:пароль (типа bitnami:bitnami) для входа в админку. Логин стандартный — user, а вот для того чтобы узнать пароль в терминале работающей виртуалки необходимо сначала ввести ls затем cat bitnami_credentials. Видим искомую пару для входа в админку (/wp-admin):

Конечно брутфорсить такой пароль говно-дело, но и сомневаюсь что заводчик блога про «маникюр когтей у пингвинов» вряд ли будет извращаться (хотя тематика сайта может говорить об обратном…) и придумывать сложный пароль. Идём дальше.

Отдельно на виртуальной машине живёт Kali Linux. О том как установить на VB писал здесь. В собранной лаборатории Kali смотрит в NAT, а Bitnami WordPressв host-only (равно как и остальные виртуальные машины с Metasplotable 2, Broken Web Apps и т.п.)  на поднятом виртуальном адаптере. Почему Kali? Потому что для сегодняшних грубых опытов понадобиться три инструмента которые идут уже в ней предустановленными — это Hydra, WPscan и Burp Suite. Первая из списка программа перебора пароля различных служб методом грубой силы. Вторая — сканер уязвимостей WordPress, работает по принципу «black box». Ну а про Burp читайте предыдущую статью.

 I этап. Работа с Burp. 

Запустить Burp. Открыть в браузере сайт с WordPress. У меня он открывается по 192.168.56.104. Перейти на форму ввода логина и пароля (192.168.56.104/wp-admin). Ввести логин и пароль администратора. В моём случае дефолтную поменял на user:password. Логинимся. Эти действия нужны для последующей работы с содержимым запросов request и responce.

На стороне Burp получаем перехваченный пакет.

Выделенные данные понадобятся при параметризации команды в Hydra.

 II Этап. Работа с Hydra. 

Открываем терминал Kali Linux и выполняем следующую команду:

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

Пояснения по параметрам: говорим что собираемся в качестве логина использовать user, файл для перебора паролей брать в /home/kali/Downloads/pass , удачные попытки писать в лог /home/kali/Downloads/valid , использовать модуль http-post-form.  Опции для модуля: /wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&interim-login=1&testcookie=1 , где /wp-login.php — значение строки метода (см. скрин выше, по простому — адрес страницы, куда передаются данные формы), а log=^USER^&pwd=^PASS^&wp-submit=Log+In&interim-login=1&testcookie=1 — строка, которая передаётся нашей форме. ^USER^ – это переменная, который будет заменяться на имя пользователя, в нашем случаем мы указали явно пользователя (-l user -P), ^PASS^ – это переменная для пароля. :S= — значение фильтра по которому Hydra будет принимать решение об успешной авторизации. Это некая строка, которую Hydra будет искать в присланном ответе после попытки авторизации. Если эта строка будет найдена, то попытка авторизации удачная. Результат работы:

Пароль подобран. Можно ли проводить пентест надёжности паролей в Burp Suite? Можно. Это делается в Intruder’e при помощи типа атаки Sniper и небольших дополнительных настроек.

По написанному выше у внимательного читателя должен возникнуть вопрос о том, а откуда ты знаешь что пользователь user зарегистрирован в системе? Справедливо. На реальном сайте под CMS WordPress просто шарясь по записям и страницам найти учётки для брута не такое тривиальное занятие. Информацию можно накопать /wp-json/wp/v2/users/ если rest api не отключён. У меня к примеру работает и перейдя по https://artem.casa/wp-json/wp/v2/users/ можно полакомиться моим логином. Так же если WordPress не настроен то смотрим информацию по /author/user/ (через /wp-sitemap-users-1.xml). Могут ли за вас такой поиск сделать разные программы? Ответ положительный. WPScan.

 III этап. Работа с WPScan. 

Очень сильно сокращает и помогает с рутинной работой пентестера когда речь идёт о проверке безопасности сайта на WordPress. В консоли Kali выполняем команду с параметрами: wpscan --url 192.168.56.104 -e u vp. В данном случае указал что надо просканировать сайт по адресу 192.168.56.104, искать пользователей, найти уязвимые плагины. Показан результат с найденным пользователем:

Конфиг запуска базовый. Так же WPScan может производить брутфорс атаки по найденным учёткам.

Ну и вот самый-самый внимательный читатель, и от того очень мною уважаемый, резонно заметит, а вот откуда ты знаешь что форма входа на сайт лежит по /wp-admin или /wp-login или ещё где-то? Если WordPress из коробки и в плане безопасности не настраивался, то это стандартные пути входа. Так же посмотрите в сторону DIRB, jSQL Injection, google в помощь. Плавно перешли к тому что можно сделать для защиты своего блога от такого рода посягательств. К слову, данный сайт каждый день подвергается стороннему активному сканированию и сбору информации всякого рода сканерами. Какие-то добрые люди возможно хотят превратить его в бесславного тупого бойца сети ботнет. Не переживайте, ваш тоже, разница лишь в том что это вижу и пресекаю, а вы возможно нет )

 Противодейтсвие. 
Пароли
Дайте наконец коту пройтись по клавиатуре. Вот именно такой длинный, хаотичный, нелогичный, со всевозможными спец символами, цифрами и буквами разного регистра вам и нужен. Коты знают толк в паролях! Не забывайте давать ему так оттопыриваться хотя бы раз в неделю. 
Доступ к форме авторизации
Поменяйте стандартные пути доступа к форме авторизации на другие. Плагин WPS Hide Login. Если у вас серьёзный блог про кошечек, собачек и прочих хомячков высокопоставленных чиновников FRI, то однозначно ставьте двойную авторизацию на уровне сервера через .htaccess. У меня было несколько сайтов на CMS Worpress. Фиксировал случаи попытки сбрутфорсить учётки. Лечилось просто — капча на форму входа.
Плагины и движок
Не пихайте на основной сайт nulled плагины (взломанные платные). Не исключено что своими же руками подсадите бэкдор. Потестите для начала на локальном стенде каким — нибудь сканером (Acunetix, Netsparker и т.д.) Постоянно обновляйте плагины уже установленные в систем и само ядро. Что касается плагинов для безопасности, то тут что-то конкретно посоветовать не могу, пробуйте All In One WP Security & Firewall. Оно вам может и не надо, а ресурсы кушать будет.
Backup
Делайте резервные копии  как базы данных, так и содержимого сайта.

На сегодня всё. До новых радостных и удачи!