
Продвинутый инструмент для сканирования web-каталогов и файлов, который будет мощнее, чем DirBuster, Dirsearch, cansina и Yu Jian.Продвинутый инструмент для сканирования web-каталогов и файлов, функции которого будут сильнее, чем DirBuster, Dirsearch, cansina, 御剑.
Продвинутый инструмент для сканирования веб-каталогов, который будет мощнее DirBuster, Dirsearch, cansina, Yujian.

После обширных исследований можно сделать вывод, что хороший инструмент для сканирования веб-каталогов должен обладать как минимум следующими возможностями:
Давайте посмотрим на особенности Dirmap.
git clone https://github.com/H4ckForJob/dirmap.git && cd dirmap && python3 -m pip install -r requirement.txt
Одна цель, по умолчанию http
python3 dirmap.py -i https://target.com -lcf
python3 dirmap.py -i 192.168.1.1 -lcf
Подсеть (в формате CIDR)
python3 dirmap.py -i 192.168.1.0/24 -lcf
Диапазон адресов
python3 dirmap.py -i 192.168.1.1-192.168.1.100 -lcf
python3 dirmap.py -iF targets.txt -lcf
В targets.txt поддерживаются указанные выше форматы.
output в корне проекта.домен_цели.txt.Настройка конфигурации Dirmap для изучения дополнительных возможностей.
В настоящее время подробная конфигурация выполняется только через загрузку конфигурационного файла. Подробная настройка через параметры командной строки не поддерживается!
Отредактируйте файл dirmap.conf в корне проекта для настройки.
Подробное описание конфигурации dirmap.conf:
#Настройки рекурсивного сканирования
[RecursiveScan]
#Включить рекурсивное сканирование: 0 - выключено, 1 - включено
conf.recursive_scan = 0
#При этих кодах состояния запускать рекурсивное сканирование. По умолчанию [301,403]
conf.recursive_status_code = [301,403]
#Если URL превышает эту длину, выйти из рекурсии
conf.recursive_scan_max_url_length = 60
#Эти расширения не сканировать рекурсивно
conf.recursive_blacklist_exts = ["html",'htm','shtml','png','jpg','webp','bmp','js','css','pdf','ini','mp3','mp4']
#Указать каталоги для исключения из сканирования. По умолчанию пусто. Пример: ['/test1','/test2']
#conf.exclude_subdirs = ['/test1','/test2']
conf.exclude_subdirs = ""
#Настройки режима сканирования (4 режима, одновременно можно выбрать только один)
[ScanModeHandler]
#Режим словаря: 0 - выключен, 1 - один словарь, 2 - несколько словарей
conf.dict_mode = 1
#Путь к словарю для режима одного словаря
conf.dict_mode_load_single_dict = "dict_mode_dict.txt"
#Путь к каталогу словарей для режима нескольких словарей, по умолчанию dictmult
conf.dict_mode_load_mult_dict = "dictmult"
#Режим перебора: 0 - выключен, 1 - включен
conf.blast_mode = 0
#Минимальная длина генерируемого словаря. По умолчанию 3
conf.blast_mode_min = 3
#Максимальная длина генерируемого словаря. По умолчанию 3
conf.blast_mode_max = 3
#Набор символов по умолчанию: a-z. Пока не используется.
conf.blast_mode_az = "abcdefghijklmnopqrstuvwxyz"
#Набор символов по умолчанию: 0-9. Пока не используется.
conf.blast_mode_num = "0123456789"
#Пользовательский набор символов. По умолчанию "abc". Используется для построения словаря.
conf.blast_mode_custom_charset = "abc"
#Пользовательский набор символов для возобновления. По умолчанию пусто.
conf.blast_mode_resume_charset = ""
#Режим обхода (crawler): 0 - выключен, 1 - включен
conf.crawl_mode = 0
#Словарь суффиксов для генерации динамических нагрузок для чувствительных файлов
conf.crawl_mode_dynamic_fuzz_suffix = "crawl_mode_suffix.txt"
#Разбор файла robots.txt. Пока не реализовано.
conf.crawl_mode_parse_robots = 0
#XPath-выражение для разбора HTML-страниц
conf.crawl_mode_parse_html = "//*/@href | //*/@src | //form/@action"
#Включить динамическую генерацию словаря на основе обхода. По умолчанию 1 (включено). Другие значения: 0 - выключено, 1 - включено.
conf.crawl_mode_dynamic_fuzz = 1
#Режим Fuzz: 0 - выключен, 1 - один словарь, 2 - несколько словарей
conf.fuzz_mode = 0
#Путь к словарю для режима одного словаря.
conf.fuzz_mode_load_single_dict = "fuzz_mode_dir.txt"
#Путь к каталогу словарей для режима нескольких словарей. По умолчанию: fuzzmult
conf.fuzz_mode_load_mult_dict = "fuzzmult"
#Метка Fuzz. По умолчанию {dir}. Тег {dir} используется как точка вставки словаря: http://target.com/{dir}.php заменяется на http://target.com/каждая_строка_словаря.php. Другие примеры: {dir}; {ext}
#conf.fuzz_mode_label = "{ext}"
conf.fuzz_mode_label = "{dir}"
#Обработка нагрузок. Пока не реализовано.
[PayloadHandler]
#Настройки запросов
[RequestHandler]
#Пользовательские заголовки запроса. По умолчанию пусто. Пример: test1=test1,test2=test2
#conf.request_headers = "test1=test1,test2=test2"
conf.request_headers = ""
#Пользовательский User-Agent. По умолчанию UA браузера Chrome.
conf.request_header_ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
#Пользовательский Cookie. По умолчанию пусто (не устанавливать). Пример: cookie1=cookie1; cookie2=cookie2;
#conf.request_header_cookie = "cookie1=cookie1; cookie2=cookie2"
conf.request_header_cookie = ""
#Пользовательская аутентификация 401. Пока не реализовано (функция пользовательских заголовков может это покрыть).
conf.request_header_401_auth = ""
#Метод запроса. По умолчанию get. Другие значения: get; head
#conf.request_method = "head"
conf.request_method = "get"
#Тайм-аут запроса в секундах. По умолчанию 3.
conf.request_timeout = 3
#Случайная задержка (0-x) секунд перед отправкой запроса. Должна быть целым числом. По умолчанию 0 (без задержки).
conf.request_delay = 0
#Количество потоков/корутин для одной цели. По умолчанию 30.
conf.request_limit = 30
#Максимальное количество повторных попыток. Пока не реализовано.
conf.request_max_retries = 1
#Постоянное соединение. Использовать session(). Пока не реализовано.
conf.request_persistent_connect = 0
#Перенаправление 302. По умолчанию False (не перенаправлять). Другие значения: True; False
conf.redirection_302 = False
#Суффикс, добавляемый к нагрузке. По умолчанию пусто (не добавлять). Примеры: txt; php; asp; jsp
#conf.file_extension = "txt"
conf.file_extension = ""
#Обработка ответов
[ResponseHandler]
#Коды состояния ответа для записи. По умолчанию [200] (только 200). Пример: [200,403,301]
#conf.response_status_code = [200,403,301]
conf.response_status_code = [200]
#Записывать заголовок Content-Type в ответе. По умолчанию 1 (записывать).
#conf.response_header_content_type = 0
conf.response_header_content_type = 1
#Записывать размер страницы. По умолчанию 1 (записывать).
#conf.response_size = 0
conf.response_size = 1
#Автоматически обнаруживать страницу 404. По умолчанию True (включено). Другие значения: True; False
#conf.auto_check_404_page = False
conf.auto_check_404_page = True
#Пользовательское регулярное выражение для страницы 503. Пока не реализовано. Вероятно, будет удалено.
#conf.custom_503_page = "page 503"
conf.custom_503_page = ""
#Пользовательское регулярное выражение для сопоставления содержимого страницы.
#conf.custom_response_page = "([0-9]){3}([a-z]){3}test"
conf.custom_response_page = ""
#Пропускать страницы размером x. Если не нужно, установите "None". По умолчанию "None". Примеры: None; 0b; 1k; 1m
#conf.skip_size = "0b"
conf.skip_size = "None"
#Прокси
[ProxyHandler]
#Настройка прокси. По умолчанию "None" (без прокси). Пример: {"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}
#conf.proxy_server = {"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}
conf.proxy_server = None
#Отладка
[DebugMode]
#Вывести нагрузки и выйти.
conf.debug = 0
#Проверка обновлений
[CheckUpdate]
#Получить обновления с GitHub. Пока не реализовано.
conf.update = 0
Файлы словарей находятся в папке data в корне проекта.
bar.log.start() в bruter.py. Решение: установите progressbar2. Удалите progressbar во избежание конфликта имен модулей. Спасибо неизвестному пользователю за напоминание.Выполните команду:
python3 -m pip uninstall progressbar
python3 -m pip install progressbar2
При разработке dirmap были заимствованы идеи и принципы многих отличных проектов с открытым исходным кодом. Выражаю им благодарность.
mail: [email protected]
