Introduzione
WPScan è l'acronimo di WordPress Security Scanner, è un scanner di vulnerabilità gratuito scritto con il linguaggio di programmazione Ruby per aiutare i professionisti della sicurezza e i manutentori di blog a testare le vulnerabilità sui loro siti WordPress. Aiuta a scoprire eventuali vulnerabilità associate a temi WordPress, plugin o qualsiasi altra minaccia alla sicurezza ospitata su un sito WordPress.
Questa guida illustra come installare e utilizzare WPScan WordPress Vulnerability Scanner su Ubuntu 18.04.
Se il vostro intento è installare WPScan su di un server in remoto continuate a leggere, altrimenti se volete installare WPScan sul vostro computer locale saltate il primo paragrafo "Connessione al Server" e leggere il successivo.
Connessione al Server
Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:
ssh root@IP_DEL_SERVER
Successivamente sarà necessario inserire la password dell'utente root.
Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:
ssh nome_utente@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password del vostro utente.
La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Prerequisiti
Per seguire questo tutorial, avrai bisogno di:
- Un server Ubuntu 18.04 impostato seguendo la Guida alla configurazione del server iniziale per Ubuntu 18.04, incluso un utente non root con privilegi sudo e un firewall configurato con ufw.
Installare le dipendenze di WPScan
Prima di poter installare WordPress Security Scanner (WPScan), assicurarsi che siano installate le seguenti dipendenze e che il sistema sia aggiornato.
Aggiornare la lista di pacchetti disponibili:
sudo apt update
Aggiornare i pacchetti disponibili:
sudo apt upgrade -y
Installare le dipendenze necessarie per l'installazione di WPScan:
sudo apt install curl git libcurl4-openssl-dev make zlib1g-dev gawk g++ gcc libreadline6-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake libtool bison pkg-config ruby ruby-bundler ruby-dev -y
WPScan può essere installato dai repository RubyGem o da sorgente.
Installare WPScan con RubyGem
Per installare WPScan dai repository RubyGem, eseguire il comando seguente:
gem install wpscan
Per disinstallare WPScan eseguire questo comando:
gem uninstall wpscan
Installare WPScan da sorgente
Per installare WPScan dai sorgenti, devi accedere al repository Github, per scaricare WPScan:
git clone https://github.com/wpscanteam/wpscan
Entrare nella cartella creata dal con il comando precedente:
cd wpscan/
Installare WPScan da sorgente, ci vorranno diversi minuti. Da terminale digitare:
sudo bundle install && sudo rake install
Dovreste ricevere un messaggio di output simile al seguente:
...
Finished in 14 minutes 43 seconds (files took 23.56 seconds to load)
24314 examples, 0 failures, 48 pending
Coverage report generated for RSpec to /root/wpscan/coverage. 1819 / 2119 LOC (85.84%) covered.
wpscan 3.6.3 built to pkg/wpscan-3.6.3.gem.
wpscan (3.6.3) installed.
L'installazione è terminata, WPScan è pronto all'uso.
Aggiornare WPScan
È possibile aggiornare il database locale usando il seguente comando:
wpscan --update
L'aggiornamento dell'utility WPScan si può effettuare tramite il seguente comando se è stato installato con RubyGem:
gem update wpscan
Oppure utilizzando il gestore dei pacchetti:
sudo apt-get update && sudo apt-get upgrade
Esempi di scansione
Ecco alcuni esempi su come eseguire la scansione delle vulnerabilità del blog di WordPress. Assicurati di eseguire gli esempi seguenti sul tuo proprio blog. È illegale scansionare i siti di altre persone.
Il comando base per scansionare l'intero blog è il seguente:
wpscan --url wordpress.example.com
WPScan può eseguire la scansione dei protocolli http e https . Se non specificato, scansionerà http per impostazione predefinita.
Se si desidera salvare i risultati dell'output dello scanner in un file, utilizzare l'opzione -o nome_file.txt:
wpscan --url http://wordpress.example.com -o nome_file.txt
Esistono tre modalità di rilevamento in cui wpscan può essere eseguito su un sito WordPress: passive, aggressive, mixed(default).
- La modalità passive esegue un rilevamento non intrusivo, ovvero invia alcune richieste al server. Di solito esegue la scansione della home page per individuare eventuali vulnerabilità. È meno probabile che la modalità passiva venga rilevata dalle soluzioni IDS/IPS.
- La modalità aggressive invece esegue una scansione più invadente in quanto invia moltissime richieste al server. Prova tutti i plugin possibili anche se il plugin non ha vulnerabilità note ad esso collegate. Ciò può comportare un aumento del carico sul server di destinazione.
- La modalità mixed(default) utilizza una combinazione di aggressivo e passivo.
Per specificare la modalità di rilevamento:
wpscan --url wordpress.example.com -o test --detection-mode aggressive
Verificare la presenza di plugin vulnerabili
Per cercare plugin vulnerabili sul tuo blog WordPress, passa l'opzione -e/--enumerate [OPTS] al comando wpscan dove [OPTS]può essere; vp (vulnerable plugins), ap (all plugins), p (plugins). Ad esempio, per cercare tutti i plugin che hanno vulnerabilità ad esso collegate,
wpscan --url wordpress.example.com -e vp
Verificare la presenza di temi vulnerabili
Proprio come abbiamo usato l'opzione -e/--enumerate [OPTS] per verificare la presenza di plugin vulnerabili, lo stesso può essere fatto quando si controllano i temi vulnerabili; vt (Vulnerable themes), at (All themes), t (Themes). Ad esempio, per cercare temi con vulnerabilità note;
wpscan --url wordpress.example.com -e vt
Visualizzare gli utenti di Wordpress
Per scoprire gli utenti che possono accedere al sito WordPress, dovresti passare l'opzione -e/--enumerate u dove u sostanzialmente indica gli ID utente.
wpscan --url wordpress.example.com -e u
Test forza della password / Bruteforce Attack contro un utente
Dopo aver elencato i nomi utente, puoi provare a eseguire un attacco di Brute force come mostrato di seguito. Questo processo potrebbe essere più lento a seconda del numero di password specificato nel file delle password (-P, --passwords FILE-PATH) (il file con le password non è presente nel progetto WPScan) e del numero di thread (-t, --max-threads VALUE) che stai utilizzando:
wpscan --url wordpress.example.com -P password-file.txt -U tuo_nome_utente-t 50
Per verificare la validità della password per più utenti, utilizzare lo stesso comando sopra in questo momento senza il nome utente specificato.
wpscan --url wordpress.example.com -P password-file.txt -t 50
Scansione di Wordpress in modalità non rilevabile
Eseguire wpscan in una modalità invisibile significa (--random-user-agent --detection-mode passive --plugins-version-detection passive), specificare l'opzione --stealthy.
wpscan --url wordpress.example.com --stealthy
Conclusione
In questo tutorial hai installato e configurato WPScan. Per ulteriori informazioni sull'utilizzo di WPScan:
wpscan -h