website-hacked
Tecnologia

Scusate i Disagi, Sono stato Hackerato

Come forse qualcuno di voi ha notato, nei giorni scorsi il sito non era sempre raggiungibile e\o effettuava un re-indirizzamento a siti di spam.

Cosa è successo

Purtroppo il mio blog è stato attaccato da degli hacker che sfruttando delle falle in alcuni plugin di WordPress sono riusciti a iniettare del codice malevolo nei post e questo codice reindirizzava alle pagine di spam.

Dovrei aver risolto il problema: i plugin fallati sono stati eliminati e sono stati introdotti nuovi sistemi di sicurezza.

Dettagli tecnici

L’attaccante è riuscito (dopo vediamo come) a iniettare del javascript all’inizio di ogni post del blog. Questo javascript serviva a fare un redirect tramite la proprietà “href” dell’oggetto window.location. Così facendo quando un post veniva caricato, immediatamente veniva eseguito quel codice e l’utente veniva reindirizzato su una pagina di spam.

In più il codice che faceva il redirect era mascherato come stringa di byte sulla quale poi veniva chiamata la funzione di “decrittazione” string.fromBytes e successivamente la funzione Eval che di fatto eseguiva il codice.

Siccome i post sono salvati nel database, il rimedio che attuavo ogni mattina (o quasi) era ripristinare il backup del database. Questo però non impediva all’attaccante, nottetempo, di perpetrare nuovamente il suo attacco.

Come è stato possibile

Sostanzialmente, sfruttando dei bachi nel codice di alcuni plugin, l’attaccante è riuscito ad impersonare l’amministratore del sito e a iniettare il codice malevolo dove ha voluto.

C’è un articolo interessante che descrive nel dettaglio come creare un payload xss per creare un utente amministratore in un sito wordpress tramite javascript. Lo trovate qui: https://www.shift8web.ca/2018/01/craft-xss-payload-create-admin-user-in-wordpress-user/

Purtroppo per me, dopo l’attacco l’utenza veniva rimossa e quindi non mi sono accorto subito che la vulnerabilità fosse quella.

Me ne sono accorto solo dopo aver installato il plugin Wordfence, che è un firewall per WordPress. Non è che funzioni particolarmente bene, ma nel suo non funzionare mi ha fatto vededere alcune chiamate che aveva erroneamente inserito nella whitelist. Chiamate da IP sparsi in giro per l’Europa a degli endpoint di wp-admin con payload particolari e legati ad alcuni plugin:

lista attacchi
Lista degli attacchi con endpoint chiamato, payload e IP sorgente

Questi sono tutti attacchi che sfruttano debolezze conosciute nei plugin che vedete tra parentesi quadre.

Nel mio caso specifico quelli che hanno sicuramente dato successo sono gli attacchi che vedete in lista per primi, quelli legati al plugin “yuzo_related_post”, plugin che usavo fino ad oggi.

Cercando un po’, infatti ho trovato che qualcuno si era accorto della falla 5 giorni fa: https://wordpress.org/support/topic/hacked-plugin-yuzo-realted-posts-2/.

Anche indagando sugli altri plugin della lista (che per fortuna non avevo tra quelli installati) si trovano articoli simili: https://wordpress.org/support/topic/major-vulnerability-disable-immediately/ e https://www.wordfence.com/blog/2019/03/hackers-abusing-recently-patched-vulnerability-in-easy-wp-smtp-plugin/.

Come si risolve

Ho immediatamente disinstallato il plugin che ha il problema di sicurezza e ripristinato il backup del database.

Per aumentare la difficoltà per i futuri attaccanti ho anche inserito una password per accedere a /wp-admin. Trovate una piccola guida su come fare a questo indirizzo: https://www.wpwhitesecurity.com/securing-wordpress-wp-admin-htaccess/ e vi tornerà utile anche questo link per generare il file htpasswd http://www.htaccesstools.com/htpasswd-generator/.

Ho inoltre usato il firewall (ModSecurity) messo a disposizione dal servizio di hosting a cui mi appoggio (inmotionhosting, che non vi consiglio perchè oltre che a essere lento nei tempi di caricamento del sito, il supporto per il problema di sicurezza è stato nullo) per inserire gli IP sorgenti dell’attacco nella blacklist in modo che non possano più interagire con il mio sito.

Lascia un commento