Привет! В рамках продолжения серии статей по этичному хакингу написал опус для счастливых обладателей сайтов на 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 и выполняем следующую команду:
hydra -l user -P /home/kali/Downloads/pass -o /home/kali/Downloads/valid 192.168.56.104 http-post-form "/wp-login.php:log=^USER^&pwd=^PASS^&wp-submit=Log+In&interim-login=1&testcookie=1:S=You have logged in successfully."
Пояснения по параметрам: говорим что собираемся в качестве логина использовать 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 в помощь. Плавно перешли к тому что можно сделать для защиты своего блога от такого рода посягательств. К слову, данный сайт каждый день подвергается стороннему активному сканированию и сбору информации всякого рода сканерами. Какие-то добрые люди возможно хотят превратить его в бесславного тупого бойца сети ботнет. Не переживайте, ваш тоже, разница лишь в том что это вижу и пресекаю, а вы возможно нет )
Противодейтсвие.На сегодня всё. До новых радостных и удачи!
Отправляя сообщение, Вы разрешаете сбор и обработку персональных данных. Политика конфиденциальности.