Mente Digitale

WordPress e sicurezza – Diario di viaggio di un Cybernauta

programming

Ricordo ancora la volta che installai il mio primo blog WordPress, mi sentivo come il gabbiano Jonathan Livingston che prova in continuazione a migliorare il proprio volo.



[Otto anni fa]

“Ok ci siamo quasi:

– hosting… pronto

– password e utente ftp… nel file sul desktop,

– utente e password del DB… anche quelle nello stesso file,

Partiamo…

accedo tramite Filezilla, carico i files sul server…

la finestra di dialogo “sbrodola” tutti i files che vengono caricati ad una velocità pazzesca (sono emozionato)… ecco finito!

Ora modifico il file wp-config con i parametri del DB e…

accedo al browser, digito con le mani quasi tremanti il dominio che ho acquistato… e

mi si presenta la pagina di installazione… GRANDEEE!

Batto le ciglia quasi incredulo, sono al buio è notte e lo schermo del notebook proietta la luce sul mio volto, è l’unica fonte di luminosità nella stanza, è andato tutto liscio.

Nessun intoppo, sento come la sensazione del vento sotto le ali che mi porta sempre più in alto, ORA sono parte del web, ma le ali non sono fatte di piume di gabbiamo, sono fatte di bit, vedo i pacchetti dei ping viaggiare al mio fianco, i pacchetti tcp e udp che “giocano” a ricorrersi tra i vari nodi di calcolo…

GUARDA un torrent e tutto quel traffico laggiù cos’è… ah è PornHub e non ci sono neanche i buttadentro!”

[Rumore di disco in vinile che viene fermato]

Beh un tantino romanzato ma quando decidi di aprire un blog sai che ci sputerai un poco di sangue, dedicherai delle notti a scrivere gli articoli più disparati, farai infinite ricerche e un buon 50% delle idee non diventeranno mai articoli, oltre al fatto che non ci guadagnerai mai nulla… un tocco di licenza poetica (leggi pazzia) ci sta.

Torniamo a noi, in quei giorni di emozioni contrastanti tra la felicità di avere un blog e l’ansia da prestazione per far crescere visite ed utenti unici, assolutamente non pensavo ad un aspetto che a breve sarebbe stato portato alla mia attenzione, il sito era nuovo fiammante, ma… era anche sicuro?

Come dicevo prima non pensavo minimamente a questo problema, avevo provveduto ad iscrivermi sulle principali piattaforme di analisi, tool per webmaster, analisi SEO e chi più ne ha più ne metta, ho ancora una copia di quel mattone di SEO Power sul comodino a ricordo dello “sbattone”.

Avevo ottimizzato tutto, aggiornato l’aggiornabile e poi modificato il tema grafico a mio piacimento, apportando piccole ma sostanziali modifiche, (Google Webmaster Tools, ad oggi Google Search Console, mi aveva dato anche una pacca alla Cannavacciuolo sulla spalla, finito il lavoro), non pensavo ad altro se non far crescere il traffico verso il sito e magari beccarmi da subito qualche bel thread di commenti interessati alla fine dei miei articoli.

Poi un giorno arrivo in ufficio, il CEO mi presenta un ragazzo poco più basso di me, “cicciottello”, barba incolta, pantaloni di jeans trasandati, una maglietta nerdissima con su scritto “CRYPTO”… eh sì mi avvicinai anche per controllare meglio senza farmi notare troppo, aveva una macchia di sugo vicino alla “O” della scritta, glielo feci notare, sorrise, fece spallucce e si diresse verso la postazione di lavoro!

Il ragazzo in questione era un consulente di una azienda partner esperto di sicurezza che ha lavorato con noi per alcuni mesi (mai visto in giacca o camicia anche quando andavamo da qualche cliente, ma era un mostro di bravura e competenza).

Fu così che iniziai ad esplorare le basi di alcuni tool che ci sarebbero tornati utili negli anni a venire, e soprattutto a capire quanto il mio blog già solo dopo pochi mesi dal lancio fosse vulnerabile.

Oggi vedremo come funziona uno di questi tool, WPScan, un applicativo specializzato sull’analisi di siti WordPress, lo strumento è incluso nella distribuzione Kali Linux, usata per effettuare penetration test dei sistemi, faremo alcuni esempi che vi permetteranno di gettare le basi di una breve analisi del vostro sito WordPress e dove necessario correre ai ripari.

Prima di cominciare facciamo una premessa, le attività che vi descriverò di seguito vanno effettuate solo su siti di cui siete amministratori, lanciare una scansione verso un sito altrui è un reato penale ed è ampiamente tracciabile.

Utente avvisato… ci siamo capiti!

Ora arriviamo alla parte più succosa del discorso, come fare ad analizzare il blog o il sito in questione.

Reperire WPScan

La soluzione più veloce è scaricare una versione aggiornata di Kali Linux il tool è nativamente presente nella distribuzione tra gli strumenti per i “pentest” alla voce 03-Applicazioni Web >>>Identificazione CMS del menù.

Come primo passo dovete scaricare la iso avviabile di Kali [https://www.kali.org/downloads/] e creare una USB bootable.

“Googolate” creare USB avviabile e il sistema operativo che state usando, ci sono diverse soluzioni tra sistemi Linux, Windows e Mac, i principali software per crearle sono Rufus e Unetbootin.

Alcune distribuzioni Linux hanno dei software preinstallati, oppure si può usare il comando “dd” in una shell.

Iniziamo

Una volta avviato il notebook o il PC tramite USB accedete all’elenco dei software e nel campo di ricerca cercate WPScan, avviatelo e si aprirà una shell con il logo del tool e l’elenco delle opzioni possibili.

A questo punto lanciamo un update del database con il comando:

#wpscan –update


Una volta aggiornato il software, effettuiamo una semplice scansione generica impostando l’opzione –url e di seguito il dominio del nostro blog/sito, in questo modo otteniamo una base di informazioni, come la versione di Apache, del CMS, l’IP pubblico al quale risponde il dominio e altre informazioni.

Per ora ignoriamo il robots.txt file che di per se non è una vera e propria vulnerabilità, ma contiene le istruzioni che il nostro sito da ai vari webrobots, un cracker potrebbe sfruttare tali informazione per cercare dei punti deboli, ci sarebbe da scrivere un intero articolo su ognuno dei punti che vi sto elencando quindi per motivi di spazio mi soffermerò solo su alcuni di essi.

Notiamo anche qualcosa di più interessante, vediamo che XML-RPC sembra essere abilitato, questa specifica ormai obsoleta, e sostituita da API REST su versioni più moderne di WordPress, non è più necessaria per comunicare con altre piattaforme, per i pingback, JetPack, ecc.

Introduce solo vulnerabilità tra le quali la possibilità di attacchi bruteforce e attacchi DDoS tramite pingback.

Se avete una versione “moderna” di WordPress vi consiglio di disabilitare questa funzione, cercate e leggete attentamente le istruzioni su come disabilitare XML-RPC.

Cancellare semplicemente il file xmlrpc.php renderà il sito inutilizzabile.

Altra piccola vulnerabilità che salta subito all’occhio è che il file readme.html è presente nella directory principale del sito, quel file è interrogabile e fornisce informazioni sulla versione del CMS, questa informazione permette ad eventuali crakers di studiare specifici exploit per attaccare il sito quindi consiglio di eliminarlo una volta finita l’installazione di base del vostro WordPress.

Come accennato in precedenza noterete la versione in chiaro del CMS WordPress presente nel file readme.html

Bisognerebbe lavorare per evitare che fossero esposte queste informazioni, quindi cercare degli how to su come bloccare la diffusione delle informazioni

Vediamo anche che il sito in questione sta usando un tema grafico Divi e che questo è il tema grafico attualmente in uso.

Passiamo ora all’analisi con enumerazione dei temi e l’uso di API che si collegano ad un database dove sono elencate le vulnerabilità attualmente conosciute legate ai vari Temi grafici e plugins di WordPress.

Come potete vedere dall’immagine iniziamo ad allungare l’elenco delle opzioni nella riga di comando.

Oltre all’opzione –url avremo anche quella per enumerare i temi installati nel sito: “–enumerate t”

dopo quella opzione ho inserito anche l’opzione “–api-token” che seguita dal codice della mia sottoscrizione al servizio WPVulnDB mi aiuterà ad approfondire le eventuali vulnerabilità legate ai componenti del sito che andiamo ad enumerare.

È possibile ricevere un API token gratuito fino a 50 richieste al giorno iscrivendosi sul sito wpscan.com, ricordate però che ogni plugin e tema che analizzate utilizzerà una richiesta, quindi nel caso abbiate siti complessi con diversi plugin e temi installati anche se non attivi, lanciando la scansione con questa opzione consumerete un equivalente numero di richieste fino ad ultimare quelle a disposizione, dovrete poi aspettare il giorno dopo per riprovare.

Lanciando l’analisi con enumerazione dei temi e agganciando le API per avere “l’aiuto da casa” e individuare eventuali vulnerabilità aggiuntive notiamo che sul sito sono installati vari temi obsoleti e potenzialmente vulnerabili, (ho lasciato nello screenshot solo il primo ma ne ho individuati altri 4).

Ma noi sappiamo che il tema principale è DIVI che invece sembra essere stato aggiornato anche a fronte delle vulnerabilità emerse in passato ed ampiamente documentate, naturalmente un cracker non si fermerà a questo punto e proverà comunque a verificare se per il tema DIVI emergeranno nuove vulnerabilità o semplicemente se ne esistono già che WPScan non ha rilevato.

Con l’oggetto “–enumerate u” invece faremo una analisi degli utenti iscritti al sito.

In questo caso ne ho trovati 2

Con WPScan è possibile testare anche la resilienza delle password provando un attacco in forza bruta una volta individuato l’elenco utenti, un consiglio che posso darvi è quello di eliminare l’utente “admin” che è quello solitamente preso di mira per i bruteforce e soprattutto usare password decisamente complesse, i WordPress moderni hanno una funzione con un algoritmo che genera password casuali estremamente lunghe e complesse, se lo hanno implementato c’è un motivo fidatevi…

Ad oggi i vocabolari (wordlists) per i tentativi di attacco alle password reperibili facilmente sul web sono tantissimi e si trovano in ogni lingua, il fatto di usare anche parole di un dialetto, parolacce, o sequenze di tasti non mette al sicuro (es. tutte le varianti “qwerty” più maiuscole e minuscole e numeri sono ampiamente documentate).

Fate attenzione!

Arriviamo all’ultima parte dell’analisi quella legata ai plugins, i plugins sono l’elemento più a rischio di tutto il sito, spesso sono sviluppati da realtà che non hanno la forza per manutenerli correttamente e possono presentare vulnerabilità critiche.

Lanciamo il nostro solito comando ma questa volta con l’opzione –enumerate p e agganciamo le solite API per ricever aiuto dal DB delle vulnerabilità WPVulnDB

Questa volta noteremo che l’attenzione verso i plugin è stata piuttosto bassa, ne troviamo diversi obsoleti, possiamo a questo punto immergerci nelle ricerche per capire se ci sono exploit legati a quelle versioni dei plugin.

Il primo plugin obsoleto che attira subito la mia attenzione è Woocommerce, le vulnerabilità di questo plugin sono state ampiamente documentate le versioni precedenti alla 3.6.5 sono affette da vulnerabilità cross-site scripting (XSS) che permette ad un cracker di lanciare attacchi che aggirano i controlli di accesso al sito e prenderne il possesso.

Attualmente la versione installata è la 4.3.1, bene ma non benissimo, visto che l’ultima disponibile ad oggi è la 4.6.1

Altro plugin critico per il quale si conoscono diverse vulnerabilità è Yoast Seo anche in questo caso l’ultima vulnerabilità patchata è relativa alla versione 11.6 sul sito è installata la 14.7 ma comunque non l’ultima versione che è la 15.1.1.

Conviene sempre tenere aggiornati tutti i plugin per ridurre al minimo i rischi, ma soprattutto installare solo i plugin necessari e cancellare quelli che non lo sono.

Eccoci arrivati alla fine di questo piccolo viaggio che ci ha permesso di grattare la superficie dei nostri amati e odiati siti internet, per capire un poco meglio le dinamiche che in qualche modo coinvolgono noi e terze parti in questo infinito gioco tra elevare barriere e trovare il modo di aggirarle.

Spero che almeno qualche scorcio dell’articolo vi sia stato utile e vi auguro un buon restiling del vostro sito!

Ciao

Rior

[gdlr_icon type=”icon-bell” color=”#2d7ac6″ size=”50px” ]
[gdlr_notification type=”color-border” border=”#2d7ac6″ color=”#000000″]TI È PIACIUTO L’ARTICOLO? CONDIVIDILO CON I TUOI AMICI![/gdlr_notification]

Condividi

Lascia un commento