
Un crawler di risposta incredibilmente veloce per trovare roba succosa nel codice sorgente! 😎🔥
Ambienti testati: Windows, Mac, Linux e sottosistema Windows per Linux (WSL)
Supporta questo progetto diventando uno sponsor. Dai un'occhiata a questi fantastici sponsor:
Oxylabs fornisce proxy premium con oltre 100 milioni di IP in 195 paesi e API Scraper pronte all'uso. Puoi utilizzare questo codice promozionale unico boost35 per ottenere il 35% di sconto su proxy Residenziali, Mobili, Web Unblocker e API Scraper.
Esamina le risposte per trovare endpoint nascosti, sia inviando richieste, sia dai file di risposta locali (se presenti).
Crea un elenco di variabili JavaScript trovate nel sorgente.
Estrae tutti i link dei social media dai siti web per identificare eventuali link interrotti.
Forza bruta dell'host utilizzando una wordlist.
Ottiene i codici di stato per un elenco di URL / Filtra i domini attivi da un elenco di host.
Tutte le funzionalità sopra menzionate vengono eseguite con grande velocità.
SourceWolf utilizza il modulo Session della libreria requests, il che significa che riutilizza la connessione TCP, rendendolo molto veloce.
SourceWolf ti offre l'opzione di esaminare i file di risposta localmente, in modo da non inviare nuovamente richieste a un endpoint di cui hai già una copia della risposta.
Gli endpoint finali sono in forma completa con un host come https://example.com/api/admin e non come /api/admin. Questo può essere utile quando si scansiona un elenco di host.
> python3 sourcewolf.py -h
-l LIST, --list LIST List of javascript URLs
-u URL, --url URL Single URL
-t THREADS, --threads THREADS
Number of concurrent threads to use (default 5)
-o OUTPUT_DIR, --output directory-name OUTPUT_DIR
Store URL response text in a directory for further analysis
-s STATUS_CODE_FILE, --store-status-code STATUS_CODE_FILE
Store the status code in a file
-b BRUTE, --brute BRUTE
Brute force URL with FUZZ keyword (--wordlist must also be used along with this)
-w WORDLIST, --wordlist WORDLIST
Wordlist for brute forcing URL
-v, --verbose Verbose mode (displays all the requests that are being sent)
-c CRAWL_OUTPUT, --crawl-output CRAWL_OUTPUT
Output directory to store the crawled output
-d DELAY, --delay DELAY
Delay in the requests (in seconds)
--timeout TIMEOUT Maximum time to wait for connection timing out (in seconds)
--headers HEADERS Add custom headers (Must be passed in as {'Token': 'YOUR-TOKEN-HERE'}) --> Dictionary format
--cookies COOKIES Add cookies (Must be passed in as {'Cookie': 'YOUR-COOKIE-HERE'}) --> Dictionary format
--only-success Only print 2XX responses
--local LOCAL Directory with local response files to crawl for
--no-colors Remove colors from the output
--update-info Check for the latest version, and update if required
Utilizzo completo:
python3 sourcewolf.py -l domains -o output/ -c crawl_output
domains è l'elenco di URL che vuoi esaminare nel formato:
https://example.com/
https://exisiting.example.com/
https://exisiting.example.com/dashboard
https://example.com/hitme
output/ è la directory in cui vengono memorizzati i file di testo delle risposte del file di input.
Vengono memorizzati nel formato output/2XX, output/3XX, output/4XX e output/5XX.
output/2XX memorizza le risposte con codice di stato 2XX, e così via!
crawl_output specificato con il flag -c viene utilizzato per memorizzare l'output, all'interno di una directory che SourceWolf produce esaminando i file di risposta HTTP, memorizzati nella directory output/ (attualmente solo endpoint).
La directory crawl_output/ contiene:
endpoints - Tutti gli endpoint trovati
jsvars - Tutte le variabili JavaScript
La directory avrà più file, man mano che verranno integrati più moduli e funzionalità in SourceWolf.
(OPPURE)
Per un singolo URL,
python3 sourcewolf.py -u example.com/api/endpoint -o output/ -c crawl_output
Solo il flag -l viene sostituito da -u, tutto il resto rimane invariato.
python3 sourcewolf.py -b https://hackerone.com/FUZZ -w /path/to/wordlist -s status
Il flag -w è opzionale. Se non specificato, utilizzerà una wordlist predefinita con 6124 parole.
SourceWolf sostituisce la parola chiave FUZZ dal valore di -b con le parole della wordlist e invia le richieste. Questo ti consente di forzare anche i valori dei parametri GET.
-s memorizzerà l'output in un file chiamato status
Screenshot non incluso poiché l'output è simile alla modalità
crawl response.
python3 sourcewolf -l domains -s live
Il file domains può contenere qualsiasi cosa come sottodomini, endpoint, file js.
Il flag -s scrive la risposta nel file live.
Sia la modalità di forza bruta che quella di sondaggio stampano tutti i codici di stato tranne 404 per impostazione predefinita. Puoi personalizzare questo comportamento per stampare solo le risposte
2XXutilizzando il flag--only-success.
SourceWolf fa anche uso del multithreading.
Il numero predefinito di thread per tutte le modalità è 5. Puoi aumentare il numero di thread utilizzando il flag -t.
Oltre alle tre modalità sopra indicate, è presente un'opzione per esaminare localmente, a condizione che tu abbia i file localmente e segua le convenzioni di denominazione compatibili con SourceWolf.
Memorizza tutte le risposte in una directory, ad esempio responses/
python3 sourcewolf.py --local responses/
Questo esaminerà la directory locale e ti fornirà i risultati.
Enumerazione dei sottodomini
|
|
SourceWolf
|
|
Filtra i sottodomini attivi
|
|
Memorizza le risposte e trova endpoint nascosti / Forza bruta delle directory
A questo punto, avrai molti endpoint dal target, estratti in tempo reale dalle pagine web al momento dell'esecuzione della scansione.
Lo scopo principale di SourceWolf è realizzato con una visione più ampia: esaminare le risposte non solo per scoprire endpoint nascosti, ma anche per automatizzare tutte le attività che vengono svolte cercando manualmente nei file di risposta.
Un esempio potrebbe essere la ricerca manuale di eventuali chiavi trapelate nel sorgente.
Questo scopo principale spiega il modo modulare in cui i file sono scritti.
È possibile aggiornare SourceWolf direttamente dal terminale, senza dover clonare nuovamente il repository.
SourceWolf controlla gli aggiornamenti ogni volta che viene eseguito e notifica all'utente se sono disponibili aggiornamenti, insieme a un riepilogo di essi.
Eseguendo
python3 sourcewolf.py --update-info
fornisce maggiori dettagli sull'aggiornamento
Quando sono disponibili aggiornamenti, devi spostare il file update.py fuori dalla directory SourceWolf ed eseguire
Attenzione: Questo elimina tutti i file e le cartelle all'interno della directory SourceWolf
python3 update.py /path/to/SourceWolf
Questo rimuove effettivamente la directory e clona nuovamente il repository.
Attualmente, SourceWolf supporta solo la ricerca di endpoint nascosti dal sorgente, ma puoi aspettarti che altre funzionalità vengano integrate in futuro.
Dove puoi contribuire?
I contributi sono principalmente necessari per integrare più moduli con SourceWolf, ma sentiti libero di aprire una PR anche per un refuso.
Prima di inviare una pull request, assicurati di essere sull'ultima versione.
> Apri prima un problema se hai intenzione di aggiungere una nuova funzionalità per confermare se è necessaria! Non devi sprecare tempo cercando di codificare una nuova funzionalità che non è necessaria.
Sentiti libero di aprire qualsiasi problema che incontri.
Assicurati di includere il tuo sistema operativo, il comando eseguito e, se possibile, screenshot quando apri un problema, per rendere più facile per me riprodurre il problema.
Puoi anche richiedere nuove funzionalità o migliorare quelle esistenti aprendo un problema.
Per esaminare i file localmente, devi seguire alcune convenzioni di denominazione. Queste convenzioni sono in atto affinché SourceWolf possa identificare direttamente il nome host e quindi analizzare tutti gli endpoint, inclusi quelli relativi.
Considera un URL https://example.com/api/
example.com/apiexample.com@apiQuindi il file finale sarà [email protected]
Logo progettato da Murugan artworks
SourceWolf utilizza la licenza MIT