Как установить и запустить WPScan в Windows

WPScan — это сканер уязвимостей сайтов, работающих на WordPress. Он работает по принципу «чёрного ящика», т. е. без доступа к исходному коду. Он может быть использован для сканирования удалённых сайтов WordPress в поисках проблем безопасности.

Процесс поиска уязвимостей заключается в следующем:

  • Для указанного сайта ищутся установленные плагины и темы. Поскольку на всех сайтах плагины помещены в одни и те же папки, то определить наличие плагина можно сделав запрос к определённому файлу. Также делаются попытки определить версии для плагинов и обнаруженных тем оформления.
  • Если плагин найден, то в базе данных проверяется, имеются ли для него уязвимости.
  • Дополнительно определяется версия WordPress и выводятся известные для этой версии уязвимости.
  • Также ищутся резервные копии файлов и баз данных, анализируется файл robots.txt, выводится список пользователей и другая полезная для аудитора безопасности сайтов информация.

WPScan обычно используют на Linux, эта программа уже предустановлена на таких дистрибутивах как Kali Linux и BlackArch. WPScan написан на Ruby и может быть запущен на любой операционной системе, которая поддерживает Ruby, в том числе и Windows. При использовании WPScan в Windows имеются некоторые нюансы, о которых будет рассказано далее.

Для установки WPScan на Windows нужно начать с установки Ruby, как это описано в этой статье.

Затем выполним поиск WPScan среди пакетов gem:

gem search WPScan

Найден пакет wpscan (3.7.5), который является свежей версии WPScan. Для установки достаточно выполнить:

gem install wpscan

Теперь нужно выполнить обновление базы данных WPScan с информацией о плагинах и темах WordPress:

wpscan --update --disable-tls-checks

Если при запуске возникла ошибка «Could not open library 'libcurl.dll', 'libcurl.so.4', 'libcurl.so.4.dll'», то её решение смотрите здесь.

Для запуска сканирований сайтов на WordPress в Windows с помощью WPScan запустите команду вида:

wpscan --url https://ДОМЕН --random-user-agent --disable-tls-checks

Например, я хочу просканировать URL https://hackware.ru:

wpscan --url https://hackware.ru --random-user-agent --disable-tls-checks

Почему WPScan не показывает уязвимости. Как получить WPVulnDB API

Раньше WPScan выводил версии найденных плагинов и тем и если плагин или тема имеет уязвимости, то выводил их. Сейчас WPScan только показывает версии WordPress, плагинов и тем, но не выводит уязвимости. Вместо них в конце сканирования показаны следующие сообщения:

[!] No WPVulnDB API Token given, as a result vulnerability data has not been output.
[!] You can get a free API token with 50 daily requests by registering at https://wpvulndb.com/users/sign_up.

В них сказано, что WPVulnDB API не заданы, поэтому информация об уязвимостях в выводе отсутствует. Вы можете получить бесплатный API, которые даёт право делать 50 запросов в день. Для этого достаточно зарегистрироваться по ссылке https://wpvulndb.com/users/sign_up.

Никакого подвоха нет — просто переходите, регистрируетесь и получаете свой бесплатный токен.

Затем к запускаемой команде добавьте опцию --api-token:

wpscan --url https://ДОМЕН --random-user-agent --disable-tls-checks --api-token API_КЛЮЧ

Пример сканирования без API ключа:


Дополнительный материал

Решение проблем

SSL peer certificate or SSH remote key was not OK

При обновлении базы данных может возникнуть ошибка:

[i] Updating the Database ...

Scan Aborted: Unable to get https://data.wpscan.org/metadata.json.sha512 (SSL peer certificate or SSH remote key was not OK)

Такая же ошибка может возникнуть при проверке сайта, использующего HTTPS протокол:

Scan Aborted: The url supplied 'https://hackware.ru/' seems to be down (SSL peer certificate or SSH remote key was not OK)

Для исправления, добавьте к вашей команде опцию --disable-tls-checks, например:

wpscan --update --disable-tls-checks

Could not open library 'libcurl.dll', 'libcurl.so.4', 'libcurl.so.4.dll'

При запуске WPScan на Windows:

wpscan --url hackware.ru

Можно столкнуться с такой проблемой:

Traceback (most recent call last):
        27: from C:/Ruby26/bin/wpscan:23:in `<main>'
        26: from C:/Ruby26/bin/wpscan:23:in `load'
        25: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/wpscan-3.7.5/bin/wpscan:4:in `<top (required)>'
        24: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        23: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        22: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/wpscan-3.7.5/lib/wpscan.rb:8:in `<top (required)>'
        21: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        20: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        19: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/cms_scanner-0.7.1/lib/cms_scanner.rb:4:in `<top (required)>'
        18: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        17: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        16: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/typhoeus-1.3.1/lib/typhoeus.rb:2:in `<top (required)>'
        15: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        14: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        13: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/ethon-0.12.0/lib/ethon.rb:15:in `<top (required)>'
        12: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        11: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
        10: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/ethon-0.12.0/lib/ethon/curl.rb:8:in `<top (required)>'
         9: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/ethon-0.12.0/lib/ethon/curl.rb:13:in `<module:Ethon>'
         8: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/ethon-0.12.0/lib/ethon/curl.rb:27:in `<module:Curl>'
         7: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
         6: from C:/Ruby26/lib/ruby/site_ruby/2.6.0/rubygems/core_ext/kernel_require.rb:92:in `require'
         5: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/ethon-0.12.0/lib/ethon/curls/settings.rb:1:in `<top (required)>'
         4: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/ethon-0.12.0/lib/ethon/curls/settings.rb:2:in `<module:Ethon>'
         3: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/ethon-0.12.0/lib/ethon/curls/settings.rb:7:in `<module:Curl>'
         2: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/ffi-1.11.3-x64-mingw32/lib/ffi/library.rb:99:in `ffi_lib'
         1: from C:/Ruby26/lib/ruby/gems/2.6.0/gems/ffi-1.11.3-x64-mingw32/lib/ffi/library.rb:99:in `map'
C:/Ruby26/lib/ruby/gems/2.6.0/gems/ffi-1.11.3-x64-mingw32/lib/ffi/library.rb:145:in `block in ffi_lib': Could not open l (LoadError)url': �� ������ ��������� ������.
.
Could not open library 'libcurl.dll': �� ������ ��������� ������.
.
Could not open library 'libcurl.so.4': �� ������ ��������� ������.
.
Could not open library 'libcurl.so.4.dll': �� ������ ��������� ������.

Её суть в том, что программа не может найти необходимый ей файл libcurl.dll. Затем она пытается найти этот файл по альтернативным именам libcurl.so.4 и libcurl.so.4.dll, что тоже ей не удаётся.

Исправить проблему довольно просто — нужно скачать файл libcurl.dll. Чтобы скачать файл libcurl.dll, переходим на официальный сайт cURL и скачиваете там последнюю версию curl под Windows:

В скаченном архиве в папке bin найдите файл libcurl-x64.dll, разархивируйте его и переименуйте в libcurl.dll. Теперь этот файл нужно переместить в папку bin установленного Ruby, например, у меня эта папка C:\Ruby26\bin\.

После этого проблема исчезнет.

Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован.