Подготовлено на основе справочной информации из Kali.Tools
Про Plecost мы уже писали («Сканируем на уязвимости WordPress: WPScanner и Plecost»). В той статье указывается, что проект давно не обновлялся, а для WordPress, которая обновляется быстро и автоматически или с помощью простых действий в графическом интерфейсе, все не обновляемые сканеры быстро «протухают» и становятся бесполезными.
Не так давно автор Plecost показал нам третью версию своей программы, которая получила номер 1.0.1.
Новое в Plecost 1.0.1:
- Исправлены ошибки.
- Новый движок: более быстрый и для него нужно меньше памяти.
- Улучшена система CVE и хранения: теперь Plecost получает уязвимости напрямую от NIST и создаёт локальную базу SQLite с отфильтрованной информация для WordPress и его плагинов.
- Уязвимости WordPress: теперь Plecost также работает с уязвимостями WordPress (а не только его плагинов).
- Локальная база данных уязвимостей поддерживает запросы. Теперь по ней можно искать для конкретной версии wordpress или плагина.
- Ну а все изменения в файле CHANGELOG.
Установка Plecost 1.0.1
В Kali Linux Plecost уже установлен. НО: на данный момент в Kali до сих пор старая версия, которая уже мало интересна. Я покажу установку на примере дистрибутива LMDE 2 (аналогично делается в Debian, Mint, Ubuntu). Установить в Kali у меня не получилось — кто знает как, подскажите в комментариях.
sudo apt-get install python3-pip python3-dev python3-wheel sudo python3 -m pip install plecost
Работа с Plecost 1.0.1
Сканирование теперь запускается элементарной командой:
plecost https://www.salesforce.com/products/platform/overview/
Чуть более сложное сканирование: увеличиваем подробность и экспортируем результаты в форматах JSON и XML:
JSON
plecost -v https://www.salesforce.com/products/platform/overview/ -o results.json
XML
plecost -v https://www.salesforce.com/products/platform/overview/ -o results.xml
Продвинутые опции сканирования Plecost 1.0.1
Без проверки версии WordPress, только плагинов:
plecost -nc https://www.salesforce.com/products/platform/overview/
Всё равно сканируем, даже если это не WordPress:
plecost -f https://www.salesforce.com/products/platform/overview/
Отображать только короткий баннер:
plecost -nb https://www.salesforce.com/products/platform/overview/
Список доступных wordlists
mial@mint ~ $ plecost -nb -l // Plecost - WordPress finger printer Tool - v1.0.0 Available word lists: 1 - plugin_list_50.txt 2 - plugin_list_1000.txt 3 - plugin_list_100.txt 4 - plugin_list_250.txt 6 - plugin_list_huge.txt 7 - plugin_list_10.txt mial@mint ~ $
Выбираем wordlist в списке:
plecost -nb -w plugin_list_10.txt https://www.salesforce.com/products/platform/overview/
Повышение параллелизма (ИСПОЛЬЗОВАТЬ ОСТОРОЖНО, МОЖЕТ ПОЛОЖИТЬ ТЕСТИРУЕМЫЙ ВЕБ-САЙТ!)
plecost --concurrency 10 https://www.salesforce.com/products/platform/overview/
Или…
plecost -c 10 https://www.salesforce.com/products/platform/overview/
Ещё больше опций по команде —help:
plecost -h
Обновление Plecost
Новые версии и уязвимости открываются ежедневно, вы можете загрузить их в локальную базу:
Обновление базы данных уязвимостей:
sudo plecost --update-cve
Обновление списка плагинов:
sudo plecost --update-plugins
Чтение локальной базы данных уязвимостей
Список всех известных плагинов с уязвимостями:
mial@mint ~ $ plecost -nb --show-plugins // Plecost - WordPress finger printer Tool - v1.0.0 [*] Plugins with vulnerabilities known: { 0 } - ab_google_map_travel { 1 } - acobot_live_chat_%26_contact_form { 2 } - activehelper_livehelp_live_chat { 3 } - ad-manager { 4 } - alipay { 5 } - all-video-gallery { 6 } - all_in_one_seo_pack { 7 } - all_in_one_wordpress_security_and_firewall { 8 } - another_wordpress_classifieds_plugin { 9 } - anyfont { 10 } - april%27s_super_functions_pack { 11 } - audio_player { 12 } - banner_effect_header { 13 } - bannerman { 14 } - bib2html { 15 } - bic_media_widget { 16 } - bird_feeder { 17 } - blogstand-smart-banner { 18 } - blue_wrench_video_widget { 19 } - bookx { 20 } - bradesco_gateway { 21 } - bsk_pdf_manager { 22 } - bulletproof-security { 23 } - bulletproof_security { 24 } - cakifo
……..
Показать уязвимости по конкретному плагину:
plecost -nb -vp google_analytics
Показать подробности по конкретной CVE:
plecost -nb --cve CVE-2014-9174
Нужны подопытные? Список ста тысяч веб-сайтов на WordPress.
Установил Plecost:
sudo apt-get install python3-pip python3-dev python3-wheel
sudo python3 -m pip install plecost
Plecost (plecost-1.0.7) установился в директорию: /usr/local/lib/python3.5/dist-packages
Запустил: plecost
Выдало ошибку: «TypeError: multiple bases have instance lay-out conflict»
Обновил aiohttp: sudo python3 -m pip install —upgrade aiohttp==0.15.3
Поправил версию aiohttp на 0.15.3 в файле: gedit /usr/local/lib/python3.5/dist-packages/plecost-1.0.7.egg-info/requires.txt
Запустил: plecost
Ошибка исчезла.
Запустил обновление: plecost —update-cve
Выдало ошибку: «ImportError: cannot import name ‘HTMLParseError»
Обновил beautifulsoup4: sudo python3 -m pip install —upgrade beautifulsoup4==4.4.1
Поправил версию beautifulsoup4 на 4.4.1 в файле: gedit /usr/local/lib/python3.5/dist-packages/plecost-1.0.7.egg-info/requires.txt
Запустил обновление: plecost —update-cve
Ошибка исчезла.
Запустил сканирование сайта по http: plecost http://TARGET
Сканирование не работает, выполняется один процесс «Looking for WordPress installation…» и все.
Запустил сканирование сайта по http с флагом -f: plecost -f http://TARGET
Выдало ошибку: «RuntimeError: Event loop is closed»
Добавил в файл: gedit /usr/local/lib/python3.5/dist-packages/plecost_lib/plecost.py
после строки: def main():
следующий код (соблюдайте табуляцию):
try:
from asyncio import JoinableQueue as Queue
except ImportError:
from asyncio import Queue
Заменил в файле: gedit /usr/local/lib/python3.5/dist-packages/plecost_lib/libs/utils.py
строку: self.q = asyncio.JoinableQueue (loop=self.loop)
на строку: self.q = asyncio.Queue(loop=self.loop)
Запустил сканирование сайта по http с флагом -f: plecost -f http://TARGET
Ошибка исчезла.
Весь остальной функционал тоже починился. Все.
Можно PDF книги? Спасибо.
Единственное, в коментарие выше импорты Queue нужно добавлять не после def main(): а до, тогда все работает.