Wapiti - Scanner di vulnerabilità web
.. image:: https://img.shields.io/pypi/v/wapiti3?label=PyPI&logo=PyPI&logoColor=white&color=blue
:alt: PyPI version
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://img.shields.io/pypi/pyversions/wapiti3
:alt: Supported Python versions
:target: https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md
.. image:: https://img.shields.io/github/license/wapiti-scanner/wapiti
:alt: License: GPL-2.0
:target: https://github.com/wapiti-scanner/wapiti/blob/master/LICENSE
.. image:: https://img.shields.io/pypi/dd/wapiti3
:alt: Downloads per day on PyPi
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://codecov.io/gh/wapiti-scanner/wapiti/branch/master/graph/badge.svg?token=GFEIORAFB8
:target: https://codecov.io/gh/wapiti-scanner/wapiti
Wapiti è uno scanner di vulnerabilità web scritto in Python.
http://wapiti-scanner.github.io/
Requisiti
Per funzionare correttamente, Wapiti richiede Python 3.12, 3.13 o 3.14.
Tutte le dipendenze dei moduli Python verranno installate automaticamente se si utilizza lo script setup.py o pip install wapiti3
Consulta INSTALL.md <https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md>__ per maggiori dettagli sull'installazione.
È possibile eseguire Wapiti su Windows tramite l'uso di WSL <https://learn.microsoft.com/en-us/training/modules/get-started-with-windows-subsystem-for-linux/>__.
Come funziona
Wapiti funziona come uno scanner di vulnerabilità "black-box", il che significa che non studia il codice sorgente delle applicazioni web ma funziona come un fuzzer, scansionando le pagine dell'applicazione web distribuita, estraendo link e moduli e attaccando gli script, inviando payload e cercando messaggi di errore, stringhe speciali o comportamenti anomali.
Funzionalità generali
- Genera report di vulnerabilità in vari formati (HTML, XML, JSON, TXT, CSV, Markdown).
- Può sospendere e riprendere una scansione o un attacco (meccanismo di sessione che utilizza database sqlite3).
- Può mostrare colori nel terminale per evidenziare le vulnerabilità.
- Diversi livelli di verbosità.
- Modo rapido e semplice per attivare/disattivare i moduli di attacco.
- Aggiungere un payload può essere semplice quanto aggiungere una riga a un file di testo.
- Numero configurabile di attività concorrenti per eseguire richieste HTTP.
Funzionalità di navigazione
- Supporta proxy HTTP, HTTPS e SOCKS5.
- Autenticazione HTTP sul target (Basic, Digest, NTLM)
- Autenticazione compilando moduli di login.
- Possibilità di limitare l'ambito della scansione (dominio, cartella, pagina, url).
- Rimozione automatica di uno o più parametri negli URL.
- Molteplici salvaguardie contro i loop infiniti della scansione (ad esempio, limite di valori per un parametro).
- Possibilità di impostare i primi URL da esplorare (anche se fuori ambito).
- Può escludere alcuni URL dalla scansione e dagli attacchi (ad es.: URL di logout).
- Importa i cookie dal tuo browser Chrome o Firefox oppure utilizzando lo strumento
wapiti-getcookie.
- Può attivare / disattivare la verifica dei certificati SSL.
- Tenta di estrarre URL dal javascript (interprete JS molto basilare).
- Compatibile con HTML5 (comprende i tag HTML recenti).
- Diverse opzioni per controllare il comportamento e i limiti del crawler.
- Salta alcuni nomi di parametri durante l'attacco.
- Impostazione di un tempo massimo per il processo di scansione.
- Aggiunta di alcuni header HTTP personalizzati o impostazione di un User-Agent personalizzato.
- Utilizzo di un browser Firefox headless per il crawling
- Caricamento del proprio codice python per casi di autenticazione complicati (vedi opzione
--form-script)
- Aggiunta di URL o PATH personalizzati per aggiornare il database Wappalyzer
- Scansione di API REST fornite da un file OpenAPI (swagger)
Attacchi supportati
- Iniezioni SQL (basate su errori, booleane, basate sul tempo) e iniezioni XPath
- Iniezioni LDAP (basate su errori e booleane)
- Cross Site Scripting (XSS) riflesso e permanente
- Rilevamento di divulgazione di file (inclusione locale e remota, require, fopen, readfile...)
- Rilevamento di esecuzione di comandi (eval(), system(), passtru()...)
- Iniezione XXE (Xml eXternal Entity)
- Iniezione CRLF
- Ricerca di file potenzialmente pericolosi sul server (grazie al database Nikto)
- Bypass di configurazioni htaccess deboli
- Ricerca di copie (backup) degli script sul server
- Shellshock
- Enumerazione di cartelle e file (simile a DirBuster)
- Server Side Request Forgery (tramite l'utilizzo di un sito Wapiti esterno)
- Open Redirect
- Rilevamento di metodi HTTP non comuni (come PUT)
- Valutatore CSP di base
- Brute Force sul modulo di login (utilizzando un dizionario)
- Verifica degli header di sicurezza HTTP
- Verifica dei flag di sicurezza dei cookie (flag secure e httponly)
- Rilevamento di base di Cross Site Request Forgery (CSRF)
- Fingerprinting delle applicazioni web tramite il database Wappalyzer, fornisce informazioni sulle CVE correlate
- Enumerazione dei moduli CMS per Wordpress, Drupal, Joomla, Magento, SPIP, Typo3, ecc.
- Rilevamento di subdomain takeover
- Rilevamento di Log4Shell (CVE-2021-44228)
- Rilevamento di Spring4Shell (CVE-2022-22965)
- Verifica dei reindirizzamenti https
- Verifica delle vulnerabilità di upload di file
- Rilevamento di dispositivi di rete
- Inietta payload anche nel corpo JSON
Wapiti supporta sia i metodi HTTP GET che POST per gli attacchi.
Supporta anche multipart e può iniettare payload nei nomi dei file (upload).
Mostra un avviso quando viene trovata un'anomalia (ad esempio errori 500 e timeout)
Distingue tra vulnerabilità XSS permanenti e riflesse.
Nomi dei moduli
Gli attacchi sopra menzionati sono collegati ai seguenti nomi di moduli:
- backup (Cerca copie degli script e archivi sul server web)
- brute_login_form (Brute Force del modulo di login utilizzando un dizionario)
- buster (Modulo simile a DirBuster)
- cms (Scansione per rilevare CMS e le loro versioni)
- cookieflags (Verifica i flag Secure e HttpOnly)
- crlf (Iniezione CR-LF negli header HTTP)
- csp (Rileva l'assenza di CSP o una configurazione CSP debole)
- csrf (Rileva moduli non protetti contro CSRF o che utilizzano token anti-CSRF deboli)
- exec (Esecuzione di codice o iniezione di comandi)
- file (Path traversal, inclusione di file, ecc.)
- htaccess (Restrizioni htaccess configurate in modo errato)
- htp (Identifica le tecnologie web utilizzando il database HashThePlanet)
- http_headers (Verifica gli header di sicurezza HTTP)
- https_redirect (Verifica i reindirizzamenti https)
- ldap (Rilevamento di iniezioni LDAP basate su errori e booleane)
- log4shell (Rileva siti web vulnerabili a CVE-2021-44228)
- methods (Cerca metodi HTTP non comuni disponibili come PUT)
- network_device (Cerca file comuni per rilevare dispositivi di rete)
- nikto (Cerca vulnerabilità note testando l'esistenza degli URL e verificando le risposte)
- permanentxss (Riscansiona l'intero target dopo l'esecuzione del modulo xss cercando payload precedentemente contaminati)
- printer (Rileva stampanti di rete, recupera informazioni su modello e firmware)
- redirect (Open Redirect)
- shellshock (Testa l'attacco Shellshock, vedi
Wikipedia <https://en.wikipedia.org/wiki/Shellshock_%28software_bug%29>__)
- spring4shell (Rileva siti web vulnerabili a CVE-2020-5398)
- sql (Rilevamento di iniezioni SQL basate su errori e booleane)
- ssl (Valuta la sicurezza della configurazione dei certificati SSL/TLS, richiede
sslscan <https://github.com/rbsec/sslscan>__)
- ssrf (Server Side Request Forgery)
- takeover (Subdomain takeover)
- timesql (Vulnerabilità di iniezione SQL rilevate con metodologia basata sul tempo)
- upload (Vulnerabilità di upload di file)
- wapp (Non è un modulo di attacco, recupera le tecnologie web con versioni e categorie in uso sul target, trova le CVE corrispondenti)
I nomi dei moduli possono essere forniti come elenco separato da virgole utilizzando l'opzione "-m" o "--module".
Come ottenere i migliori risultati
Per trovare più vulnerabilità (poiché alcuni attacchi si basano sugli errori), puoi modificare le configurazioni del tuo server web.
Ad esempio, puoi impostare i seguenti valori nella tua configurazione PHP:
.. code-block::
safe_mode = Off
display_errors = On (recommended)
magic_quotes_gpc = Off
allow_url_fopen = On
mysql.trace_mode = On
Dove ottenere aiuto
Nel prompt, digita semplicemente il seguente comando per ottenere l'utilizzo di base:
Puoi anche dare un'occhiata alla pagina man (wapiti.1 o wapiti.1.html) per maggiori dettagli su ciascuna opzione.
Abbiamo anche un wiki ufficiale più esaustivo: https://github.com/wapiti-scanner/wapiti/wiki
Se hai un'altra domanda, controlla prima le FAQ <https://github.com/wapiti-scanner/wapiti/blob/master/doc/FAQ.md>__
Se trovi un bug, apri una segnalazione: https://github.com/wapiti-scanner/wapiti/issues
Come aiutare il progetto Wapiti
Puoi:
- Sostieni il progetto facendo una donazione ( http://sf.net/donate/index.php?group_id=168625 )
- Crea o migliora i moduli di attacco
- Crea o migliora i generatori di report e i modelli
- Invia bugfix, patch...
- Scrivi alcune GUI
- Crea uno strumento per convertire file PCAP in file di sessione sqlite3 di Wapiti
- Parla di Wapiti in giro
Licenza
Wapiti è rilasciato sotto la GNU General Public License versione 2 (GPL).
Il codice sorgente è disponibile su Github <https://github.com/wapiti-scanner/wapiti>__.
Creato da Nicolas SURRIBAS.
Cyberwatch https://cyberwatch.com/
Security For Everyone https://securityforeveryone.com/
IP-Nina https://ip-ninja.com/
Disclaimer
Wapiti è un software di cybersicurezza. Esegue valutazioni di sicurezza su un target fornito, il che può causare malfunzionamenti e crash sul target, oltre a una potenziale perdita di dati.
L'utilizzo di Wapiti per attaccare un target senza il consenso preventivo del suo proprietario è illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali applicabili.
Gli sviluppatori e le persone coinvolte nel progetto Wapiti non si assumono alcuna responsabilità e non sono responsabili per qualsiasi uso improprio o danno causato da questo programma.