Cercare le vulnerabilità su WordPress utilizzando WPScan
da Massimo Della Rovere · pubblicato il 4 giugno, 2014 · modificato il 14 luglio, 2016

Abbiamo già trattato la sicurezza in ambiente wordpress su diversi articoli in questo blog, però abbiamo sempre presentato argomenti che riguardavano le azioni da eseguire per rendere meno vulnerabile la nostra installazione di wordpress. Questa volta invece parleremo di uno strumento (WPScan) che ci permetterà di testare il nostro sito e controllare la presenza di eventuali vulnerabilità che vanno sistemate.

WPScan contiene un database e degli algoritmi particolari che permettono di eseguire delle azioni di enumerazione, controlli di vulnerabilità conosciute, attacchi su password a dizionario, etc, etc. Possiamo lanciare l’analisi di questo strumento verso un nostro sito di test o anche di produzione per verificare tutte le informazioni che un programma di scansione può ottenere e quindi reagire di conseguenza.

Installazione

Per l’operazione d’installazione potete visitare il sito ufficiale ed eseguire le istruzioni riportate, come potrete vedere il software al momento non gira in ambiente windows, quindi dovete avere a disposizione un’ambiente linux. In ogni caso è anche l’ambiente consigliato per eseguire wordpress e che quindi sicuramente conoscerete. Una volta terminata l’installazione eseguite questo comando per testare il funzionamento.

ruby wpscan.rb --help

Ricordatevi che per eseguire il comando dovete sempre essere dentro la directory wpscan presente nel folder in cui avete eseguito l’installazione e il download.

Opzioni di connessione

Lo strumento di ricerca vulnerabilità ha diversi parametri che possono essere specificati a seconda delle informazioni che vogliamo cercare, però oltre a questo è possibile anche decidere alcuni particolari di networking con cui deve essere eseguita la scansione. Vi riporto qui di seguito quelli che ritengo i più importanti da conoscere:

  • –url è l’indirizzo completo URL del sito wordpress che vogliamo controllare.
  • –force esegue i controlli prestabiliti anche se il sito risulta offline.
  • –follow-redirection se il sito esegue dei redirect questi vengono accettati.
  • –proxy <[protocol://]host:port> indicare un proxy per nascondere la connessione.
  • –proxy-auth specificare le credenziali di accesso proxy se richieste.
  • –threads specificare il numero dei threads da avviare in ambiente multi-threads.
  • –verbose lanciare il comando con un output dettagliato.

Ad esempio se vogliamo eseguire una prima scansione di prova utilizzando i parametri di default ed eseguire un controllo non intrusivo possiamo eseguire il comando:

ruby wpscan.rb --url www.example.com --follow-redirection

Funzioni di enumerazione

Con il termine enumerazione si intende la raccolta di informazioni senza eseguire nessun tipo di azione, serve per collezionare informazioni importanti che posso essere utilizzate successivamente in un’eventuale attacco verso il sito interessato. Quindi conoscere le informazioni che è possibile estrapolare dal nostro sito significa anche sapere quali sono i punti deboli da difendere e preparare le dovute azioni.

Con WPScan possiamo enumerare i profili utenti registrati su wordpress, i plugin e i temi che risultano installati, con la possibilità di indicare anche se vogliamo controllare tutto il database disponibile o solo i componenti che risultano vulnerabili. Ovviamente se eseguite un test sul vostro sito scegliete opzioni e orari adatti a questo utilizzo. Vi riporto qui di seguito le opzioni per eseguire un test di enumerazione:

  • –enumerate u ricerca gli username di wordpress da 1 a 10.
  • –enumerate u[10,20] ricerca gli username di wordpress da 10 a 20.
  • –enumerate -p ricerca i plugin installati nel sito di wordpress da analisi pagina.
  • –enumerate -vp ricerca i plugin installati in cui risulta una vulnerabilità.
  • –enumerate -ap ricerca i plugin installati utilizzando il database completo.
  • –enumerate -t ricerca i temi installati nel sito di wordpress da analisi pagina.
  • –enumerate -vt ricerca i temi installati in cui risulta una vulnerabilità.
  • –enumerate -at ricerca i temi installati utilizzando il database completo.

Ad esempio se vogliamo conoscere gli utenti registrati in una nostra installazione su localhost potremmo eseguire il seguente comando e vedere il risultato:

ruby wpscan.rb --url http://localhost/wordpress --enumerate u

[+] Enumerating usernames ...
[+] Identified the following 3 user/s:
+----+---------+---------------------+
| Id | Login   | Name                |
+----+---------+---------------------+
| 1  | massimo | My Plugin - massimo |
| 2  | utente  | My Plugin - utente  |
| 3  | autore  | My Plugin - autore  |
+----+---------+---------------------+

Con lo stesso comando potremmo ottenere un’elenco di plugin installati e vedere se ne troviamo qualcuno con delle vulnerabilità installate, adesso per comodità lancio il comando in localhost con l’opzione -p e vediamo insieme il risultato:

ruby wpscan.rb --url http://localhost/wordpress --enumerate p

[+] We found 10 plugins:

[+] Name: debug-bar - v0.8
[+] Name: debug-bar-console - v0.3
[+] Name: debug-bar-cron - v0.1.3
[+] Name: debug-bar-extender
[+] Name: rewrite-rules-inspector - v1.2.1
[+] Name: sz-google - v1.7.6
[+] Name: updraftplus - v1.9.5

Come potete vedere è possibile con estrema facilità ottenere delle informazioni molto importanti per iniziare a costruire una strategia di attacco. Questo è il motivo per cui insisto sempre che l’aspetto sicurezza non può essere mai tralasciato in un’installazione wordpress di qualsiasi tipo, specialmente su un nuovo progetto da consegnare. Poi sappiamo tutti che il sistema sicuro al 100% non esiste, però incominciamo almeno ad evitare le situazioni più ovvie che ci risolvono il 90% dei problemi esistenti.

Violazione della password

Se con le operazioni precedenti possiamo scoprire in qualche modo gli username allora mancano solo le password per avere un accesso completo. WPScan permette di eseguire una scansione tramite dizionario utilizzando gli utenti trovati e un database di password già preconfezionato con tutte le password più utilizzate e con un dizionario.

ruby wpscan.rb --url http://localhost/wordpress
  --wordlist darkcode.lst --username massimo

[+] Starting the password brute forcer
[SUCCESS] Login : massimo Password : massimo

+----+---------+------+----------+
| Id | Login   | Name | Password |
+----+---------+------+----------+
|    | massimo |      | massimo  |
+----+---------+------+----------+

In questo caso ho creato io il file “darkcode.lst” e ho inserito dentro alcune password sbagliate ed una giusta, come potete vedere il programma WPScan le prova tutte fino a quando non incontra quella giusta. In internet esistono diversi dizionari di password pronti per essere provati, da quelli con poche parole a quelli di diversi GB.

Dizionario delle password

Se volete fare qualche prova con un dizionario già pronto vi consiglio il file delle 500 password più utilizzate e un file chiamato rockyou con130MB circa di password pronte per una scansione con WPScan, per il download andate su skullsecurity.org.

ruby wpscan.rb --url http://localhost/wordpress
  --wordlist darkcode.lst --username massimo

[+] Starting the password brute forcer
[SUCCESS] Login : massimo Password : frontiera

+----+---------+------+-----------+
| Id | Login   | Name | Password  |
+----+---------+------+-----------+
|    | massimo |      | frontiera |
+----+---------+------+-----------+

In questo esempio ho cambiato la mia password in “frontiera” e ho sostituito il file che avevo creato precedentemente con il nuovo file di password da 130MB che ho scaricato dal sito che vi ho indicato. La password corretta è stata trovato dopo circa 3 ore.

Rimedi sulla sicurezza

Sugli aspetti che riguardano la sicurezza esistono diverse soluzioni che ci permettono di difenderci dalle tecniche di attacco più conosciute. Vi consiglio di leggere alcuni articoli che sono stati scritti su questo blog e trovare altri aspetti più specifici in internet dove è possibile documentarsi su tantissimi siti web che parlano la sicurezza.

Rimedi sulla sicurezza

Un’altra risorsa interessante che vi consiglio sulla sicurezza di wordpress sono i video e gli hangout in diretta fatti insieme alla community +WP Italyplus che potete trovare sul social network di google plus, se utilizzate molto wordpress dovete venire a trovarci …

Insieme alla community di WP Italyplus continueremo a parlare di sicurezza, infatti è sempre uno degli argomenti più richiesti, quindi se non volete perdervi i prossimi eventi seguiteci direttamente in community o visitate il nostro canale youtube.

3 Commenti

  1. Salve, grazie per l'articolo interessante. Volevo chiedere un'opinione su quale potrebbe essere il modo migliore di gestire aggiornamento di plugin per lavori già consegnati ai clienti... Mi spiego meglio: come è ben spiegato in questo articolo, lasciare un plugin non aggiornato potrebbe portare a gravissimi problemi di compromissione della sicurezza. D'altro canto però, aggiornarli potrebbe provocare una "rottura" del sito, e conseguenti ore e ore di lavoro per ripristinare la situazione iniziale... Quindi mi chiedo, voi come vi orientate, una volta consegnato il lavoro?

    Grazie!

  2. Ciao questioner, la cosa migliore e fare un contratto di assistenza che prevede una manutenzione almeno semestrale di queste cose. In ogni caso scegliete sempre plugin ben supportati e che siano sempre veloci ad aggiornare qualche malfunzionamento.

  3. Aggiungerei alle tante risorse presenti nell'articolo anche un link all'articolo di Maurizio Ceravolo che tramite delle semplici ricerche eseguite con google si possono scoprire molte vulnerabilità gravi come quelle di WPScan.

    ==> Usa google per scoprire se ti hanno hackerato il sito

condividi