Wapiti: controlla autonomamente le vulnerabilità di un sito

Wapiti: controlla autonomamente le vulnerabilità di un sito
Nel passato Articolo abbiamo parlato di Nemesida WAF gratuito - uno strumento gratuito per proteggere siti Web e API dagli attacchi degli hacker, e in questo abbiamo deciso di recensire un popolare scanner di vulnerabilità Wapiti.

La scansione di un sito Web per individuare eventuali vulnerabilità è una misura necessaria che, insieme all'analisi del codice sorgente, consente di valutare il livello di sicurezza contro le minacce di compromissione. Puoi scansionare una risorsa web utilizzando strumenti specializzati.

Nikto, W3af (scritto in Python 2.7, che non è più supportato) o Arachni (non più supportato da febbraio) sono le soluzioni più popolari presentate nel segmento gratuito. Naturalmente ce ne sono altri, ad esempio Wapiti, su cui abbiamo deciso di concentrarci.

Wapiti funziona con i seguenti tipi di vulnerabilità:

  • espansione di file (locale e remoto, fopen, readfile);
  • iniezioni (PHP/JSP/ASP/SQL injection e XPath injection);
  • XSS (Cross Site Scripting) (riflessivo e persistente);
  • rilevamento ed esecuzione di comandi (eval(), system(), passtru());
  • Iniezioni CRLF (suddivisione della risposta HTTP, fissazione della sessione);
  • Incorporamento XXE (entità esterna XML);
  • SSRF (falsificazione delle richieste lato server);
  • utilizzo di file noti potenzialmente pericolosi (grazie al database Nikto);
  • configurazioni .htaccess deboli che possono essere aggirate;
  • la presenza di file di backup che rivelano informazioni riservate (divulgazione del codice sorgente);
  • Shock di conchiglia;
  • reindirizzamenti aperti;
  • metodi HTTP non standard che possono essere risolti (PUT).

Возможности:

  • Supporto proxy HTTP, HTTPS e SOCKS5;
  • autenticazione utilizzando diversi metodi: Basic, Digest, Kerberos o NTLM;
  • la possibilità di limitare l'area di scansione (dominio, cartella, pagina, URL);
  • rimozione automatica di uno dei parametri nell'URL;
  • molteplici precauzioni contro cicli di scansione infiniti (esempio: ifor, limitazione dei valori per un parametro);
  • la possibilità di impostare una priorità per l'esame degli URL (anche se non si trovano nell'area di scansione);
  • possibilità di escludere alcuni URL dalla scansione e dagli attacchi (ad esempio: logout URL);
  • importare i cookie (acquisirli utilizzando lo strumento wapiti-getcookie);
  • possibilità di attivare/disattivare la verifica del certificato SSL;
  • la possibilità di estrarre URL da JavaScript (un interprete JS molto semplice);
  • interazione con HTML5;
  • diverse opzioni per la gestione del comportamento e delle restrizioni del crawler;
  • impostare il tempo massimo per il processo di scansione;
  • aggiungendo alcune intestazioni HTTP personalizzate o impostando uno User-Agent personalizzato.

Funzionalità aggiuntive:

  • creazione di report sulle vulnerabilità in vari formati (HTML, XML, JSON, TXT);
  • sospendere e riprendere una scansione o un attacco (meccanismo di sessione che utilizza database SQLite3);
  • retroilluminazione nel terminale per evidenziare le vulnerabilità;
  • diversi livelli di registrazione;
  • Un modo semplice e veloce per attivare/disattivare i moduli di attacco.

Installazione

La versione attuale di Wapiti può essere installata in 2 modi:

  • scarica il sorgente dal sito ufficiale Luogo ed eseguire lo script di installazione, avendo precedentemente installato Python3;
  • utilizzando il comando pip3 install wapiti3.

Successivamente, Wapiti sarà pronto per partire.

Lavorare con lo strumento

Per dimostrare il lavoro di Wapiti, utilizzeremo uno stand appositamente preparato sites.vulns.pentestit.ru (risorsa interna), contenente varie vulnerabilità (Injection, XSS, LFI/RFI) e altre carenze delle applicazioni web.

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

Comando di base per avviare lo scanner:

# wapiti -u <target> <options>

Allo stesso tempo, c'è un aiuto abbastanza dettagliato con un numero enorme di opzioni di avvio, ad esempio:

--scopo - area di applicazione
Se specifichi il parametro di ambito insieme all'URL di scansione, puoi modificare l'area di scansione del sito specificando sia una singola pagina che tutte le pagine che possono essere trovate sul sito.

-s и -x - opzioni per aggiungere o rimuovere URL specifici. Queste opzioni sono utili quando devi aggiungere o rimuovere un URL specifico durante il processo di scansione.

--saltare — il parametro specificato con questa chiave verrà scansionato, ma non verrà attaccato. Utile se sono presenti parametri pericolosi che è meglio escludere durante la scansione.

--verifica-ssl — abilitare o disabilitare la verifica del certificato.
Lo scanner Wapiti è modulare. Tuttavia, per avviare moduli specifici, compresi quelli che vengono connessi automaticamente durante l'esecuzione dello scanner, è necessario utilizzare l'opzione -m ed elencare quelli necessari, separati da virgole. Se la chiave non viene utilizzata, tutti i moduli funzioneranno per impostazione predefinita. Nella versione più semplice sarà simile a questo:

# 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 durante la scansione del target. Inoltre, è possibile filtrare il funzionamento dei moduli in base al metodo desiderato. Per esempio -m “xss: get, blindsql: post, xxe: post”. In questo caso, il modulo xss si applicherà alle richieste inviate utilizzando il metodo GET e il modulo blibdsql - alle richieste POST, ecc. A proposito, se qualche modulo incluso nell'elenco non è stato necessario durante la scansione o impiega molto tempo, premendo la combinazione Ctrl+C puoi saltare l'utilizzo del modulo corrente selezionando la voce corrispondente nel menu interattivo.

Wapiti supporta il passaggio delle richieste tramite un proxy utilizzando una chiave -p e autenticazione sul sito di destinazione tramite il parametro -a. Puoi anche specificare il tipo di autenticazione: Di base, digerire, Kerberos и NTLM. Gli ultimi due potrebbero richiedere l'installazione di moduli aggiuntivi. Inoltre, è possibile inserire qualsiasi intestazione nelle richieste (incluso arbitrary User-Agent) e altro ancora.

Per utilizzare l'autenticazione è possibile utilizzare lo strumento wapiti-getcookie. Con il suo aiuto ci formiamo biscotto, che Wapiti utilizzerà durante la scansione. Formazione biscotto fatto con il comando:

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

Mentre lavoriamo in modo interattivo, rispondiamo alle domande e indichiamo le informazioni necessarie come login, password, ecc.:

Wapiti: controlla autonomamente le vulnerabilità di un sito

L'output è 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: controlla autonomamente le vulnerabilità di un sito

Considerando le funzionalità principali dello scanner, la richiesta finale per testare l'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 gli altri parametri:

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

-m — non è consigliabile collegare tutti i moduli, perché influenzerà il tempo di test e la dimensione del report;

--colore — evidenziare le vulnerabilità riscontrate in base alla loro criticità secondo Wapiti stessa;

-c - utilizzando un file con biscotto, generato utilizzando wapiti-getcookie;

--scopo - scegliere un bersaglio per l'attacco. Selezione di un'opzione cartella Ogni URL verrà scansionato e attaccato, a partire da quello di base. L'URL di base deve contenere una barra (nessun nome file);

--flush-session — consente scansioni ripetute, in cui i risultati precedenti non verranno presi in considerazione;

-A - Proprio User-Agent;

-p — indirizzo del server proxy, se necessario.

Un po' del rapporto

Il risultato della scansione viene presentato sotto forma di un rapporto dettagliato su tutte le vulnerabilità rilevate in formato pagina HTML, in una forma chiara e di facile lettura. Il rapporto indicherà le categorie e il numero di vulnerabilità rilevate, le loro descrizioni, richieste, comandi arricciare e consigli su come chiuderli. Per facilitare la navigazione, ai nomi delle categorie verrà aggiunto un collegamento, cliccando sul quale potrai accedervi:

Wapiti: controlla autonomamente le vulnerabilità di un sito

Uno svantaggio significativo del rapporto è l'assenza di una mappa dell'applicazione web vera e propria, senza la quale non sarebbe chiaro se tutti gli indirizzi e i parametri siano stati analizzati. Esiste anche la possibilità di falsi positivi. Nel nostro caso, il rapporto include “file di backup” e “file potenzialmente pericolosi”. Il loro numero non corrisponde alla realtà, poiché sul server non erano presenti file di questo tipo:

Wapiti: controlla autonomamente le vulnerabilità di un sito

Forse i moduli che funzionano in modo errato verranno corretti nel tempo. Un altro svantaggio del report è la mancata colorazione delle vulnerabilità rilevate (a seconda della loro criticità), o almeno la loro suddivisione in categorie. L'unico modo per comprendere indirettamente la criticità della vulnerabilità rilevata è utilizzare il parametro --colore durante la scansione, quindi le vulnerabilità trovate verranno colorate in diversi colori:

Wapiti: controlla autonomamente le vulnerabilità di un sito

Ma il rapporto in sé non fornisce tale colorazione.

Vulnerabilità

SQLi

Lo scanner ha parzialmente gestito la ricerca SQLi. Durante la ricerca delle vulnerabilità SQL su pagine in cui non è richiesta l'autenticazione, non si verificano problemi:

Wapiti: controlla autonomamente le vulnerabilità di un sito

Non è stato possibile individuare una vulnerabilità sulle pagine accessibili solo dopo l'autenticazione, anche utilizzando valid biscotto, poiché molto probabilmente dopo aver effettuato con successo l'autenticazione, la loro sessione verrà “disconnessa” e biscotto diventeranno non validi. Se la funzione di rimozione dell'autorizzazione fosse implementata come script separato responsabile dell'elaborazione di questa procedura, sarebbe possibile escluderla completamente tramite il parametro -x e quindi impedirne l'attivazione. In caso contrario non sarà possibile escluderne il trattamento. Questo non è un problema con un modulo specifico, ma con lo strumento nel suo insieme, ma a causa di questa sfumatura non è stato possibile rilevare diverse iniezioni in un'area di risorse chiusa.

XSS

Lo scanner ha affrontato perfettamente il compito assegnato e ha trovato tutte le vulnerabilità predisposte:

Wapiti: controlla autonomamente le vulnerabilità di un sito

LFI/RFI

Lo scanner ha rilevato tutte le vulnerabilità sottostanti:

Wapiti: controlla autonomamente le vulnerabilità di un sito

In generale, nonostante i falsi positivi e le vulnerabilità mancanti, Wapiti, come strumento gratuito, mostra risultati piuttosto buoni in termini di prestazioni. In ogni caso, vale la pena riconoscere che lo scanner è abbastanza potente, flessibile e multifunzionale e, soprattutto, è gratuito, quindi ha il diritto di essere utilizzato per aiutare amministratori e sviluppatori a ottenere informazioni di base sullo stato di sicurezza di un sito web. applicazione.

Rimani sano e protetto!

Fonte: habr.com

Aggiungi un commento