Инструмент для поиска скрытых директорий и файлов для багбаунти и пентеста. Даёшь ему URL цели, он перебирает словарь типовых путей, показывает те, что выглядят реальными, и печатает короткие подсказки, чем каждая находка может быть полезна.
Идея та же, что у gobuster / dirsearch / ffuf, но это один файл на Python, который легко читать и легко дорабатывать.
Запускай только против систем, которыми владеешь или которые тебе явно разрешено тестировать (например, актив в скоупе багбаунти). Несанкционированное сканирование может быть незаконным. Перед каждым сканом инструмент просит подтвердить, что у тебя есть разрешение.
- Многопоточное сканирование через пул потоков (
-t). - Глобальный лимит скорости (
--rate) и задержка между запросами (--delay), чтобы не перегружать хост. - Калибровка soft-404 / wildcard: сначала запрашивает случайный путь, чтобы
серверы, отвечающие
200на всё, не заваливали тебя ложными срабатываниями. - Обработка кодов ответа: прячет
404и показывает200/301/302/401/403/500. - Расширения (
-x php,bak,zip), добавляемые к каждому слову. - Подсказки по типовым находкам:
.git,.env, бэкапы, Spring Actuator, Swagger,403-но-существует, редиректы и другое. - Работает через прокси (
--proxy http://127.0.0.1:8080), со своими заголовками (-H) и куками (--cookie) для сканов с авторизацией. - Сохраняет отчёты в
.txtили.json(-o report.json). - Цветной вывод в Windows через colorama.
:: Python 3.9+ с https://www.python.org (отметь "Add to PATH")
pip install -r requirements.txt:: простейший вариант, использует встроенный словарь
python dir-hunter.py https://target.example
:: 20 потоков, лимит 30 запросов/с, расширения, сохранить JSON
python dir-hunter.py https://target.example -t 20 --rate 30 -x php,bak,zip -o report.json
:: пустить трафик через Burp
python dir-hunter.py https://target.example --proxy http://127.0.0.1:8080
:: скан с авторизацией по куке сессии
python dir-hunter.py https://target.example --cookie "session=abc123"
:: свой словарь побольше (например, SecLists)
python dir-hunter.py https://target.example -w C:\wordlists\raft-medium-directories.txt| Флаг | Значение |
|---|---|
-w, --wordlist |
Путь к словарю (по умолчанию: wordlists/common.txt) |
-x, --extensions |
Расширения для перебора, напр. php,html,bak |
-t, --threads |
Число потоков (по умолчанию 10) |
--rate |
Глобальный лимит запросов/с (0 = без лимита) |
--delay |
Доп. задержка между запросами в секундах |
--timeout |
Таймаут запроса (по умолчанию 10с) |
--head |
Использовать HEAD вместо GET |
--follow |
Переходить по редиректам (по умолчанию нет, чтобы видеть 301/302) |
-o, --output |
Сохранить результаты в .txt или .json |
--status-include / --status-exclude |
Фильтр по кодам ответа |
-H, --header |
Доп. заголовок "Имя: значение" (можно несколько раз) |
--cookie |
Заголовок Cookie для сканов с авторизацией |
--proxy |
URL прокси (например, Burp) |
-k, --insecure |
Не проверять TLS |
-y, --yes |
Пропустить интерактивное подтверждение |
Полный список: python dir-hunter.py --help.
200 1.4KB /login
301 0B /admin -> https://target.example/admin/
403 278B /.git/config
200 14.2KB /api/docs
ПОДСКАЗКИ (куда смотреть дальше):
* Открытые метаданные Git на /.git/config: попробуйте выкачать репозиторий...
* Документация API на /api/docs: Swagger/OpenAPI раскрывает весь API...
* 403 Forbidden, путей: 1. Ресурс СУЩЕСТВУЕТ, но закрыт...
- Подтверждение авторизации: ты подтверждаешь, что тебе можно тестировать цель.
- Калибровка: запрашивает случайный несуществующий путь, чтобы узнать поведение сервера на "не найдено" (код + размер тела), и отсеять soft-404.
- Скан: пул потоков запрашивает каждое
слово(ислово.ext) под общим лимитом скорости; ответы классифицируются по коду и размеру. - Отчёт и подсказки: интересные находки печатаются и, по желанию, сохраняются.
Разбор кода подробнее: docs/CODE_WALKTHROUGH.md.
- Рекурсивный скан по найденным каталогам (с ограничением глубины).
- Фильтры по размеру и числу слов в ответе.
- Несколько словарей и словари под конкретные расширения.
- Авторазбор
.git/.DS_Store.
MIT, см. LICENSE.