Как установить и запустить WPScan в Windows
overlamer1WPScan — это сканер уязвимостей сайтов, работающих на 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\.