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

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

overlamer1


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

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

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

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

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


gem search WPScan


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


gem install wpscan


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


wpscan --update --disable-tls-checks


Для запуска сканирований сайтов на 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\.


Report Page