
Crawler de resposta incrivelmente rápido para encontrar coisas interessantes no código-fonte! 😎🔥
Ambientes testados: Windows, MAC, linux e subsistema Windows para linux (WSL)
Apoie este projeto tornando-se um patrocinador. Confira estes patrocinadores incríveis:
A Oxylabs fornece proxies premium com mais de 100 milhões de IPs em 195 países e APIs Scraper prontas para uso. Você pode usar este código promocional exclusivo boost35 para obter 35% de desconto em proxies residenciais, móveis, Web Unblocker e Scraper APIs.
Rastrear respostas para encontrar endpoints ocultos, seja enviando requisições ou a partir de arquivos de resposta locais (se houver).
Criar uma lista de variáveis JavaScript encontradas no código fonte
Extrair todos os links de redes sociais dos sites para identificar links potencialmente quebrados
Forçar host com uma wordlist.
Obter os códigos de status de uma lista de URLs / Filtrar domínios ativos de uma lista de hosts.
Todos os recursos mencionados acima são executados com grande velocidade.
O SourceWolf usa o módulo Session da biblioteca requests, o que significa que ele reutiliza a conexão TCP, tornando-o muito rápido.
O SourceWolf oferece a opção de rastrear os arquivos de resposta localmente, evitando o reenvio de requisições para um endpoint cuja resposta você já possui uma cópia.
Os endpoints finais estão em formato completo com um host, como https://exemplo.com/api/admin e não como /api/admin. Isso pode ser útil ao escanear uma lista de hosts.
> python3 sourcewolf.py -h
-l LIST, --list LIST Lista de URLs de JavaScript
-u URL, --url URL URL única
-t THREADS, --threads THREADS
Número de threads simultâneas a usar (padrão 5)
-o OUTPUT_DIR, --output directory-name OUTPUT_DIR
Armazenar o texto da resposta da URL em um diretório para análise posterior
-s STATUS_CODE_FILE, --store-status-code STATUS_CODE_FILE
Armazenar o código de status em um arquivo
-b BRUTE, --brute BRUTE
Forçar URL com a palavra-chave FUZZ (--wordlist também deve ser usada junto)
-w WORDLIST, --wordlist WORDLIST
Wordlist para forçar a URL
-v, --verbose Modo verbose (exibe todas as requisições enviadas)
-c CRAWL_OUTPUT, --crawl-output CRAWL_OUTPUT
Diretório de saída para armazenar os resultados do rastreamento
-d DELAY, --delay DELAY
Atraso nas requisições (em segundos)
--timeout TIMEOUT Tempo máximo de espera antes de timeout (em segundos)
--headers HEADERS Adicionar cabeçalhos personalizados (Deve ser passado como {'Token': 'SEU-TOKEN-AQUI'}) --> Formato de dicionário
--cookies COOKIES Adicionar cookies (Deve ser passado como {'Cookie': 'SEU-COOKIE-AQUI'}) --> Formato de dicionário
--only-success Mostrar apenas respostas 2XX
--local LOCAL Diretório com arquivos de resposta locais para rastrear
--no-colors Remover cores da saída
--update-info Verificar a versão mais recente e atualizar se necessário
Uso completo:
python3 sourcewolf.py -l dominios -o output/ -c crawl_output
dominios é a lista de URLs que você deseja rastrear no formato:
https://exemplo.com/
https://exemplo.existente.com/
https://exemplo.existente.com/painel
https://exemplo.com/meacione
output/ é o diretório onde os arquivos de texto da resposta do arquivo de entrada são armazenados.
Eles são armazenados no formato output/2XX, output/3XX, output/4XX e output/5XX.
output/2XX armazena respostas com código de status 2XX, e assim por diante!
crawl_output especificado usando a flag -c é usado para armazenar a saída, dentro de um diretório que o SourceWolf produz ao rastrear os arquivos de resposta HTTP armazenados no diretório output/ (atualmente apenas endpoints)
O diretório crawl_output/ contém:
endpoints - Todos os endpoints encontrados
jsvars - Todas as variáveis JavaScript
O diretório terá mais arquivos à medida que mais módulos e recursos forem integrados ao SourceWolf.
(OU)
Para uma única URL,
python3 sourcewolf.py -u exemplo.com/api/endpoint -o output/ -c crawl_output
Apenas a flag -l é substituída por -u, todo o resto permanece igual.
python3 sourcewolf.py -b https://hackerone.com/FUZZ -w /caminho/para/wordlist -s status
A flag -w é opcional. Se não for especificada, usará uma wordlist padrão com 6124 palavras.
O SourceWolf substitui a palavra-chave FUZZ do valor de -b pelas palavras da wordlist e envia as requisições. Isso permite forçar valores de parâmetros GET também.
-s armazenará a saída em um arquivo chamado status.
Captura de tela não incluída, pois a saída é semelhante ao modo de rastreamento de resposta.
python3 sourcewolf -l dominios -s live
O arquivo dominios pode conter qualquer coisa, como subdomínios, endpoints, arquivos JavaScript.
A flag -s escreve a resposta no arquivo live.
Tanto o modo de força bruta quanto o modo de sondagem imprimem todos os códigos de status, exceto 404, por padrão. Você pode personalizar esse comportamento para imprimir apenas respostas
2XXusando a flag--only-success.
O SourceWolf também faz uso de multithreading.
O número padrão de threads para todos os modos é 5. Você pode aumentar o número de threads usando a flag -t.
Além dos três modos acima, existe a opção de rastrear localmente, desde que você tenha os arquivos localmente e siga as convenções de nomenclatura compatíveis com SourceWolf.
Armazene todas as respostas em um diretório, por exemplo, respostas/
python3 sourcewolf.py --local respostas/
Isso irá rastrear o diretório local e fornecer os resultados.
Enumeração de subdomínios
|
|
SourceWolf
|
|
Filtrar subdomínios ativos
|
|
Armazenar respostas e encontrar endpoints ocultos / Força bruta de diretórios
Neste ponto, você terá muitos endpoints do alvo, extraídos em tempo real das páginas web durante a execução do scan.
O propósito central do SourceWolf é feito com uma visão mais ampla de rastrear respostas não apenas para descobrir endpoints ocultos, mas também para automatizar todas as tarefas que são feitas por meio de pesquisa manual nos arquivos de resposta.
Um exemplo seria procurar manualmente por chaves vazadas no código fonte.
Esse propósito central explica a forma modular como os arquivos são escritos.
É possível atualizar o SourceWolf diretamente do terminal, sem precisar clonar o repositório novamente.
O SourceWolf verifica se há atualizações sempre que é executado e notifica o usuário se houver alguma atualização disponível, junto com um resumo dela.
Executando
python3 sourcewolf.py --update-info
fornece mais detalhes sobre a atualização.
Quando houver atualizações disponíveis, você deve mover o arquivo update.py para fora do diretório do SourceWolf e executar
Aviso: Isso excluirá todos os arquivos e pastas dentro do seu diretório SourceWolf
python3 update.py /caminho/para/SourceWolf
Isso remove o diretório e clona o repositório novamente.
Atualmente, o sourcewolf suporta apenas encontrar endpoints ocultos no código fonte, mas você pode esperar que outros recursos sejam integrados no futuro.
Onde você pode contribuir?
Contribuições são necessárias principalmente para integrar mais módulos ao sourcewolf, mas sinta-se à vontade para abrir um PR mesmo que seja apenas para corrigir um erro de digitação.
Antes de enviar um pull request, certifique-se de estar na versão mais recente.
> Abra um issue primeiro se for adicionar um novo recurso para confirmar se ele é necessário! Você não deve perder tempo tentando codificar um novo recurso que não é necessário.
Sinta-se à vontade para abrir quaisquer problemas que enfrentar.
Certifique-se de incluir seu sistema operacional, o comando executado e capturas de tela, se possível, ao abrir um issue, o que facilitará para eu reproduzir o problema.
Você também pode solicitar novos recursos ou melhorar os existentes abrindo um issue.
Para rastrear os arquivos localmente, você deve seguir algumas convenções de nomenclatura. Essas convenções existem para que o SourceWolf identifique diretamente o nome do host e, assim, analise todos os endpoints, incluindo os relativos.
Considere uma URL https://exemplo.com/api/
exemplo.com/apiexemplo.com@apiPortanto, o arquivo final fica como [email protected]
Logotipo desenhado por Murugan artworks
O SourceWolf usa a licença MIT