Wapiti — verifica del sito web per vulnerabilità fai-da-te

Wapiti — verifica del sito web per vulnerabilità fai-da-te
Nell'articolo precedente abbiamo chiarito il corretto completamento dei programmi che utilizzano il mediastreamer. abbiamo parlato di Nemesida WAF Free — uno strumento gratuito per proteggere siti web e API da attacchi hacker, e in questo abbiamo deciso di fare una recensione di uno scanner di vulnerabilità popolare Wapiti.

La scansione di un 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 (che non è più supportato da febbraio) sono le soluzioni più popolari disponibili nel segmento gratuito. Naturalmente, ci sono anche altre, ad esempio Wapiti, su cui ci concentreremo.

Wapiti lavora con i seguenti tipi di vulnerabilità:

  • rivelazione di file (locali e remoti, fopen, readfile);
  • iniezioni (PHP / JSP / ASP / iniezioni SQL e iniezioni XPath);
  • XSS (cross-site scripting) (riflessa e persistente);
  • rilevamento ed esecuzione di comandi (eval(), system(), passtru());
  • iniezioni CRLF (separazione delle risposte HTTP, fissazione della sessione);
  • XXE (inserimento di entità esterne XML);
  • SSRF (falsificazione della richiesta dal lato server);
  • utilizzo di file potenzialmente pericolosi noti (grazie al database di Nikto);
  • configurazioni deboli di .htaccess che possono essere aggirate;
  • presenza di file di backup che rivelano informazioni confidenziali (rivelazione del codice sorgente);
  • Shellshock;
  • redirect aperti;
  • metodi HTTP non standard che possono essere consentiti (PUT).

Funzionalità:

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

Funzionalità aggiuntive:

  • creazione di report sulle vulnerabilità in diversi formati (HTML, XML, JSON, TXT);
  • sospensione e ripresa della scansione o degli attacchi (meccanismo di sessione che utilizza database SQLite3);
  • evidenziazione nel terminale per segnalare 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:

  • scaricare il sorgente dal sito ufficiale sito e avviare lo script di installazione, installando prima Python3;
  • utilizzando il comando pip3 install wapiti3.

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

Utilizzo dello strumento

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

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

Il comando base per avviare lo scanner:

# wapiti -u <target> <options>

In caso contrario, c'è un aiuto piuttosto dettagliato con un'enorme quantità di opzioni di avvio, ad esempio:

—scope — ambito
Se insieme all'URL da scansire viene specificato il parametro scope, è possibile regolare l'ambito di scansione del sito, indicando sia una singola pagina che tutte le pagine che è possibile trovare sul sito.

-s e -x — parametri per aggiungere o rimuovere 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 sarà scansionato, ma non sarà attaccato. Utile, se ci sono alcuni parametri pericolosi che è meglio escludere durante la scansione.

—verify-ssl — attivazione o disattivazione del controllo del certificato.
Lo scanner Wapiti è modulare. Tuttavia, per eseguire moduli specifici, tra quelli che vengono automaticamente collegati durante il funzionamento dello scanner, è necessario utilizzare il tasto -m e elencare quelli necessari tramite una virgola. Se non si utilizza il tasto, saranno attivi per impostazione predefinita tutti i moduli. La forma più semplice sarà la seguente:

# 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 dell'obiettivo. Inoltre, è possibile filtrare il funzionamento dei moduli a seconda del metodo richiesto. Ad esempio -m “xss: get, blindsql: post, xxe: post”. In tal caso, il modulo xss sarà applicato alle richieste inviate tramite il metodo GET, mentre il modulo blibdsql sarà applicato alle richieste POST e così via. Inoltre, se un modulo incluso nell'elenco non viene utilizzato durante la scansione o richiede troppo tempo, premendo la combinazione Ctrl+C è possibile saltare l'uso del modulo attuale, selezionando l'opzione appropriata nel menu interattivo.

Wapiti supporta l'invio di richieste tramite un server proxy utilizzando la chiave -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 necessaria l'installazione di moduli aggiuntivi. Inoltre, è possibile inserire nella richiesta qualsiasi intestazione (incluso un User-Agent) e molto altro.

Per utilizzare l'autenticazione, è possibile utilizzare lo strumento wapiti-getcookie. Con esso, formiamo cookie, che Wapiti utilizzerà durante la scansione. La formazione cookie viene eseguita utilizzando 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: nome utente, password e altro:

Wapiti — verifica del sito web per vulnerabilità fai-da-te

Il risultato sarà 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 del sito web per vulnerabilità fai-da-te

Esaminando 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 e -o — formato e percorso per salvare il report;

-m — collegamento di tutti i moduli — non raccomandato, poiché influenzerà il tempo di test e le dimensioni del rapporto;

—color — evidenziare le vulnerabilità trovate a seconda della 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. Se si sceglie l'opzione folder sarà scansionato e attaccato ogni URL, a partire dalla base. L'URL di base deve terminare con una barra (senza il nome del file);

—flush-session — consente di eseguire una scansione ripetuta, ignorando i risultati precedenti;

-A — proprio User-Agent;

-p — indirizzo del server proxy, se necessario.

Un po' di informazioni sul rapporto

Il risultato della scansione è presentato sotto forma di un rapporto dettagliato su tutte le vulnerabilità trovate in formato di pagina HTML, in modo comprensibile e fruibile. Nel rapporto saranno indicate le categorie e il numero di vulnerabilità trovate, la loro descrizione, richieste, comandi per curl e consigli su come risolverle. Per facilitare la navigazione, nei titoli delle categorie verrà aggiunto un link che permetterà di passarci cliccando su di esso:

Wapiti — verifica del sito web per vulnerabilità fai-da-te

Un grande svantaggio del rapporto è l'assenza di una mappa dell'applicazione web, senza la quale non è possibile capire se tutti gli indirizzi e i parametri sono stati analizzati. C'è anche una probabilità di falsi positivi. Nel nostro caso, nel rapporto sono presenti "file di backup" e "file potenzialmente pericolosi". La loro quantità non corrisponde alla realtà, poiché tali file non erano presenti sul server:

Wapiti — verifica del sito web per vulnerabilità fai-da-te

È possibile che 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 in cui possiamo indirettamente capire la gravità della vulnerabilità trovata è applicare il parametro —color durante la scansione e allora le vulnerabilità trovate verranno colorate in vari colori:

Wapiti — verifica del sito web per vulnerabilità fai-da-te

Ma nel rapporto stesso questa colorazione non è prevista.

Vulnerabilità

SQLi

Il scanner ha parzialmente trovato SQLi. Nella ricerca di vulnerabilità SQL sulle pagine dove non è richiesta autenticazione, non ci sono problemi:

Wapiti — verifica del sito web per vulnerabilità fai-da-te

Non è riuscito a trovare vulnerabilità sulle pagine accessibili solo dopo autenticazione, nemmeno utilizzando le credenziali valide cookie, poiché è probabile che dopo un'autenticazione riuscita ci sarà "uscita dalla sessione" e cookie diventeranno non validi. Se la funzione di disautenticazione fosse stata eseguita come uno script separato responsabile per questa procedura, sarebbe stato possibile escluderlo completamente tramite il parametro -x, prevenendo così il suo attivarsi. In caso contrario, non sarà possibile escludere la sua elaborazione. Questo è un problema non di un modulo specifico, ma dello strumento in generale, ma a causa di questo problema non sono state scoperte diverse iniezioni nell'area chiusa della risorsa.

XSS

Il scanner ha svolto ottimamente il compito assegnato e ha trovato tutte le vulnerabilità preparate:

Wapiti — verifica del sito web per vulnerabilità fai-da-te

LFI/RFI

Lo scanner ha trovato tutte le vulnerabilità inserite:

Wapiti — verifica del sito web per vulnerabilità fai-da-te

In generale, nonostante i falsi positivi e le vulnerabilità trascurate, Wapiti, come strumento gratuito, mostra risultati piuttosto buoni. In ogni caso, va riconosciuto che lo scanner è abbastanza potente, flessibile e multifunzionale, e soprattutto è gratuito, quindi merita di essere utilizzato, aiutando gli amministratori e gli sviluppatori a ottenere informazioni di base sullo stato di sicurezza delle applicazioni web.

Rimanete in salute 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