Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
xnLinkFinder — Uno strumento Python utilizzato per scoprire endpoint, parametri potenziali, una wordlist specifica per un dato target e segreti | Kitploit
Strumenti/GitHubGitHub/xnl-h4ck3r/xnlinkfinder
RicognizioneRaccolta InformazioniSicurezza WebPenetration TestingRilevamento SegretiCrawler
GitHubxnl-h4ck3r/xnlinkfinder

xnLinkFinder

Uno strumento Python utilizzato per scoprire endpoint, parametri potenziali, una wordlist specifica per un dato target e segreti

Vedi Repository
1.6k1865 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Informazioni - v8.2

Questo è uno strumento utilizzato per scoprire endpoint, identificare potenziali parametri, generare una wordlist specifica per il target e trovare segreti per un dato target. Può trovarli tramite:

  • crawling di un target (passare un dominio/URL)
  • crawling di più target (passare un file di domini/URL)
  • ricerca di file in una directory specifica (passare il nome di una directory)
  • ricerca nel contenuto di un singolo file
  • ottenimento da un progetto Burp (passare il percorso di un file Burp XML)
  • ottenimento da un progetto ZAP (passare il percorso di un file di messaggi ASCII ZAP)
  • ottenimento da un progetto Caido (passare il percorso di un file CSV esportato da Caido)
  • ottenimento da un file HAR (HTTP Archive) (passare il percorso di un file HAR JSON)
  • elaborazione di una directory di risultati di waymore (ricerca nei file di risposta archiviati da waymore -mode R e anche richiesta di URL da waymore.txt e degli URL originali da waymore_index.txt - consulta README.md di waymore)

Lo script Python si basa sulle capacità di individuazione dei link della mia estensione Burp GAP. Come punto di partenza, ho preso lo straordinario strumento LinkFinder di Gerben Javado, e ho utilizzato le Regex per trovare i link, ma con ulteriori miglioramenti per trovare ancora di più.

Installazione

xnLinkFinder supporta Python 3.

Installa xnLinkFinder nell'ambiente Python predefinito (globale).```bash pip install xnLinkFinder

root@kitploit:~
O```bash
pip install git+https://github.com/xnl-h4ck3r/xnLinkFinder.git -v

Puoi aggiornare con```bash pip install --upgrade xnLinkFinder

root@kitploit:~
### pipx

Configurazione rapida in ambiente python isolato utilizzando [pipx](https://pypa.github.io/pipx/)```bash
pipx install git+https://github.com/xnl-h4ck3r/xnLinkFinder.git

NOTA: Per estrarre link da file PDF, puoi installare pdftotext sul tuo sistema. Puoi installarlo usando sudo apt install -y poppler-utils su Linux o brew install poppler su macOS. Se non hai pdftotext installato, xnLinkFinder utilizzerà come fallback la libreria Python pypdf. Se non viene trovato alcun testo (es. per PDF scansionati), proverà a utilizzare ocrmypdf se installato (es. sudo apt install -y ocrmypdf). L'uso di pdftotext e ocrmypdf generalmente dà risultati molto migliori rispetto al solo pypdf.

Utilizzo| Arg | Long Arg | Descrizione |

| ----------- | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | -i | --input | Input: un URL, un file di testo di URL, una directory di file da cercare, un file di output Burp XML, un file di output ZAP, un file CSV di Caido, un file HAR JSON, o un singolo file per cercarne i contenuti. | | -o | --output | Il file in cui salvare l'output dei Link, includendo il percorso se necessario (default: output.txt). Se impostato a cli l'output viene scritto solo su STDOUT. Se il file esiste già, verrà accodato (e deduplicato) a meno che non venga passata l'opzione -ow. | | -op | --output-params | Il file in cui salvare l'output dei Potenziali Parametri, includendo il percorso se necessario (default: parameters.txt). Se impostato a cli l'output viene scritto solo su STDOUT (ma non inviato tramite pipe a un altro programma). Se il file esiste già, verrà accodato (e deduplicato) a meno che non venga passata l'opzione -ow. | | -owl | --output-wordlist | Il file in cui salvare l'output della Wordlist specifica del target, includendo il percorso se necessario (default: Nessun output wordlist). Se impostato a cli l'output viene scritto solo su STDOUT (ma non inviato tramite pipe a un altro programma). Se il file esiste già, verrà accodato (e deduplicato) a meno che non venga passata l'opzione . | | -oo | --output-oos | Il file in cui salvare l'output dei link fuori scope, includendo il percorso se necessario (default: Nessun output OOS). Se impostato a l'output viene scritto solo su STDOUT (ma non inviato tramite pipe a un altro programma). Se il file esiste già, verrà accodato (e deduplicato) a meno che non venga passata l'opzione . | | -os | --output-secrets | Il file in cui salvare eventuali segreti trovati nelle risposte (formato JSON), includendo il percorso se necessario (default: Nessun output segreti). Se il file esiste già, i segreti verranno uniti a meno che non venga passata l'opzione . I segreti sono raggruppati per tipo e valore con un array di fonti dove ciascuno è stato trovato. | | -ow | --output-overwrite | Se il file di output esiste già, verrà sovrascritto invece di essere accodato. | | -sp | --scope-prefix | Qualsiasi link trovato che inizia con verrà prefissato con i domini di scope nell'output invece del link originale. Se il valore passato è un nome file valido, verrà utilizzato quel file, altrimenti verrà utilizzata la stringa letterale. | | -spo | --scope-prefix-original | Se viene passato l'argomento , questo determina se il link originale che inizia con viene incluso anche nell'output (default: false) | | -spkf | --scope-prefix-keep-failed | Se viene passato l'argomento , questo determina se un link prefissato viene mantenuto nell'output se era un 404 o si verifica una RequestException (default: false) | | -sf | --scope-filter | Filtra i link di output includendoli solo se il dominio del link è nello scope specificato. Se il valore passato è un nome file valido, verrà utilizzato quel file, altrimenti verrà utilizzata la stringa letterale. Questo argomento è ora obbligatorio se l'input è un dominio/URL (o file di domini/URL) per evitare di scansionare siti non in scope e prevenire risultati fuorvianti. | | -c | --cookies † | Aggiunge cookie da passare con le richieste HTTP. Da passare nel formato | | -H | --headers † | Aggiunge intestazioni personalizzate da passare con le richieste HTTP. Da passare nel formato | | -ra | --regex-after | RegEx per scopi di filtraggio sugli endpoint trovati prima dell'output (es. ). Se corrisponde, il link viene emesso. | | -d | --depth † | Il livello di profondità di ricerca. Ad esempio, se viene passato un valore di 2, tutti i link trovati inizialmente verranno poi cercati per trovare più link (default: 1). Questa opzione viene ignorata per file Burp, file ZAP, file Caido e file HAR perché possono essere enormi e consumare molta memoria. È anche consigliabile usare l'argomento () per garantire che sia possibile effettuare una richiesta ai link trovati senza dominio. | | -p | --processes † | Viene eseguito un multithreading di base quando si effettuano richieste per un URL o un file di URL (non un file Burp, ZAP, Caido o HAR). Questo argomento determina il numero di processi (thread) utilizzati (default: 25) | | -rl | --rate-limit † | Numero massimo di richieste da inviare al secondo (default: 0, nessun limite di frequenza). Questo aiuta a prevenire il sovraccarico del server di destinazione. | | -x | --exclude | Esclusioni di link aggiuntive (rispetto all'elenco in ) in un elenco separato da virgole, ad es. | | -orig | --origin | Se si desidera che l'origine del link sia nell'output. Visualizzato come nell'output (default: false) | | -prefixed | | Se si desidera vedere quali link sono stati prefissati nell'output. Mostra dopo il link e l'origine nell'output (default: false) | | -xrel | --exclude-relative-links | Per impostazione predefinita, se un link nei risultati inizia con o , verrà incluso. Se viene utilizzato questo argomento, questi link relativi non verranno aggiunti. | | -t | --timeout † | Quanti secondi attendere che il server invii dati prima di arrendersi (default: 10 secondi) | | -r | --retries † | Il numero di volte per ritentare una richiesta dopo un fallimento (ad es. timeout, errore di connessione, ecc.). Il limite è 5 tentativi (default: 0) | | -inc | --include | Includi i link di input () nell'output (default: false) | | -u | --user-agent † | Quali User Agent utilizzare per ottenere link, ad es. . I valori possibili sono , , e . Inoltre ci sono , e che sono sottoinsiemi di ma possono essere usati separatamente. | | -uc | --user-agent-custom † | Una stringa User Agent personalizzata da usare per tutte le richieste. Questo sovrascriverà l'argomento /. Può essere usato quando un programma richiede un'intestazione User Agent specifica per identificarti, per esempio. | | -insecure | † | Se i controlli dei certificati TLS devono essere disabilitati durante le richieste (default: false) | | -s429 | † | Ferma quando > 95 percento delle risposte restituiscono 429 Too Many Requests (default: false) | | -s403 | † | Ferma quando > 95 percento delle risposte restituiscono 403 Forbidden (default: false) | | -sTO | † | Ferma quando > 95 percento delle richieste vanno in timeout (default: false) | | -sCE | † | Ferma quando > 95 percento delle richieste hanno errori di connessione (default: false) | | -m | --memory-threshold | La percentuale soglia di memoria. Se la memoria della macchina supera la soglia, il programma verrà fermato e concluso in modo ordinato prima di esaurire la memoria (default: 95) | | -mfs | --max-file-size † | La dimensione massima del file (in byte) di un file da controllare se -i è una directory. Se la dimensione del file è superiore, verrà ignorato (default: 500 MB). Impostare a 0 significa che nessun file verrà ignorato, indipendentemente dalla dimensione. | | -mrs | --max-response-size † | La dimensione massima della risposta (in MB) da scaricare. Le risposte più grandi di questa verranno saltate (default: 100 MB). | | -fp | --forward-proxy † | Per il rilevamento attivo dei link con URL (o file di URL), riprodurre le richieste attraverso un proxy come Burp o Caido, ad es. . | | -rp | --request-proxy | Proxy di richiesta da utilizzare. Può essere una stringa proxy (ad es. , ) o un file contenente un elenco di proxy (uno per riga, selezione casuale). | | | --heap | Se eseguire un'istantanea dell'heap degli URL visitati ed estrarre i link dalla memoria del browser. Ciò richiederà più tempo, ma potrebbe scoprire link generati dinamicamente che l'analisi statica standard potrebbe non rilevare (Richiede Playwright installato). | | -ro | --readable-only | Se passato, solo il testo leggibile da umani verrà estratto dalle risposte/file HTML utilizzando BeautifulSoup prima di cercare i link. Questo esclude il contenuto dei tag , , e . | | -ascii-only | | Se i link e i parametri verranno aggiunti solo se contengono esclusivamente caratteri ASCII. Può essere utile quando si sa che il target probabilmente utilizza caratteri ASCII e si ottengono anche molti falsi positivi da file binari per qualche motivo. | | -mtl | --max-time-limit | Il limite di tempo massimo (in minuti) per l'esecuzione prima di fermarsi (default: 0). Se viene passato 0, non c'è limite. | | | --config | Percorso del file di configurazione YML. Se non passato, cerca il file nella directory predefinita, tipicamente . | | -nwlpl | --no-wordlist-plurals | Quando vengono trovate parole per una wordlist specifica del target, per impostazione predefinita vengono aggiunte nuove parole se c'è una parola singolare da un plurale e viceversa. Se viene usato questo argomento, questo processo non viene eseguito. | | -nwlpw | --no-wordlist-pathwords | Per impostazione predefinita, qualsiasi parola di percorso trovata nei link verrà elaborata per la wordlist specifica del target. Se viene usato questo argomento, non verranno elaborate. | | -nwlpm | --no-wordlist-parameters | Per impostazione predefinita, qualsiasi parametro trovato nei link verrà elaborato per la wordlist specifica del target. Se viene usato questo argomento, non verranno elaborati. | | -nwlc | --no-wordlist-comments | Per impostazione predefinita, qualsiasi commento nelle pagine verrà elaborato per la wordlist specifica del target. Se viene usato questo argomento, non verranno elaborati. | | -nwlia | --no-wordlist-imgalt | Per impostazione predefinita, qualsiasi attributo 'alt' delle immagini verrà elaborato per la wordlist specifica del target. Se viene usato questo argomento, non verranno elaborati. | | -nwld | --no-wordlist-digits | Esclude qualsiasi parola con cifre numeriche dalla wordlist specifica del target. | | -nwll | --no-wordlist-lowercase | Per impostazione predefinita, qualsiasi parola aggiunta con caratteri maiuscoli verrà aggiunta anche in minuscolo. Se viene usato questo argomento, le parole minuscole non verranno aggiunte. | | -wlml | --wordlist-maxlen | La lunghezza massima delle parole da aggiungere alla wordlist specifica del target, esclusi i plurali (default: 0 - nessun limite) | | -swf | --stopwords-file | Un file di Stop Words aggiuntive (oltre a "stopWords" nel file di configurazione YML) utilizzate per escludere parole dalla wordlist specifica del target. Le Stop Words sono utilizzate nell'elaborazione del linguaggio naturale e diversi elenchi possono essere trovati in diverse librerie. Potresti voler aggiungere parole in diverse lingue, a seconda del tuo target. | | -brt | --burpfile-remove-tags | Quando l'input passato con è un file Burp, all'utente viene chiesto interattivamente se desidera rimuovere i tag non necessari da quel file (a volte c'è un problema nei file XML Burp che spesso può essere risolto rimuovendo i tag superflui, il che renderà anche il file più piccolo). Se stai usando xnLinkFinder in uno script, non vuoi interrompere per l'input utente, quindi puoi impostarlo passando questo argomento con o . NOTA: Questa è una modifica permanente al file | | -all | --all-tlds | Tutti i link trovati verranno restituiti, anche se il TLD non è comune. Questo può comportare un certo numero di falsi positivi in cui nomi di variabili, ecc. potrebbero anche essere un possibile dominio genuino. Per impostazione predefinita, vengono restituiti solo i link che hanno un TLD nei TLD comuni ( in ). | | -cl | --content-length | Mostra il Content-Length della risposta durante la scansione. | | -nb | --no-banner | Nasconde il banner dello strumento. | | -v | --verbose | Output verbose | | -vv | --vverbose | Output verbose aumentato | | | --version | Mostra il numero di versione corrente. | | -h | --help | mostra il messaggio di aiuto ed esci |† NON RILEVANTE PER INPUT DI DIRECTORY, BURP XML FILE, ZAP FILE, CAIDO CSV FILE, O HAR FILE

config.yml

Il file config.yml (tipicamente in ~/.config/xnLinkFinder/) contiene le chiavi che possono essere aggiornate secondo le proprie necessità:

  • linkExclude - Un elenco di stringhe separate da virgole (ad es. .css,.jpg,.jpeg ecc.) con cui vengono controllati tutti i link. Se un link include una di queste stringhe, verrà escluso dall'output. Se l'input è una directory, i nomi dei file vengono controllati rispetto a questo elenco.
  • contentExclude - Un elenco di stringhe separate da virgole (ad es. text/css,image/jpeg,image/jpg ecc.) con cui vengono controllate le intestazioni Content-Type di tutte le risposte. Qualsiasi risposta con questi tipi di contenuto verrà esclusa e non verrà controllata per i link.
  • fileExtExclude - Un elenco di stringhe separate da virgole (ad es. .zip,.gz,.tar ecc.) con cui vengono controllati tutti i file in modalità Directory. Se un file ha una di queste estensioni, non verrà cercato per i link. Inoltre, in modalità normale, se una risposta non ha un content-type per controllare le esclusioni, verranno controllate queste estensioni alla fine dell'URL per determinare se cercare i link.
  • regexFiles - Un elenco di tipi di file separati dal carattere pipe (ad es. php|php3|php5 ecc.). Vengono utilizzati nell'espressione regolare di ricerca dei link quando ci sono risultati che non sono link ovvi, ma sono tipi di file interessanti che si desidera individuare. Se si aggiunge a questo elenco, assicurarsi di eseguire l'escape di eventuali punti per garantire un'espressione regolare corretta, ad es.

† SE QUESTI NON VENGONO TROVATI NEL FILE DI CONFIGURAZIONE, VERDRANNO IMPOSTATI SU True

Examples

Find Links from a specific target - Basic```

xnLinkFinder -i target.com -sf target.com

root@kitploit:~
### Trova collegamenti da un target specifico - Dettagliato

Idealmente, fornisci un prefisso di ambito (`-sp`) con il dominio primario (incluso lo schema), e un filtro di ambito (`-sf`) per filtrare i risultati solo ai domini rilevanti (questo può essere un file o domini in scope). Inoltre, puoi passare cookie e header personalizzati per assicurarti di trovare link disponibili solo per utenti autorizzati.
Specificare lo User Agent (`-u desktop mobile`) cercherà prima tutti i link utilizzando User Agent desktop, e poi riproverà utilizzando user agent mobile. Potrebbero esserci endpoint specifici collegati allo user agent fornito. Fornire un valore di profondità (`-d`) continuerà a inviare richieste ai link trovati nella ricerca di profondità precedente per trovare ulteriori link.```
xnLinkFinder -i target.com -sp target_prefix.txt -sf target_scope.txt -spo -inc -vv -H 'Authorization: Bearer XXXXXXXXXXXXXX' -c 'SessionId=MYSESSIONID' -u desktop mobile -d 10

Trova collegamenti da un elenco di URL - Base

Se hai un file di URL di file JS, per esempio, puoi cercare collegamenti in essi:``` xnLinkFinder -i target_js.txt -sf target.com

root@kitploit:~
NOTA: Un file passato viene considerato come un elenco di URL se la prima riga inizia con `//` o `http` o è in un formato di dominio (es. `example.com`, `sub.example.co.uk`), altrimenti viene considerato come un file in cui cercare nel contenuto (a meno che non sia un file Burp, Zap, Caido o HAR).

### Trova collegamenti dal contenuto di un file - Base

Se hai una risposta salvata per esempio, puoi cercare collegamenti in essa:```
xnLinkFinder -i response.txt -sf target.com

NOTE: Un file passato è considerato un elenco di URL se la prima riga inizia con // o http o è nel formato di un dominio (es. example.com, sub.example.co.uk), altrimenti viene considerato un file di cui cercare il contenuto (a meno che non sia un file Burp, Zap, Caido o HAR).

Trova link da file in una directory - Base

Se hai dei file, ad esempio file JS, risposte HTTP, ecc., puoi cercare i link al loro interno:``` xnLinkFinder -i ~/.config/waymore/results/target.com

root@kitploit:~
NOTA: Vengono controllate anche le sottodirectory. L'opzione `-mfs` può essere specificata per saltare i file oltre una certa dimensione.

### Trovare link da un progetto Burp - Base

In Burp, seleziona gli elementi che desideri cercare evidenziando l'ambito, ad esempio, facendo clic con il tasto destro e selezionando `Salva elementi selezionati`. Assicurati che l'opzione `codifica base64 di richieste e risposte` sia spuntata prima di salvare.
Per ottenere tutti i link dal file (anche con file ENORMI, sarai in grado di ottenere tutti i link):```
xnLinkFinder -i target_burp.xml

NOTA: xnLinkFinder presuppone che se la prima riga del file passato con -i inizia con <?xml, allora si sta tentando di elaborare un file Burp.

Trova collegamenti da un progetto Burp - Dettagliato

Idealmente, fornisci un prefisso di ambito (-sp) con il dominio principale (incluso lo schema) e un filtro di ambito (-sf) per filtrare i risultati solo ai domini pertinenti.``` xnLinkFinder -i target_burp.xml -o target_burp.txt -sp https://www.target.com -sf target.* -ow -spo -inc -vv

root@kitploit:~
### Trova i collegamenti da un progetto ZAP - Base

In ZAP, seleziona gli elementi che vuoi cercare evidenziando ad esempio la Cronologia, cliccando sul menu `Export` e selezionando `Save Messages...` (o `Export Messages to File...` nelle versioni precedenti). Questo ti permetterà di salvare un file di testo ASCII di tutte le richieste e risposte che desideri cercare.
Per ottenere tutti i collegamenti dal file (anche con file ENORMI, sarai in grado di ottenere tutti i collegamenti):```
xnLinkFinder -i target_zap.txt

NOTE: xnLinkFinder presuppone che se la prima riga del file passato con -i è nel formato ==== 99 ========== o ===99 ========== per esempio, allora si sta tentando di elaborare un file di testo ASCII di ZAP.

Trovare i link da un file CSV esportato da Cadio - Base

In Caido, vai alla sezione History e seleziona l'opzione Export.

Se utilizzi Caido Pro o Enterprise, scegli l'opzione Export current rows e seleziona As CSV. Vai alla sezione Exports e scarica il file CSV. Quindi passalo come input:``` xnLinkFinder -i 2023-03-18-010332_csv_requests.csv

root@kitploit:~
Se stai usando l'edizione Caido Community, dovrai scegliere l'opzione **Export all** e selezionare **As CSV**. Vai alla sezione **Exports** e scarica il file CSV. Poiché hai la cronologia completa, vorrai rimuovere tutto ciò che non è rilevante dal file CSV. Usa l'esempio sottostante, in cui `redbull` è la parte principale dei domini del target che stai cercando.```
cat 2023-03-18-010332_csv_requests.csv | grep -E '^id|^[0-9]+,[^,]*redbull' > caido_redbull.csv
xnLinkFinder -i caido_redbull.csv

NOTA: xnLinkFinder presume che se la prima riga del file passato con -i è nel formato id,host,method, allora si sta tentando di elaborare un file CSV di esportazione di Caido.

Trova i collegamenti da un file JSON HAR (HTTP Archive) - Base

Un file HAR è un file JSON che contiene un elenco di richieste e risposte HTTP. È un formato comune per archiviare il traffico HTTP. Puoi esportare un file HAR dalla maggior parte dei browser web, di solito dalla scheda Rete negli Strumenti per sviluppatori. Passa il file come input:``` xnLinkFinder -i browser.har

root@kitploit:~
NOTA: xnLinkFinder presume che se il nome del file termina con `.har` OPPURE la prima riga del file contiene `"log"` e inizia con `{` allora si sta tentando di elaborare un file HAR.

### Trova collegamenti da una directory di risultati di Waymore

Lo strumento [waymore](https://github.com/xnl-h4ck3r/waymore) può essere utilizzato per ottenere URL da varie API di terze parti, oltre a scaricare risposte archiviate da varie fonti. Passare una directory di risultati di waymore a `xnLinKFinder` cercherà i contenuti delle risposte archiviate, richiederà anche gli URL da `waymore.txt` e gli URL archiviati da `waymore_index.txt` (o `index.txt` per versioni precedenti di `waymore`) e otterrà ulteriori collegamenti da quelle risposte. Se `-d`/`--depth` è zero, allora gli URL da `waymore_index.txt` verranno soltanto restituiti ma non richiesti.```
xnLinkFinder -i ~/Tools/waymore/results/target.com

NOTA: Viene passato come una directory normale, ma xnLinkFinder determinerà che si tratta di una directory dei risultati di waymore e la elaborerà di conseguenza. Questo si basa sulla convenzione di denominazione predefinita del file degli URL che è waymore.txt e sul fatto che quel file si trovi nella stessa directory dei file archiviati (cosa vera per impostazione predefinita).

Invio ad altri strumenti

Puoi reindirizzare xnLinkFinder ad altri strumenti. Gli eventuali errori vengono inviati a stderr e tutti i collegamenti trovati a stdout. Il file di output viene comunque creato oltre ai collegamenti reindirizzati al programma successivo. Tuttavia, i potenziali parametri non vengono reindirizzati al programma successivo, ma vengono comunque scritti su file. Ad esempio:``` xnLinkFinder -i redbull.com -sp https://redbull.com -sf rebbull.* -d 3 | unfurl keys | sort -u

root@kitploit:~
Puoi anche passare l'input tramite `stdin` invece di `-i`.```
cat redbull_subs.txt | xnLinkFinder -sp https://redbull.com -sf rebbull.* -d 3

NOTA: Non è possibile utilizzare pipe per un file Burp, ZAP, Caido o HAR, questi devono essere passati usando -i.

Raccomandazioni e Note

  • Utilizzare sempre l'argomento Scope Prefix -sp. Può essere un singolo dominio di ambito, o un file contenente più domini di ambito. Di seguito sono riportati esempi del formato utilizzato (non deve essere incluso alcun percorso e non devono essere usati caratteri jolly. Lo schema è opzionale, ma per impostazione predefinita sarà http): ``` http://www.target.com https://target-payments.com https://static.target-cdn.com
    root@kitploit:~

Se viene trovato un link che non ha un dominio, ad esempio /path/to/example.js allora passando -sp http://www.target.com si otterrà l'output http://www.target.com/path/to/example.js e se la Profondità (-d) è >1, sarà possibile effettuare una richiesta a quell'URL per cercare ulteriori link. Se viene passato un file di domini usando -sp, l'output includerà ogni dominio seguito da /path/to/example.js e aumenterà la possibilità di trovare ulteriori link.

  • Se usi -sp ma desideri comunque che il link originale di /path/to/example.js (senza dominio) venga restituito nell'output, passa l'argomento -spo.
  • Usa sempre l'argomento Filtro Scope -sf. Questo garantirà che solo i domini rilevanti vengano restituiti nell'output e, cosa più importante, se la Profondità (-d) è >1, i target fuori scope non verranno cercati per link o parametri. Può essere un singolo dominio di scope o un file contenente più domini di scope. Di seguito sono riportati esempi del formato utilizzato (non devono essere inclusi schema o percorso): ``` target.* target-payments.com static.target-cdn.com
    root@kitploit:~

QUESTA PARTE È SOLO PER FILTRARE IL DOMINIO DEI LINK.

  • Se vuoi filtrare l'output finale in qualsiasi modo, usa -ra. È sempre una buona idea utilizzare https://regex101.com/ per verificare che la tua espressione Regex faccia ciò che ti aspetti.
  • Usa l'opzione -v per avere un'idea migliore di cosa fa lo strumento.
  • Se hai problemi, usa l'opzione -vv che può mostrare errori che si verificano, che possono essere eventualmente risolti, o che puoi segnalare come issue su github.
  • Passa i cookie (-c), gli header (-H) e il regex (-ra) tra virgolette singole, ad es. -ra '/api/v[0-9]\.[0-9]\*'
  • Imposta l'opzione -o per dare un nome specifico al file di output per i Link, invece del valore predefinito output.txt. Se intendi eseguire una grande profondità di ricerca, inizia con 2 e l'opzione -v per controllare cosa viene restituito. Poi puoi aumentare la Depth e il nuovo output verrà aggiunto al file esistente, a meno che non passi -ow.
  • Imposta l'opzione per dare un nome specifico al file di output per i Potenziali Parametri, invece del valore predefinito . Qualsiasi output verrà aggiunto al file esistente, a meno che non passi .

Problemi

Se incontri qualsiasi problema, o hai idee per miglioramenti, sentiti libero di aprire un issue su Github. Se c'è un problema, sarà utile se fornisci il comando esatto che hai eseguito e una descrizione dettagliata del problema. Se possibile, esegui con -vv per riprodurre il problema e fammi sapere eventuali messaggi di errore che vengono visualizzati.

TODO

  • Aggiungere un controllo regex specifico per le Richieste quando viene passato un file proxy come input. Attualmente usa lo stesso regex delle Richieste, ma non è l'ideale.
  • Ottenere i nomi dei Cookie da aggiungere alla lista dei potenziali parametri.

Esempio di output

Ricerca attiva dei link per un dominio:

...

Input e output tramite pipe:

Buona fortuna e buona caccia! Se ami davvero lo strumento (o qualsiasi altro), o se ti hanno aiutato a trovare una fantastica bounty, considera OFFRIMI UN CAFFÈ! ☕ (La caffeina mi serve!)

🤘 /XNL-h4ck3r

Buy Me a Coffee at ko-fi.com

Scarica lo strumento
-ow
cli
-ow
-ow
/
-sp
/
-spkf
'nome1=valore1; nome2=valore2;'
'Intestazione1: valore1; Intestazione2: valore2;'
/api/v[0-9]\.[0-9]\*
-sp
--scope-prefix
config.yml
carriera,forum
LINK-URL [ORIGIN-URL]
(PREFIXED)
./
../
-i
-u desktop mobile
desktop
mobile
set-top-boxes
game-console
mobile-apple
mobile-android
mobile-windows
mobile
-u
--user-agent
http://127.0.0.1:8080
http://user:[email protected]:8000
socks5://host:port
<script>
<style>
<noscript>
<template>
config.yml
~/.config/xnLinkFinder
NOTA: se il valore di configurazione YAML respParamPathWords è True, questo argomento non avrà effetto a meno che non venga passato anche -nwlpm/--no-wordlist-parameters.
-i
true
false
commonTLDs
config.yml
js\.map
  • respParamLinksFound † - Se ottenere potenziali parametri dai link trovati nelle risposte: True o False
  • respParamPathWords † - Se aggiungere parole del percorso nei link recuperati come potenziali parametri: True o False
  • respParamJSON † - Se il tipo MIME della risposta contiene JSON, se aggiungere i valori delle chiavi JSON come potenziali parametri: True o False
  • respParamJSVars † - Se le variabili JavaScript impostate con var, let o const vengono aggiunte come potenziali parametri: True o False
  • respParamXML † - Se il tipo MIME della risposta contiene XML, se aggiungere i valori degli attributi XML come potenziali parametri: True o False
  • respParamInputField † - Se il tipo MIME della risposta contiene HTML o JAVASCRIPT (perché l'HTML potrebbe essere costruito in HTML), se aggiungere gli attributi NAME e ID di qualsiasi campo INPUT (o TEXTAREA/SELECT/BUTTON) come potenziali parametri: True o False
  • respParamMetaName † - Se il tipo MIME della risposta contiene HTML, se aggiungere gli attributi NAME di qualsiasi tag META come potenziali parametri: True o False
  • wordsContentTypes - Un elenco di stringhe separate da virgole (ad es. text/html,text/plain) per specificare quali tipi di contenuto delle risposte verranno cercati per le parole da inserire nella wordlist specifica del target.
  • stopWords - Un elenco di stringhe separate da virgole (ad es. then,this,that) per specificare le parole che vengono escluse dalla wordlist specifica del target. Questo elenco predefinito è inizialmente composto da determinanti inglesi, congiunzioni coordinanti e preposizioni, più un elenco di stop words di Scikit-Learn, una libreria di machine learning in Python.
  • commonTLDs - Un elenco separato da virgole dei TLD più comuni. A meno che non venga passato l'argomento -all/--all-tlds, vengono restituiti solo i link con domini che hanno un TLD in questo elenco.
  • -op
    parameters.txt
    -ow
  • Se usi un Depth elevato (-d), fai attenzione ad alcuni siti che utilizzano link dinamici, quindi continuerà a trovarne di nuovi. Se non vengono trovati nuovi link, xnLinkFinder smetterà di cercare. È opportuno considerare anche l'impostazione dei flag di Stop (s429, s403, sTO, sCE).
  • Se stai trovando un gran numero di link, specialmente se il Depth (valore -d) è alto e hai risorse limitate, il programma si fermerà quando raggiunge il valore di Threshold di memoria (-m) e terminerà in modo pulito con i dati intatti prima di essere killato.
  • Se decidi di annullare xnLinkFinder (usando Ctrl-C) durante l'esecuzione, sii paziente e i dati raccolti verranno salvati prima della terminazione pulita.
  • Usando l'opzione -orig verrà mostrato l'URL dove è stato trovato il link. Questo può significare che hai link duplicati nell'output se lo stesso link è stato trovato su più fonti, ma sarà suffisso con l'URL di origine tra parentesi quadre.
  • Quando effettua richieste, xnLinkFinder userà un User-Agent casuale dal gruppo corrente, che di default è desktop (a meno che non venga usato l'argomento -uc/--user-agent-custom). Se hai un target che potrebbe avere link diversi per diversi gruppi di user agent, specifica ad esempio -u desktop mobile (separati da spazio). L'opzione mobile è una combinazione di mobile-apple, mobile-android e mobile-windows. I valori possibili sono desktop, mobile, set-top-boxes e game-console.
  • Quando -i è impostato su una directory, verranno cercati i link nei contenuti dei file nella radice di quella directory. I file nelle sottodirectory non vengono cercati. I file che superano la dimensione impostata da -mfs (default: 500 MB) verranno saltati.
  • Quando si usa l'opzione -replay-proxy, a volte le richieste possono richiedere più tempo. Se inizi a vedere più errori Request Timeout (vedrai gli errori se usi le opzioni -v o -vv) allora considera di usare -t per aumentare il limite di timeout.
  • Se sai che un target avrà solo caratteri ASCII nei link e nei parametri, considera di passare -ascii-only. Questo può eliminare un certo numero di falsi positivi che a volte vengono restituiti da dati binari.
  • Se passi una directory di risultati di waymore, vale la pena passare l'argomento -d/--depth per cercare eventuali link extra trovati dalle richieste URL e anche -u/--user-agent se pensi che possano esserci contenuti diversi trovati, ad es. -u desktop mobile.
  • Passa sempre il nome file -owl/--output-wordlist per salvare la wordlist specifica del target. Questa lista può essere molto utile quando si fa fuzzing di un target.
  • Le parole per la wordlist specifica del target sono prese dalle seguenti fonti (qualsiasi parola di 3 o più caratteri), ma sono anche determinate dagli altri argomenti della wordlist (vedi sezione Utilizzo sopra):
    • Tutte le risposte con determinate condizioni:
      • Vengono cercate solo le risposte con tipi di contenuto specificati nella sezione wordsContentTypes del config YML. I default sono text/html,application/xml,application/json,text/plain
      • Parole dal contenuto dei tag <meta> dove:
        • Property è og:title o og:description
        • Name è description,keywords,twitter:title o twitter:description
      • Parole dai commenti HTML
      • Parole dall'attributo alt dei tag ``
      • Parole dal resto dell'HTML interno della pagina, esclusi i tag <style>, <script> e <link>
    • Parole trovate dalle parole dei percorsi nei link trovati.
    • Parametri trovati dalle risposte e dai link.
    • A tutte le parole valide verrà aggiunta anche la forma singolare/plurale alla wordlist, se possibile.
    • Se la parola originale ha caratteri maiuscoli, verrà aggiunta anche una versione in minuscolo.
  • Se le "Stop Words" di default per una wordlist specifica del target non sono abbastanza buone, modificale nel file config YML, oppure fornisci stop words aggiuntive usando l'opzione -swf/--stopwords-file. Potresti voler includere stop words in un'altra lingua, a seconda del target. Le stop words sono usate nell'elaborazione del linguaggio naturale (NLP) e molte liste di stop words possono essere trovate online per soddisfare diverse esigenze.