Owned Wordpress: aggiornare a 2.6 o 2.6.1 non risolve
august 2008 by abeggi
Proseguendo nella mia solitaria indagine sulle molteplici intrusioni in blog basati su Wordpress non aggiornati, ho esaminato, come ho già fatto qualche tempo addietro, gli effetti di un aggiornamento prima a Wordpress 2.6, poi alla versione 2.6.1, fresca di forgia.
Passando alla versione 2.6 l’unico indizio che ci sia qualcosa di poco pulito è il contatore degli amministratori nell’elenco degli utenti.
Come potete notare nella figura sopra, c’è un solo utente, amministratore, visualizzato nell’elenco, ma il conteggio ne riporta 2.
Disabilitando Javascript e ricaricando la pagina si svela l’arcano: appare immediatamente il secondo amministratore dal nome WordPress, nella colonna “Nome” mostra solo tre puntini. Esaminando il codice HTML della pagina si scopre lo script di “cloaking” dell’amministratore abusivo, di cui avevo già parlato.
Nessun altro indizio evidente mostra che il blog è compromesso ed in mano ad altri. L’unica possibilità è data da una accurata analisi di tutto quanto costituisce il blog stesso, database compreso, naturalmente sapendo dove e cosa cercare.
Aggiornando alla versione 2.6.1 le cose cambiano, ma non di molto. Solo la prima volta che si entra nella gestione dei plugin si ottiene il messaggio mostrato qui sotto:
Per me e per chi ha dimestichezza con Wordpress questi messaggi sono il chiaro indice che qualcosa non va, ma per la maggior parte dei tenutari di blog probabilmente non hanno molto significato. Il problema è che i messaggi appaiono solo la prima volta che si entra nel pannello di gestione plugin del blog dopo l’aggiornamento, per non comparire mai più.
Ai fini dello sradicamento dell’intrusione non si ottiene la pulizia completa. Occorre ancora intervenire a mano, e non è sufficiente cancellare l’amministratore abusivo ed i plugin fasulli. Nel blog c’è sicuramente ancora roba nascosta, file modificati, residui nel database. L’incursore ha potuto leggere le credenziali di accesso al database stesso, in chiaro nel file wp-config.php, ed ha molte frecce al suo arco:
i file camuffati, inseriti ovunque, potrebbero essere shell remote, capaci di modificare a piacere i file dell’installazione, aggiungerne altri, cancellarli, ecc.
i file del tema e dei plugin potrebbero essere stati modificati per eseguire pezzi di codice PHP a comando
I falsi plugin sono ancora presenti, se il webmaster non li ha cancellati
nel database c’è ancora una copia di riserva della remote shell, e la cache dei link di spam
I primi tre punti sono porte aperte alla “reinfezione” del blog, l’ultimo è semplicemente fatica in meno per l’incursore.
Ho trovato almeno tre blog in rete (sì i proprietari sono stati avvertiti) aggiornati alla versione 2.6 che non mostravano più il comportamento di forgiare la pagina a seconda del visitatore (utente normale o GoogleBot), ma avevano centinaia di link spam nascosti in fondo ai post nella home page. Ipotizzo, cosa da verificare ma verosimile, che il proprietario abbia aggiornato ignorando di essere vittima dell’intrusione, ed i file corrotti dall’intrusione siano stati sovrascritti, cosa che ha fatto perdere al mentecatto la possibilità di inserire link spam a piacere senza intervenire direttamente sul blog. Naturalmente, il nostro amico non si è perso d’animo: ha immediatamente approfittato del proprio account amministratore abusivo ed ha modificato i post in prima pagina inserendo i link spam all’interno di un blocco HTML con uno stile utile a nasconderli ai visitatori umani (ad esempio con style="display:none", oppure con style="overflow:hidden;width:0;height:0"). Oppure, anche dopo aver perso anche l’amministratore abusivo, scoperto e cancellato dal webmaster più attento, potrebbe essere in grado di accedere il database MySQL dall’esterno e modificare a mano i post per accodare i link spam. Lo può fare perché ha potuto leggere le credenziali di accesso al database, contenute in wp-config.php. Non dovrebbe essere possibile farlo dall’esterno, i servizi di hosting non dovrebbero permettere l’accesso al server database a chiunque. Se però nel blog vi sono ancora i file modificati dall’incursore per eseguire codice PHP a comando, come mostrato qui, per il mentecatto è un gioco da ragazzi inserire un paio di righe di PHP da eseguire al volo per modificare il record nel database relativo al post ed aggiungere i link spam.
Il risultato è che, pur dopo tutti gli aggiornamenti, se avevamo il blog infetto e non abbiamo usato le maniere forti, saremo daccapo in poco tempo. Nel frattempo, il mentecatto non sta con le mani in mano e molto probabilmente sta correndo ai ripari: a breve l’aggiornamento a Wordpress 2.6.x potrebbe non essere più efficace per scoprire l’intrusione.
L’unica cosa che, ironia della sorte, potrebbe alla fine porre fine all’abuso del nostro blog da parte del mentecatto è il crescente numero di servizi di indicizzazione e motori di ricerca che adottano politiche di esclusione del siti compromessi. Quando il nostro sito verrebbe escluso da tutti (Google, Technorati, FeedBurner, ecc.), il mentecatto non saprebbe più cosa farsene, e lo lascerebbe al suo destino. Certo, a quel punto il nostro blog sarebbe un rottame: invisibile da Internet, non più indicizzato dai principali motori di ricerca e aggregatori, saremmo come la voce che grida nel deserto. O peggio potrebbe essere venduto a qualche organizzazione dedita al phishing, a cui non importa il posizionamento del sito nei motori di ricerca.
Uscire da quello stato di limbo non è molto facile, e molto tempo occorre per recuperare credibilità agli occhi degli innumerevoli siti di indicizzazione. E’ meglio intervenire prima possibile.
Information_security
Wordpress
code_analysis
intrusioni
Owned_Wordpress
from google
Passando alla versione 2.6 l’unico indizio che ci sia qualcosa di poco pulito è il contatore degli amministratori nell’elenco degli utenti.
Come potete notare nella figura sopra, c’è un solo utente, amministratore, visualizzato nell’elenco, ma il conteggio ne riporta 2.
Disabilitando Javascript e ricaricando la pagina si svela l’arcano: appare immediatamente il secondo amministratore dal nome WordPress, nella colonna “Nome” mostra solo tre puntini. Esaminando il codice HTML della pagina si scopre lo script di “cloaking” dell’amministratore abusivo, di cui avevo già parlato.
Nessun altro indizio evidente mostra che il blog è compromesso ed in mano ad altri. L’unica possibilità è data da una accurata analisi di tutto quanto costituisce il blog stesso, database compreso, naturalmente sapendo dove e cosa cercare.
Aggiornando alla versione 2.6.1 le cose cambiano, ma non di molto. Solo la prima volta che si entra nella gestione dei plugin si ottiene il messaggio mostrato qui sotto:
Per me e per chi ha dimestichezza con Wordpress questi messaggi sono il chiaro indice che qualcosa non va, ma per la maggior parte dei tenutari di blog probabilmente non hanno molto significato. Il problema è che i messaggi appaiono solo la prima volta che si entra nel pannello di gestione plugin del blog dopo l’aggiornamento, per non comparire mai più.
Ai fini dello sradicamento dell’intrusione non si ottiene la pulizia completa. Occorre ancora intervenire a mano, e non è sufficiente cancellare l’amministratore abusivo ed i plugin fasulli. Nel blog c’è sicuramente ancora roba nascosta, file modificati, residui nel database. L’incursore ha potuto leggere le credenziali di accesso al database stesso, in chiaro nel file wp-config.php, ed ha molte frecce al suo arco:
i file camuffati, inseriti ovunque, potrebbero essere shell remote, capaci di modificare a piacere i file dell’installazione, aggiungerne altri, cancellarli, ecc.
i file del tema e dei plugin potrebbero essere stati modificati per eseguire pezzi di codice PHP a comando
I falsi plugin sono ancora presenti, se il webmaster non li ha cancellati
nel database c’è ancora una copia di riserva della remote shell, e la cache dei link di spam
I primi tre punti sono porte aperte alla “reinfezione” del blog, l’ultimo è semplicemente fatica in meno per l’incursore.
Ho trovato almeno tre blog in rete (sì i proprietari sono stati avvertiti) aggiornati alla versione 2.6 che non mostravano più il comportamento di forgiare la pagina a seconda del visitatore (utente normale o GoogleBot), ma avevano centinaia di link spam nascosti in fondo ai post nella home page. Ipotizzo, cosa da verificare ma verosimile, che il proprietario abbia aggiornato ignorando di essere vittima dell’intrusione, ed i file corrotti dall’intrusione siano stati sovrascritti, cosa che ha fatto perdere al mentecatto la possibilità di inserire link spam a piacere senza intervenire direttamente sul blog. Naturalmente, il nostro amico non si è perso d’animo: ha immediatamente approfittato del proprio account amministratore abusivo ed ha modificato i post in prima pagina inserendo i link spam all’interno di un blocco HTML con uno stile utile a nasconderli ai visitatori umani (ad esempio con style="display:none", oppure con style="overflow:hidden;width:0;height:0"). Oppure, anche dopo aver perso anche l’amministratore abusivo, scoperto e cancellato dal webmaster più attento, potrebbe essere in grado di accedere il database MySQL dall’esterno e modificare a mano i post per accodare i link spam. Lo può fare perché ha potuto leggere le credenziali di accesso al database, contenute in wp-config.php. Non dovrebbe essere possibile farlo dall’esterno, i servizi di hosting non dovrebbero permettere l’accesso al server database a chiunque. Se però nel blog vi sono ancora i file modificati dall’incursore per eseguire codice PHP a comando, come mostrato qui, per il mentecatto è un gioco da ragazzi inserire un paio di righe di PHP da eseguire al volo per modificare il record nel database relativo al post ed aggiungere i link spam.
Il risultato è che, pur dopo tutti gli aggiornamenti, se avevamo il blog infetto e non abbiamo usato le maniere forti, saremo daccapo in poco tempo. Nel frattempo, il mentecatto non sta con le mani in mano e molto probabilmente sta correndo ai ripari: a breve l’aggiornamento a Wordpress 2.6.x potrebbe non essere più efficace per scoprire l’intrusione.
L’unica cosa che, ironia della sorte, potrebbe alla fine porre fine all’abuso del nostro blog da parte del mentecatto è il crescente numero di servizi di indicizzazione e motori di ricerca che adottano politiche di esclusione del siti compromessi. Quando il nostro sito verrebbe escluso da tutti (Google, Technorati, FeedBurner, ecc.), il mentecatto non saprebbe più cosa farsene, e lo lascerebbe al suo destino. Certo, a quel punto il nostro blog sarebbe un rottame: invisibile da Internet, non più indicizzato dai principali motori di ricerca e aggregatori, saremmo come la voce che grida nel deserto. O peggio potrebbe essere venduto a qualche organizzazione dedita al phishing, a cui non importa il posizionamento del sito nei motori di ricerca.
Uscire da quello stato di limbo non è molto facile, e molto tempo occorre per recuperare credibilità agli occhi degli innumerevoli siti di indicizzazione. E’ meglio intervenire prima possibile.
august 2008 by abeggi
Copy this bookmark: