Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
webstor — Перечисляет все веб-сайты в сетях организации через DNS zone transfers и masscan, сохраняет ответы и позволяет выполнять запросы для поиска известных уязвимых веб-технологий и пользовательских regex-шаблонов. | Kitploit
Инструменты/GitHubGitHub/rossgeerlings/webstor
РазведкаСканеры уязвимостейСбор информацииВеб-безопасностьАнализ DNS
GitHubrossgeerlings/webstor

webstor

Перечисляет все веб-сайты в сетях организации через DNS zone transfers и masscan, сохраняет ответы и позволяет выполнять запросы для поиска известных уязвимых веб-технологий и пользовательских regex-шаблонов.

Репозиторий
1582012 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

 

WebStor

Быстрая идентификация уязвимых веб-технологий в вашей организации

WebStor — это инструмент, реализованный на Python под лицензией MIT, предназначенный для быстрого перечисления всех веб-сайтов во всех сетях вашей организации, сохранения их ответов и поиска известных веб-технологий и версий, в том числе тех, которые имеют уязвимости нулевого дня. Он призван, в частности, решить уникальную проблему, возникающую в организациях среднего и крупного размера с децентрализованным администрированием, где практически невозможно отследить все веб-технологии, развернутые различными администраторами в разных подразделениях и сетях.

WebStor достигает своей цели, выполняя следующие действия:

  1. Выполняет передачу зон DNS для сбора A- и CNAME-записей организации.
  2. Использует Masscan для сканирования открытых портов HTTP/HTTPS в сетевых диапазонах организации, а также любых IP-адресов за пределами этих диапазонов, которые присутствовали в A- и CNAME-записях организации.
  3. Использует библиотеку Python requests для сбора всех ответов и сохранения их в базе данных MariaDB. Все DNS-имена, соответствующие IP-адресу с открытыми портами HTTP/HTTPS, будут включены в запросы вместе с IP-адресом, чтобы сайты, использующие разные заголовки, не были пропущены.
  4. Загружает базу данных веб-технологий Wappalyzer и сохраняет её в базе данных MariaDB, позволяя пользователям искать местоположения распространённой веб-технологии по имени.
  5. Позволяет пользователям искать местоположения, в которых в сохранённых ответах содержатся пользовательские регулярные выражения.

Поддерживаемые платформы

В настоящее время WebStor работает в системах Linux. Поскольку он написан на Python, его адаптация для работы в Windows тривиальна и, вероятно, произойдет в будущем.

Предварительные требования

Приложения

  • Masscan
    • Если вы собираетесь использовать cron-задачу для обновления базы данных (типичный случай), крайне важно настроить sudo nopasswd для любого пользователя, выполняющего сканирование Masscan через WebStor.
  • MariaDB 10.0.5 или новее
    • Учётные данные по умолчанию, используемые WebStor: root и пустой пароль. См. раздел «Безопасные опции» для настройки WebStor на использование других имен пользователей и паролей для подключения к базе данных.

Библиотеки Python

  • pip3 install dnspython
  • pip3 install beautifulsoup4
  • pip3 install mysql-connector-python
  • pip3 install js-regex
  • pip3 install gevent
  • pip3 install requests

Доступность через PyPI

  • Если вы просто хотите запустить WebStor, не редактируя его, установите необходимые приложения, а затем выполните 'sudo pip3 install webstor'.
  • После установки WebStor через PyPI, webstor будет доступен в PATH и может быть запущен из командной строки независимо от рабочей директории командой 'webstor' вместо 'webstor.py', например: 'webstor -g'.

Базовое использование

root@kitploit:~
       webstor.py [-h] [--ADD-HTTP-PORT HTTPPORTTOADD] [--CLEAR-HTTP]
                  [--ADD-HTTPS-PORT HTTPSPORTTOADD] [--CLEAR-HTTPS]
                  [--ADD-CUSTOM-FINGERPRINT FINGERPRINT]
                  [--DELETE-CUSTOM-FINGERPRINT FINGERPRINTNAMETODELETE]
                  [--IMPORT-CUSTOM-FINGERPRINT IMPORTFINGERPRINTFILE]
                  [--CLEAR-CUSTOM-FINGERPRINTS] [--SHOW-CONFIG]
                  [--SHOW-CONFIG-FULL] [--RUN-MASSCAN]
                  [--SET-MASSCAN-RANGES SETSCANRANGES]
                  [--ADD-RANGE RANGETOADD] [--DELETE-RANGE RANGETODELETE]
                  [--IMPORT-MASSCAN-RANGES IMPORTSCANRANGES]
                  [--ADD-PATH PATHTOADD] [--DELETE-PATH PATHTODELETE]
                  [--CLEAR-PATHS] [--REFRESH-RESPONSES]
                  [--RESPONSES-ADD-FOR-PATH RESPONSESADDFORPATH]
                  [--SEARCH-PATTERN SEARCHPATTERN]
                  [--SEARCH-CUSTOM-FINGERPRINT SEARCHFINGERPRINT]
                  [--SEARCH-WAPPALYZER SEARCHWAPPALYZER] [--NO-TSIG-KEY]
                  [--TSIG-KEY-IMPORT IMPORTTSIGFILE]
                  [--TSIG-KEY-REPLACE REPLACEMENTTSIGFILE]
                  [--DELETE-TSIG TSIGTODELETE]
                  [--USE-TSIG-FILE-ONLY USETSIGFILEONLY]
                  [--DOWNLOAD-NEW-WAPPALYZER] [--LIST-WAPPALYZER-TECH-NAMES]
                  [--ZONE-XFER] [--ADD-DOMAIN DOMAINDETAILS]
                  [--DELETE-DOMAIN DOMAINTODELETE]
                  [--IMPORT-ZONE-FILE IMPORTZONEFILE] [--CLEAR-DOMAINS]
                  [--LIST-DOMAINS] [--LIST-OUTSIDE] [--SQL-CREDS SQLCREDSFILE]

optional arguments:
  -h, --help            показать это справочное сообщение и выйти
  --ADD-HTTP-PORT HTTPPORTTOADD, -a HTTPPORTTOADD
                        Добавить пользовательский HTTP-порт.
  --CLEAR-HTTP, -aC     Очистить все пользовательские HTTP-порты и вернуться к порту 80 по умолчанию.
  --ADD-HTTPS-PORT HTTPSPORTTOADD, -b HTTPSPORTTOADD
                        Добавить пользовательский HTTPS-порт.
  --CLEAR-HTTPS, -bC    Очистить все пользовательские HTTPS-порты и вернуться к порту 443 по умолчанию.
  --ADD-CUSTOM-FINGERPRINT FINGERPRINT, -c FINGERPRINT
                        Добавить пользовательский отпечаток в форме <Имя>,<RegEx>.
  --DELETE-CUSTOM-FINGERPRINT FINGERPRINTNAMETODELETE, -cD FINGERPRINTNAMETODELETE
                        Удалить пользовательский отпечаток по имени.
  --IMPORT-CUSTOM-FINGERPRINT IMPORTFINGERPRINTFILE, -cI IMPORTFINGERPRINTFILE
                        Импортировать файл пользовательских отпечатков по указанному пути.
  --CLEAR-CUSTOM-FINGERPRINTS, -cC
                        Очистить все пользовательские отпечатки, хранящиеся в БД.
  --SHOW-CONFIG, -g     Показать текущую конфигурацию WebStor (кратко).
  --SHOW-CONFIG-FULL, -gF
                        Показать текущую конфигурацию WebStor (полностью).
  --RUN-MASSCAN, -m     Запустить новое сканирование портов с помощью Masscan для всех настроенных TCP-портов HTTP и HTTPS, по всем настроенным диапазонам и любым IP-адресам из DNS-записей, которые находятся вне этих диапазонов.
  --SET-MASSCAN-RANGES SETSCANRANGES, -mR SETSCANRANGES
                        Диапазон или диапазоны сканирования, заменяет существующие диапазоны в БД, разделённые запятыми, например: -s 10.10.0.0/16,10.13.0.0/16,192.168.1.0/24
  --IMPORT-MASSCAN-RANGES IMPORTSCANRANGES, -mI IMPORTSCANRANGES
                        Импортировать диапазоны сканирования (блоки CIDR) из указанного файла.
  --DELETE-RANGE RANGETODELETE, -mD RANGETODELETE
                        Удалить диапазон сканирования.
  --ADD-PATH PATHTOADD, -p PATHTOADD
                        Добавить пути, для которых будут запрашиваться и сохраняться ответы, кроме '/'.
  --DELETE-PATH PATHTODELETE, -pD PATHTODELETE
                        Удалить пути, для которых будут запрашиваться и сохраняться ответы, кроме '/'.
  --CLEAR-PATHS, -pC    Очистить все пользовательские пути запросов URL и вернуться к пути '/' по умолчанию.
  --REFRESH-RESPONSES, -r
                        Обновить ответы URL в БД.
  --RESPONSES-ADD-FOR-PATH RESPONSESADDFORPATH, -rP RESPONSESADDFORPATH
                        Добавить ответы URL для одноразового пути вместе с текущими ответами в БД.
  --SEARCH-PATTERN SEARCHPATTERN, -sP SEARCHPATTERN
                        Поиск строки или регулярного выражения в базе данных WebStor.
  --SEARCH-CUSTOM-FINGERPRINT SEARCHFINGERPRINT, -sC SEARCHFINGERPRINT
                        Поиск технологии по имени пользовательского отпечатка, предоставленного пользователем.
  --SEARCH-WAPPALYZER SEARCHWAPPALYZER, -sW SEARCHWAPPALYZER
                        Поиск технологии по имени (из БД технологий Wappalyzer) в БД WebStor.
  --NO-TSIG-KEY, -tN    Не использовать ключ DNSSec TSIG, сохранённый в базе данных или файле, даже если он присутствует.
  --TSIG-KEY-IMPORT IMPORTTSIGFILE, -tI IMPORTTSIGFILE
                        Импортировать указанный файл ключа TSIG в базу данных
  --TSIG-KEY-REPLACE REPLACEMENTTSIGFILE, -tR REPLACEMENTTSIGFILE
                        Заменить ключ TSIG в базе данных указанным файлом
  --DELETE-TSIG TSIGTODELETE, -dT TSIGTODELETE
                        Удалить ключ TSIG из базы данных по имени.
  --USE-TSIG-FILE-ONLY USETSIGFILEONLY, -tF USETSIGFILEONLY
                        Использовать только указанный файл tsig (полный путь), не использовать TSIG, хранящиеся в БД. Применяется ко всем доменам, ограничивая WebStor одним TSIG для передачи зон в текущем сеансе.
  --DOWNLOAD-NEW-WAPPALYZER, -w
                        Загрузить новый файл отпечатков Wappalyzer напрямую с GitHub. Перезаписывает существующие данные отпечатков Wappalyzer.
  --LIST-WAPPALYZER-TECH-NAMES, -wL
                        Вывести список названий всех технологий Wappalyzer в базе данных.
  --ZONE-XFER, -z       Принудительно выполнить новую передачу зоны, используя все домены, серверы и связанные ключи TSIG в БД
  --ADD-DOMAIN DOMAINDETAILS, -zA DOMAINDETAILS
                        Добавить домен в форме <Имя домена>,<Сервер>,<Имя ключа TSIG>.
  --DELETE-DOMAIN DOMAINTODELETE, -zD DOMAINTODELETE
                        Удалить DNS-домен из базы данных по имени.
  --IMPORT-ZONE-FILE IMPORTZONEFILE, -zI IMPORTZONEFILE
                        Добавить домены для передачи зон из файла.
  --CLEAR-DOMAINS, -zC  Очистить все DNS-домены, хранящиеся в БД.
  --LIST-DOMAINS, -zL   Вывести список всех DNS-доменов, хранящихся в БД.
  --LIST-OUTSIDE, -e    Вывести список всех имён и IP-адресов из наших передач зон, которые находятся за пределами определённых сетевых диапазонов.
  --SQL-CREDS SQLCREDSFILE, -q SQLCREDSFILE
                        Использовать учётные данные SQL из файла по указанному пути.

Шаги для первоначальной настройки WebStor и заполнения базы данных:

ПРИМЕЧАНИЕ: Эти шаги предполагают, что ваша организация использует только один ключ TSIG для передачи зон и что все записи могут быть запрошены с одного DNS-сервера. Если это не так, см. раздел «Варианты безопасного/специфического использования» ниже.

  1. Получите файл ключа TSIG, который позволяет выполнять передачу зон, и поместите его в рабочую директорию.
  2. Получите список всех сетевых диапазонов вашей организации (нотация CIDR), каждый диапазон с новой строки. Если вы используете большие объёмы частного пространства RFC1918, особенно пространство 10.X, не добавляйте просто 10.0.0.0/8, так как это заставит Masscan работать очень долго. Вместо этого используйте несколько меньших блоков, которые действительно выделены (например, 10.10.3.0/24). В типичной корпоративной или университетской сети на момент написания этого текста можно ожидать, что сканирование каждого миллиона IP-адресов займёт около 15 минут при текущих настройках ограничения скорости WebStor.
  3. Создайте текстовый файл с именами доменов, для которых вы будете выполнять передачу зон. В начале файла вставьте две строки: первая — с именем вашего ключа TSIG (если вы не знаете, что это, оно будет в первой строке вашего TSIG-файла сразу после "key"), вторая строка должна содержать имя или IP-адрес вашего DNS-сервера. Остальная часть файла должна содержать каждое DNS-имя домена вашей организации, по одному на строку. Для типичного крупного университета это будут имена вроде engineering.stateu.edu.
  4. Запустите ./webstor.py -g, чтобы показать конфигурацию и подтвердить функциональность базы данных.
  5. Запустите ./webstor.py -tI <файл tsig> -mI <файл сетевых диапазонов> -zI <файл доменов> ПРИМЕЧАНИЕ: в процессе импорта TSIG вас попросят указать домен, связанный с TSIG, и DNS-сервер, для которого предназначен этот TSIG. Это связано с тем, что сам файл TSIG не содержит этой информации. Просто укажите любой из ваших доменов, например stateu.edu, и IP-адрес вашего DNS-сервера. Информация из файла импорта доменов, обрабатываемая позже, заменит связь с доменом.
  6. WebStor теперь готов к сбору данных. Запустите ./webstor.py -z -m -r -w. Это соберёт DNS-записи через передачу зон, просканирует открытые веб-порты с помощью Masscan, выполнит HTTP/HTTPS-запросы ко всем хостам с открытыми веб-портами (объединение хостов в ваших сетевых диапазонах и хостов с DNS-записями за пределами этих диапазонов) и сохранит ответы в базе данных. Опция -w также загружает самую свежую копию базы данных веб-технологий Wappalyzer с GitHub.

Примеры использования

root@kitploit:~
# Поиск строки/регулярного выражения, связанного с веб-технологией:
./webstor.py -sP "content=\"wordpress 4.[7-9]"
# Будет возвращён список сайтов с этим регулярным выражением, ожидаемые ответы от сайтов Wordpress v4.7-9.  

# Чтобы сохранить регулярное выражение из примера выше как пользовательский отпечаток, который можно запрашивать по имени (и не нужно запоминать регулярное выражение каждый раз):
./webstor.py -c "wordpress4.7-9,content=\"wordpress 4.[7-9]"

# После выполнения указанной выше команды запрос можно выполнить просто:
./webstor.py -sC wordpress4.7-9

# Использование WebStor для поиска сайтов Wordpress через определения Wappalyzer:
./webstor.py -sW wordpress
# Будет возвращён список доступных сайтов Wordpress в сетях вашей организации. ПРИМЕЧАНИЕ: поиск через Wappalyzer может быть медленнее, чем поиск по шаблону/регулярному выражению, из-за количества свойств, которые проверяются для подтверждения.

Результаты, показываемые по имени и IP-адресу

Сайты запрашиваются на основе ответов как по именам, так и по IP-адресам. Это важно, потому что некоторые веб-серверы хостят несколько сайтов под разными именами. Другие серверы могут отдавать только сайт по умолчанию или ответ хостинг-провайдера по умолчанию при запросе по IP (например, https://68.66.216.42) и реальный бизнес-сайт при запросе по имени (например, https://www.seekerdlp.com). По этой причине, если у вас есть именованный сайт, который также отдаётся при запросе IP-адреса веб-сервера, вы увидите результаты запроса для обоих.

Поддержание актуальности результатов

Рекомендуется настроить cron-задачу для ежедневного запуска WebStor, чтобы результаты запросов всегда отражали текущее состояние вашей сети.

Безопасные опции

Если вы не хотите использовать учётные данные MariaDB по умолчанию (root, пустой пароль), вы можете использовать опцию -q для указания пути к файлу с учётными данными. Первая строка файла должна содержать сервер, например localhost. Вторая строка должна содержать имя пользователя SQL. Третья строка должна содержать пароль.

Если вы не хотите хранить свой ключ TSIG в базе данных, вы можете использовать опцию -tF для указания пути к файлу ключа TSIG, защищённому списками контроля доступа (ACL).

Если ваша организация использует несколько ключей TSIG, вам потребуется хранить их в базе данных. Каждый из них можно добавить с помощью опции -tI, а домены можно добавлять через обычные опции, указывая соответствующий ключ и сервер.

Атрибуция

WebStor использует базу данных технологий Wappalyzer для предварительно заполненного поиска технологий по именам в сохранённых ответах WebStor. Wappalyzer распространяется на условиях лицензии MIT.

Особая благодарность

  • Brandon Bailey <Twitter: @ge0stigm4> (Соавтор первоначальной концепции)
  • Bob Harold (Руководство по DNS)
  • Neamen Negash <nnegash@umich.edu> (Установщик)
  • afreudenreich (Многочисленные исправления ошибок и улучшения)

Лицензия и автор

WebStor написан Россом Гирлингсом <rjgeer@umich.edu>, <ross@seekerdlp.com>.

WebStor распространяется на условиях лицензии MIT, воспроизведённой ниже.

The MIT License

Copyright (c) 2020-2024 The University of Michigan Board of Regents.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Скачать инструмент