Wapiti — verifica delle vulnerabilità del sito con le proprie forze

Wapiti — verifica delle vulnerabilità del sito con le proprie forze
Nel passato articolo abbiamo parlato di Nemesida WAF Free — uno strumento gratuito per proteggere siti web e API dagli attacchi informatici, e in questo articolo abbiamo deciso di fare una revisione di uno scanner di vulnerabilità popolare Wapiti.

La scansione del sito per vulnerabilità è una misura necessaria che, insieme all'analisi del codice sorgente, consente di valutare il livello di protezione dalle minacce di compromissione. È possibile eseguire la scansione di una risorsa web utilizzando strumenti specializzati.

Nikto, W3af (scritto in Python 2.7, il cui supporto è terminato) o Arachni (non supportato da febbraio) sono le soluzioni più popolari disponibili nel segmento gratuito. Naturalmente, ci sono anche altri strumenti, come Wapiti, su cui ci concentreremo.

Wapiti lavora con i seguenti tipi di vulnerabilità:

  • divulgazione di file (locali e remoti, fopen, readfile);
  • iniezioni (PHP / JSP / ASP / SQL-injection e XPath-injections);
  • XSS (cross-site scripting) (riflesso e persistente);
  • rilevamento ed esecuzione di comandi (eval(), system(), passtru());
  • CRLF-injections (separazione delle risposte HTTP, fissazione della sessione);
  • XXE (XML External Entity) injection;
  • SSRF (falsificazione delle richieste lato server);
  • utilizzo di file potenzialmente pericolosi noti (grazie al database Nikto);
  • configurazioni .htaccess deboli che possono essere aggirate;
  • presenza di file di backup che rivelano informazioni riservate (esposizione del codice sorgente);
  • Shellshock;
  • reindirizzamenti aperti;
  • metodi HTTP non standard che possono essere autorizzati (PUT).

Funzionalità:

  • supporto per proxy HTTP, HTTPS e SOCKS5;
  • autenticazione tramite più metodi: Basic, Digest, Kerberos o NTLM;
  • possibilità di limitare l'ambito della scansione (dominio, cartella, pagina, URL);
  • cancellazione automatica di uno dei parametri nell'URL;
  • multiple precauzioni contro cicli di scansione infiniti (esempio: ifor, limitazione dei valori per il parametro);
  • possibilità di impostare priorità per l'esplorazione degli URL (anche se non si trovano nell'ambito della scansione);
  • possibilità di escludere alcuni URL dalla scansione e dagli attacchi (ad esempio: URL logout);
  • importazione di cookie (acquisizione tramite lo strumento wapiti-getcookie);
  • possibilità di attivare / disattivare la verifica dei certificati SSL;
  • possibilità di estrarre URL da JavaScript (interprete JS molto semplice);
  • interazione con HTML5;
  • diversi metodi per gestire il comportamento e le limitazioni del crawler;
  • impostazione di un tempo massimo per il processo di scansione;
  • aggiunta di intestazioni HTTP personalizzabili o configurazione di un User-Agent personalizzato.

Funzionalità aggiuntive:

  • creazione di report sulle vulnerabilità in vari formati (HTML, XML, JSON, TXT);
  • sospensione e ripresa della scansione o degli attacchi (meccanismo di sessione con utilizzo di database SQLite3);
  • evidenziazione nel terminale per evidenziare le vulnerabilità;
  • diversi livelli di registrazione;
  • modo rapido e semplice per attivare/disattivare i moduli di attacco.

Installazione

L'ultima versione di Wapiti può essere installata in 2 modi:

  • scaricando il sorgente dal sito ufficiale sito e avviando lo script di installazione, dopo aver installato Python3;
  • utilizzando il comando pip3 install wapiti3.

Dopo di che, Wapiti sarà pronto per l'uso.

Utilizzo dello strumento

Per dimostrare il funzionamento di Wapiti, utilizzeremo una piattaforma appositamente preparata sites.vulns.pentestit.ru (risorsa interna), contenente diverse vulnerabilità (Injection, XSS, LFI/RFI) e altri difetti delle applicazioni web.

Le informazioni sono fornite solo a scopo informativo. Non violare la legge!

Il comando di base per avviare lo scanner:

# wapiti -u <target> <options>

Sono disponibili anche informazioni dettagliate con un'enorme varietà di opzioni di avvio, come ad esempio:

—scope — ambito
Se si specifica il parametro scope insieme all'URL da esaminare, è possibile regolare l'ambito della scansione del sito, specificando sia una singola pagina che tutte le pagine che possono essere trovate sul sito.

-s e -x — parametri per l'aggiunta o la rimozione di URL specifici. Questi parametri sono utili quando è necessario aggiungere o rimuovere un URL specifico durante il processo di scansione.

—skip — il parametro specificato con questa chiave verrà scansito ma non attaccato. Utile se ci sono determinati parametri pericolosi che sarebbe meglio escludere dalla scansione.

—verify-ssl — attivazione o disattivazione del controllo del certificato.
Scanner Wapiti modulare. Tuttavia, per avviare specifici moduli, tra quelli che si collegano automaticamente durante l'operazione dello scanner, è necessario utilizzare il comando -m e elencarli separati da virgole. Se non si utilizza il comando, tutti i moduli saranno attivi per impostazione predefinita. La modalità più semplice apparirà come segue:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Questo esempio di utilizzo significa che utilizzeremo solo i moduli SQL, XSS e XXE per scansionare l'obiettivo. Inoltre, è possibile filtrare l'operazione dei moduli in base al metodo desiderato. Ad esempio -m “xss: get, blindsql: post, xxe: post”. In tal caso, il modulo xss verrà applicato alle richieste trasmesse tramite il metodo GET, mentre il modulo blindsql sarà applicato alle richieste POST, e così via. Inoltre, se un modulo incluso nell'elenco non è necessario durante la scansione o impiega troppo tempo, premendo la combinazione Ctrl+C si può saltare l'utilizzo del modulo corrente, selezionando l'opzione appropriata nel menu interattivo.

Wapiti supporta l'invio di richieste tramite un server proxy utilizzando il comando -p e l'autenticazione sul sito target tramite il parametro -a. È possibile anche specificare il tipo di autenticazione: Basiс, Digest, Kerberos e NTLM. Per gli ultimi due potrebbe essere necessario installare moduli aggiuntivi. Inoltre, è possibile inserire nelle richieste qualsiasi intestazione (compresa una personalizzata User-Agent) e molto altro.

Per utilizzare l'autenticazione, si può utilizzare lo strumento wapiti-getcookie. Con questo strumento formiamo cookie, che Wapiti utilizzerà durante la scansione. La formazione cookie avviene tramite il comando:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

Durante il lavoro in modalità interattiva, rispondiamo a domande e forniamo le informazioni necessarie come: login, password e altro:

Wapiti — verifica delle vulnerabilità del sito con le proprie forze

In uscita otteniamo un file in formato JSON. Un'altra opzione è aggiungere tutte le informazioni necessarie tramite il parametro -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

Il risultato sarà simile:

Wapiti — verifica delle vulnerabilità del sito con le proprie forze

Esaminando le funzionalità principali dello scanner, la richiesta finale per eseguire il test dell'applicazione web nel nostro caso è stata:

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

dove tra i diversi parametri:

-f e -o — formato e percorso per il salvataggio del rapporto;

-m — collegare tutti i moduli — non consigliato, poiché influisce sul tempo di test e sulla dimensione del rapporto;

—color — evidenziare le vulnerabilità trovate in base alla loro gravità secondo la versione di Wapiti;

-c — utilizzo di un file con cookie, generato utilizzando wapiti-getcookie;

—scope — scelta dell'obiettivo per l'attacco. Scegliendo l'opzione cartella verrà scansionato e attaccato ogni URL, a partire dalla base. L'URL di base deve terminare con una barra obliqua (senza nome del file);

—flush-session — consente di eseguire una nuova scansione, escludendo i risultati precedenti;

-A — personale User-Agent;

-p — indirizzo del server proxy, se necessario.

Un po' sul rapporto

Il risultato della scansione è presentato sotto forma di un rapporto dettagliato su tutte le vulnerabilità trovate in formato pagina HTML, in modo comprensibile e facile da leggere. Nel rapporto saranno indicate le categorie e il numero delle vulnerabilità trovate, la loro descrizione, le richieste, i comandi per curl e i suggerimenti su come risolverle. Per facilitare la navigazione, nei titoli delle categorie verrà aggiunto un collegamento, cliccando sul quale si potrà accedere ad essa:

Wapiti — verifica delle vulnerabilità del sito con le proprie forze

Un significativo svantaggio del rapporto è l'assenza di una mappa dell'applicazione web, senza la quale non sarà chiaro se tutti gli indirizzi e i parametri siano stati analizzati. C'è anche il rischio di falsi positivi. Nel nostro caso, il rapporto menziona "file di backup" e "file potenzialmente pericolosi". Il loro numero non corrisponde alla realtà, poiché tali file non erano presenti sul server:

Wapiti — verifica delle vulnerabilità del sito con le proprie forze

È possibile che i moduli non funzionanti vengano corretti nel tempo. Un altro difetto del rapporto è l'assenza di colorazione delle vulnerabilità trovate (a seconda della loro gravità), o almeno la loro suddivisione in categorie. L'unico modo per comprendere indirettamente la gravità di una vulnerabilità trovata è applicare il parametro —color durante la scansione e allora le vulnerabilità trovate verranno colorate in diversi colori:

Wapiti — verifica delle vulnerabilità del sito con le proprie forze

Ma nel rapporto stesso non è prevista tale colorazione.

Vulnerabilità

SQLi

Lo scanner ha parzialmente effettuato la ricerca di SQLi. Nella ricerca di vulnerabilità SQL su pagine dove non è richiesta l'autenticazione, non ci sono problemi:

Wapiti — verifica delle vulnerabilità del sito con le proprie forze

Non è stato possibile trovare vulnerabilità nelle pagine accessibili solo dopo l'autenticazione, neanche utilizzando credenziali valide cookie, poiché probabilmente dopo un'accesso riuscito verrà eseguita la "disconnessione della sessione" e cookie diventeranno non valide. Se la funzione di disautenticazione fosse stata eseguita come uno script separato responsabile della gestione di questa procedura, sarebbe stato possibile escluderlo completamente tramite il parametro -x, evitando così che venga attivato. In caso contrario, non sarà possibile escludere il suo trattamento. Questo è un problema non di un modulo specifico, ma dello strumento in generale, ma a causa di questa sfumatura non sono state scoperte diverse iniezioni nell'area riservata delle risorse.

XSS

Il scanner ha gestito molto bene il compito e ha trovato tutte le vulnerabilità preparate:

Wapiti — verifica delle vulnerabilità del sito con le proprie forze

LFI/RFI

Il scanner ha trovato tutte le vulnerabilità inserite:

Wapiti — verifica delle vulnerabilità del sito con le proprie forze

In generale, nonostante falsi positivi e vulnerabilità trascurate, Wapiti, come strumento gratuito, offre risultati di lavoro piuttosto soddisfacenti. In ogni caso, è giusto riconoscere che il scanner è potente, flessibile e multifunzionale, e soprattutto gratuito, quindi merita di essere utilizzato per aiutare gli amministratori e gli sviluppatori a ottenere informazioni di base sullo stato della sicurezza delle applicazioni web.

Rimanete sani e protetti!

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster