
Сканер веб-уязвимостей и инструмент эксплуатации с режимами POC/EXP для известных CVE в веб-приложениях, таких как Weblogic, Shiro, Struts2 и Tomcat; поддерживает пакетное сканирование через FOFA/Shodan.
[Нажмите здесь для английской версии]
Vulmap — это инструмент для сканирования и проверки веб-уязвимостей, который может сканировать веб-приложения на наличие уязвимостей, а также имеет функцию эксплуатации уязвимостей. В настоящее время поддерживаемые веб-приложения включают activemq, flink, shiro, solr, struts2, tomcat, unomi, drupal, elasticsearch, fastjson, jenkins, nexus, weblogic, jboss, spring, thinkphp
Vulmap объединяет сканирование уязвимостей и их проверку (эксплуатацию), что значительно облегчает тестировщикам выполнение следующих шагов после обнаружения уязвимости. Инструмент стремится к эффективности и удобству.
Эффективность: постепенно в процессе разработки были добавлены массовое сканирование, Fofa, Shodan для массового сканирования, а также поддержка многопоточности с по умолчанию включёнными корутинами для максимально быстрого сканирования большого количества активов.
Удобство: уязвимость можно эксплуатировать сразу после обнаружения; результаты сканирования большого количества активов можно выводить в нескольких форматах.
Начиная с версии Vulmap 0.8, поддерживается прямое сканирование уязвимостей на основе файла результатов распознавания dismap с помощью
-f output.txt
В операционной системе должен быть установлен python3, рекомендуется python3.8 или новее.
# git или скачать релиз для получения исходного кода
git clone https://github.com/zhzyker/vulmap.git
# Установка необходимых зависимостей Python
pip3 install -r requirements.txt
# Linux & MacOS & Windows
python3 vulmap.py -u http://example.com
Настройка Fofa Api, Shodan Api и Ceye
Для использования Fofa или Shodan необходимо изменить конфигурацию в vulmap.py:
# Замените xxxxxxxxxx на email от fofa
globals.set_value("fofa_email", "xxxxxxxxxx")
# Замените xxxxxxxxxx на ключ от fofa
globals.set_value("fofa_key", "xxxxxxxxxx")
# Замените xxxxxxxxxx на свой ключ от shodan
globals.set_value("shodan_key", "xxxxxxxxxx")
# Замените xxxxxxxxxx на свой домен
globals.set_value("ceye_domain","xxxxxxxxxx")
# Замените xxxxxxxxxx на свой токен от ceye
globals.set_value("ceye_token", "xxxxxxxxxx")
К исходной лицензии LICENSE добавляется следующий отказ от ответственности. В случае конфликта с исходной лицензией преимущественную силу имеет этот отказ.
Запрещается несанкционированное коммерческое использование этого инструмента, а также несанкционированное коммерческое использование после вторичной разработки.
Данный инструмент предназначен только для легитимных действий по обеспечению безопасности на предприятиях, имеющих соответствующие разрешения. При использовании данного инструмента для проверки вы должны убедиться, что такие действия соответствуют местным законам и нормативным актам, и что у вас есть достаточные полномочия.
Если вы совершаете какие-либо незаконные действия при использовании данного инструмента, вы несёте полную ответственность за последствия; мы не несём никакой юридической или сопутствующей ответственности.
Перед использованием данного инструмента, пожалуйста, внимательно прочитайте и полностью поймите все положения. Положения об ограничениях, отказе от ответственности или другие пункты, затрагивающие ваши важные права, могут быть выделены жирным шрифтом или подчёркиванием для привлечения вашего внимания. Если вы не прочитали, не поняли и не приняли все условия данного соглашения, пожалуйста, не используйте этот инструмент. Ваше использование или любое другое явное или подразумеваемое выражение согласия с данным соглашением означает, что вы прочитали и согласны соблюдать его условия.
YouTube: https://www.youtube.com/watch?v=g4czwS1Snc4
Bilibili: https://www.bilibili.com/video/BV1Fy4y1v7rd
Gif:
Дополнительные параметры:
-h, --help Показать это справочное сообщение и выйти
-u URL, --url URL Целевой URL (например, -u "http://example.com")
-f FILE, --file FILE Выбрать файл со списком целей, каждый URL должен быть на отдельной строке (например, -f "/home/user/list.txt")
--fofa keyword Использовать fofa api для массового сканирования (например, --fofa "app=Apache-Shiro")
--shodan keyword Использовать shodan api для массового сканирования (например, --shodan "Shiro")
-m MODE, --mode MODE Режим поддерживает "poc" и "exp". Можно опустить этот параметр; по умолчанию используется режим "poc"
-a APP [APP ...] Указать веб-приложение (например, "weblogic"). Если не указано, автоматическое определение по отпечатку
-c CMD, --cmd CMD Пользовательская команда для удалённого выполнения команды; по умолчанию echo случайного md5
-v VULN, --vuln VULN Используемая уязвимость; необходимо указать номер уязвимости (например, -v "CVE-2019-2729")
-t NUM, --thread NUM Количество потоков сканирования; по умолчанию 10 потоков
--dnslog server DNS-лог сервер (hyuga, dnslog, ceye). По умолчанию автоматический опрос
--output-text file Вывод результатов сканирования в txt файл (например, "result.txt")
--output-json file Вывод результатов сканирования в json файл (например, "result.json")
--proxy-socks SOCKS Использовать socks прокси (например, --proxy-socks 127.0.0.1:1080)
--proxy-http HTTP Использовать http прокси (например, --proxy-http 127.0.0.1:8080)
--user-agent UA Пользовательский User-Agent
--fofa-size SIZE Количество активов, получаемых через fofa api; по умолчанию 100, доступно (1-10000)
--delay DELAY Задержка между запросами; по умолчанию 0с
--timeout TIMEOUT Тайм-аут; по умолчанию 5с
--list Показать список поддерживаемых уязвимостей
--debug В режиме exp показывает запросы и ответы; в режиме poc показывает список сканируемых уязвимостей
--check Проверка доступности цели (on и off); по умолчанию on
# Проверить все уязвимости в режиме poc; если не указать -a all, по умолчанию включено автоматическое определение
python3 vulmap.py -u http://example.com
# Проверить сайт на наличие уязвимостей struts2
python3 vulmap.py -u http://example.com -a struts2
# Использовать уязвимость CVE-2019-2729 на WebLogic по адресу http://example.com:7001
python3 vulmap.py -u http://example.com:7001 -v CVE-2019-2729
python3 vulmap.py -u http://example.com:7001 -m exp -v CVE-2019-2729
# Массово сканировать URL-адреса из файла list.txt
python3 vulmap.py -f list.txt