
Невероятно быстрый краулер ответов для поиска вкусностей в исходном коде! 😎🔥
Протестированные среды: Windows, macOS, Linux и подсистема Windows для Linux (WSL)
Поддержите этот проект, став спонсором. Ознакомьтесь с этими замечательными спонсорами:
Oxylabs предоставляет премиум-прокси с более чем 100 млн IP-адресов в 195 странах и готовые к использованию Scraper API. Вы можете использовать уникальный промо-код boost35, чтобы получить скидку 35% на резидентные, мобильные прокси, Web Unblocker и Scraper API.
Сканировать ответы на предмет скрытых конечных точек, отправляя запросы или используя локальные файлы ответов (если они есть).
Создавать список JavaScript-переменных, найденных в исходном коде.
Извлекать все ссылки на социальные сети с веб-сайтов для выявления потенциально неработающих ссылок.
Перебор хоста по словарю.
Получать коды состояния для списка URL / Фильтрация живых доменов из списка хостов.
Все перечисленные выше функции выполняются с высокой скоростью.
SourceWolf использует модуль Session из библиотеки requests, что означает повторное использование TCP-соединения, что делает его очень быстрым.
SourceWolf предоставляет возможность сканировать файлы ответов локально, чтобы не отправлять повторные запросы к конечной точке, ответ на которую у вас уже есть.
Конечные точки выводятся в полной форме с хостом, например https://example.com/api/admin, а не как /api/admin. Это может быть полезно при сканировании списка хостов.
> python3 sourcewolf.py -h
-l LIST, --list LIST Список URL-адресов JavaScript
-u URL, --url URL Один URL
-t THREADS, --threads THREADS
Количество одновременных потоков (по умолчанию 5)
-o OUTPUT_DIR, --output directory-name OUTPUT_DIR
Сохранять текст ответа URL в каталог для дальнейшего анализа
-s STATUS_CODE_FILE, --store-status-code STATUS_CODE_FILE
Сохранять код состояния в файл
-b BRUTE, --brute BRUTE
Перебор URL с ключевым словом FUZZ (--wordlist также должен использоваться вместе с этим)
-w WORDLIST, --wordlist WORDLIST
Словарь для перебора URL
-v, --verbose Подробный режим (отображает все отправляемые запросы)
-c CRAWL_OUTPUT, --crawl-output CRAWL_OUTPUT
Выходной каталог для сохранения результатов сканирования
-d DELAY, --delay DELAY
Задержка между запросами (в секундах)
--timeout TIMEOUT Максимальное время ожидания тайм-аута соединения (в секундах)
--headers HEADERS Добавить пользовательские заголовки (должны передаваться в формате {'Token': 'YOUR-TOKEN-HERE'}) --> Словарь
--cookies COOKIES Добавить куки (должны передаваться в формате {'Cookie': 'YOUR-COOKIE-HERE'}) --> Словарь
--only-success Выводить только ответы 2XX
--local LOCAL Каталог с локальными файлами ответов для сканирования
--no-colors Убрать цвета из вывода
--update-info Проверить наличие последней версии и обновить, если требуется
Полное использование:
python3 sourcewolf.py -l domains -o output/ -c crawl_output
domains — это список URL-адресов, которые вы хотите сканировать, в формате:
https://example.com/
https://exisiting.example.com/
https://exisiting.example.com/dashboard
https://example.com/hitme
output/ — это каталог, в котором сохраняются текстовые файлы ответов входного файла.
Они сохраняются в формате output/2XX, output/3XX, output/4XX и output/5XX.
output/2XX хранит ответы с кодами состояния 2XX и так далее!
crawl_output, указанный с помощью флага -c, используется для сохранения вывода в каталог, который SourceWolf создаёт, сканируя HTTP-файлы ответов, хранящиеся в каталоге output/ (в настоящее время только конечные точки).
Каталог crawl_output/ содержит:
endpoints - Все найденные конечные точки
jsvars - Все JavaScript-переменные
Каталог будет содержать больше файлов по мере интеграции новых модулей и функций в SourceWolf.
(ИЛИ)
Для одного URL:
python3 sourcewolf.py -u example.com/api/endpoint -o output/ -c crawl_output
Только флаг -l заменяется на -u, всё остальное остаётся прежним.
python3 sourcewolf.py -b https://hackerone.com/FUZZ -w /path/to/wordlist -s status
Флаг -w необязательный. Если не указан, будет использоваться словарь по умолчанию из 6124 слов.
SourceWolf заменяет ключевое слово FUZZ из значения -b на слова из словаря и отправляет запросы. Это позволяет также перебирать значения параметров GET.
-s сохранит вывод в файл с именем status.
Скриншот не включён, так как вывод похож на режим «сканирование ответов».
python3 sourcewolf -l domains -s live
Файл domains может содержать что угодно: поддомены, конечные точки, JS-файлы.
Флаг -s записывает ответ в файл live.
Как режим перебора, так и режим проверки доступности по умолчанию выводят все коды состояния, кроме 404. Вы можете настроить это поведение на вывод только ответов
2XXс помощью флага--only-success.
SourceWolf также использует многопоточность.
Количество потоков по умолчанию для всех режимов — 5. Вы можете увеличить количество потоков с помощью флага -t.
В дополнение к трём вышеуказанным режимам есть возможность сканировать локально, если у вас есть локальные файлы и они соответствуют соглашениям об именах, совместимым с SourceWolf.
Сохраните все ответы в каталог, например responses/:
python3 sourcewolf.py --local responses/
Это просканирует локальный каталог и выдаст результаты.
Поиск поддоменов
|
|
SourceWolf
|
|
Отфильтровать живые поддомены
|
|
Сохранить ответы и найти скрытые конечные точки / Перебор каталогов
На этом этапе у вас будет много конечных точек цели, извлечённых в реальном времени с веб-страниц во время сканирования.
Основная цель SourceWolf — более широкая: сканировать ответы не только для обнаружения скрытых конечных точек, но и для автоматизации всех задач, которые выполняются путём ручного поиска в файлах ответов.
Один из примеров — ручной поиск утекших ключей в исходном коде.
Эта основная цель объясняет модульный подход, в котором написаны файлы.
SourceWolf можно обновить прямо из терминала, без необходимости клонировать репозиторий заново.
SourceWolf проверяет наличие обновлений при каждом запуске и уведомляет пользователя, если доступны какие-либо обновления, с кратким описанием.
Запуск
python3 sourcewolf.py --update-info
предоставляет более подробную информацию об обновлении.
Когда доступны обновления, необходимо переместить файл update.py за пределы каталога SourceWolf и выполнить:
Предупреждение: это удалит все файлы и папки внутри вашего каталога SourceWolf.
python3 update.py /path/to/SourceWolf
Это фактически удаляет каталог и клонирует репозиторий заново.
В настоящее время SourceWolf поддерживает только поиск скрытых конечных точек из исходного кода, но в будущем можно ожидать интеграции других функций.
Где можно внести вклад?
Вклад в основном требуется для интеграции дополнительных модулей с SourceWolf, хотя вы можете открыть PR даже для исправления опечатки.
Перед отправкой pull request убедитесь, что у вас последняя версия.
> Сначала откройте issue, если собираетесь добавить новую функцию, чтобы подтвердить её необходимость! Не тратьте время на написание новой функции, которая не нужна.
Не стесняйтесь открывать любые проблемы, с которыми сталкиваетесь.
Убедитесь, что вы указали свою операционную систему, запущенную команду и, по возможности, скриншоты при открытии issue, чтобы мне было легче воспроизвести проблему.
Вы также можете запросить новые функции или улучшить существующие, открыв issue.
Для сканирования локальных файлов необходимо соблюдать некоторые соглашения об именах. Эти соглашения нужны, чтобы SourceWolf мог напрямую определить имя хоста и, таким образом, разобрать все конечные точки, включая относительные.
Рассмотрим URL https://example.com/api/:
example.com/apiexample.com@apiТаким образом, файл будет выглядеть как [email protected].
Логотип разработан Murugan artworks
SourceWolf использует лицензию MIT.