Una guida completa su xmlrpc.php in WordPress (che cos'è, rischi per la sicurezza, come disabilitarlo)

Pubblicato: 2020-07-06

La specifica XML-RPC WordPress è stata sviluppata per standardizzare la comunicazione tra diversi sistemi, il che significa che le applicazioni al di fuori di WordPress (come altre piattaforme di blogging e client desktop) potrebbero interagire con WordPress.

Questa specifica fa parte di WordPress sin dal suo inizio e ha svolto un lavoro molto utile. Senza di esso, WordPress sarebbe stato nel suo silo, separato dal resto di Internet.

Tuttavia, xmlrpc.php ha i suoi aspetti negativi. Può introdurre vulnerabilità nel tuo sito WordPress ed è stato ora sostituito dall'API REST di WordPress, che fa un lavoro molto migliore nell'aprire WordPress ad altre applicazioni.

In questo post, spiegheremo cos'è xmlrpc.php, perché dovresti disabilitarlo e aiutarti a identificare se è in esecuzione sul tuo sito WordPress.

Pronto? Immergiamoci!

Che cos'è xmlrpc.php?

XML-RPC è una specifica che consente la comunicazione tra WordPress e altri sistemi. Lo ha fatto standardizzando quelle comunicazioni, usando HTTP come meccanismo di trasporto e XML come meccanismo di codifica.

XML-RPC è precedente a WordPress: era presente nel software di blogging b2, che è stato biforcato per creare WordPress nel 2003. Il codice alla base del sistema è memorizzato in un file chiamato xmlrpc.php , nella directory principale del sito. Ed è ancora lì, anche se XML-RPC è in gran parte obsoleto.

Nelle prime versioni di WordPress, XML-RPC era disattivato per impostazione predefinita. Ma dalla versione 3.5, è stato abilitato per impostazione predefinita. Il motivo principale di ciò era consentire all'app mobile di WordPress di comunicare con l'installazione di WordPress.

Se hai utilizzato l'app mobile di WordPress prima della versione 3.5, potresti ricordare di dover abilitare XML-RPC sul tuo sito affinché l'app possa pubblicare contenuti. Ciò era dovuto al fatto che l'app non eseguiva WordPress stesso; invece, era un'app separata che comunicava con il tuo sito WordPress utilizzando xmlrpc.php.

Ma non era solo l'app mobile per cui veniva utilizzato XML-RPC: veniva anche utilizzato per consentire la comunicazione tra WordPress e altre piattaforme di blog, abilitava trackback e pingback e alimentava il plug-in Jetpack che collega un WordPress self-hosted sito su WordPress.com.

Ma poiché l'API REST è stata integrata nel core di WordPress, il file xmlrpc.php non viene più utilizzato per questa comunicazione. Invece, l'API REST viene utilizzata per comunicare con l'app mobile di WordPress, con i client desktop, con altre piattaforme di blog, con WordPress.com (per il plug-in Jetpack) e con altri sistemi e servizi. La gamma di sistemi con cui l'API REST può interagire è molto più ampia di quella consentita da xmlrpc.php. Inoltre, c'è molta più flessibilità.

Poiché l'API REST ha sostituito XML-RPC, ora dovresti disabilitare xmlrpc.php sul tuo sito. Vediamo perché.

Perché dovresti disabilitare xmlrpc.php

Il motivo principale per cui dovresti disabilitare xmlrpc.php sul tuo sito WordPress è perché introduce vulnerabilità di sicurezza e può essere bersaglio di attacchi.

Ora che XML-RPC non è più necessario per comunicare al di fuori di WordPress, non c'è motivo di mantenerlo attivo. Ecco perché è saggio rendere il tuo sito più sicuro disabilitandolo.

Se xmlrpc.php è una responsabilità di sicurezza e non funziona più, perché non è stato rimosso del tutto da WordPress?

Il motivo è che una delle caratteristiche chiave di WordPress sarà sempre la compatibilità con le versioni precedenti. Se stai gestendo bene il tuo sito, saprai che mantenere aggiornato WordPress, così come qualsiasi plugin o tema, è essenziale.

Ma ci saranno sempre proprietari di siti Web che non vogliono o non sono in grado di aggiornare la loro versione di WordPress. Se eseguono una versione precedente all'API REST, avranno comunque bisogno dell'accesso a xmlrpc.php.

Diamo un'occhiata alle vulnerabilità specifiche in modo più dettagliato.

Attacchi DDoS tramite pingback XML-RPC

Una delle funzioni abilitate da xmlrpc.php era pingback e trackback. Queste sono le notifiche che appaiono nei commenti sul tuo sito quando un altro blog o sito si collega al tuo contenuto.

La specifica XML-RPC è stata ciò che ha reso possibile questa comunicazione, ma è stata sostituita dall'API REST (come abbiamo già visto).

Se XML-RPC è abilitato sul tuo sito, un hacker potrebbe potenzialmente montare un attacco DDoS sul tuo sito sfruttando xmlrpc.php per inviare un gran numero di pingback al tuo sito in breve tempo. Ciò potrebbe sovraccaricare il tuo server e mettere fuori uso il tuo sito.

Attacchi di forza bruta tramite XML-RPC

Ogni volta che xmlrpc.php effettua una richiesta, invia il nome utente e la password per l'autenticazione. Ciò presenta una significativa responsabilità di sicurezza ed è qualcosa che l'API REST non fa. In effetti, l'API REST utilizza OAuth che invia token per l'autenticazione anziché nomi utente o password.

Poiché xmlrpc.php invia informazioni di autenticazione ad ogni richiesta, gli hacker potrebbero utilizzarle per tentare di accedere al tuo sito. Un attacco di forza bruta come questo potrebbe consentire loro di inserire contenuti, eliminare codice o danneggiare il database.

Se un utente malintenzionato invia abbastanza richieste al tuo sito, ognuna con una coppia di nome utente e password diversa, c'è la possibilità che alla fine possa colpire quella giusta, dandogli accesso al tuo sito.

Ecco perché, se stai eseguendo una versione aggiornata di WordPress, che utilizza l'API REST per comunicare con sistemi esterni, dovresti disabilitare xmlrpc.php . Non è necessario e potrebbe rendere vulnerabile il tuo sito.


xmlrpc.php è in esecuzione sul tuo sito WordPress?

La prima cosa che devi fare è identificare se xmlrpc.php è in esecuzione sul tuo sito WordPress.

Non si tratta di un semplice caso di verifica della presenza del file: fa parte di ogni installazione di WordPress e sarà presente anche se XML-RPC è disabilitato.

Per verificare se xmlrpc.php è abilitato sul tuo sito, utilizza il servizio di convalida XML-RPC di WordPress. Questo controllerà il tuo sito e ti dirà se xmlrpc.php è abilitato.

Servizio di convalida XML-RPC di WordPress
Servizio di convalida XML-RPC di WordPress

Ecco il risultato che ho ottenuto quando ho controllato questo sito sul servizio.

Controllo Kinsta XML-RPC
Controllo Kinsta XML-RPC

Questo mostra che xmlrpc.php è stato disabilitato su kinsta.com. Quindi, se esegui il controllo e scopri che xmlrpc.php è ancora abilitato sul tuo sito, come lo disattiva?

Come disabilitare xmlrpc.php

Esistono tre modi per disabilitare xmlrpc.php:

Diamo un'occhiata a ciascuno singolarmente.

Come disabilitare xmlrpc.php con un plugin

Installare un plugin per disabilitare xmlrpc.php è il modo più semplice per farlo. Il plugin Disable XML-RPC lo disabiliterà completamente. Ecco come lo usi.

Il mio punto di partenza è il mio sito Web, su cui è abilitato xmlrpc.php. Puoi vederlo tramite il controllo che ho fatto:

Sito web di Rachel McCollin - Controllo XML-RPC
Sito web di Rachel McCollin – Controllo XML-RPC

Installa il plug-in tramite la schermata Plugin nell'amministratore di WordPress e attivalo.

Non devi fare nient'altro: l'attivazione del plugin comporterà la disabilitazione di XML-RPC. Ora se eseguo un controllo sul mio sito, ottengo un risultato diverso:

Sito web di Rachel McCollin - secondo controllo XML-RPC
Sito web di Rachel McCollin: secondo controllo XML-RPC

È così semplice!

Disabilita i pingback XML-RPC con un plug-in

Ma cosa succede se si desidera disabilitare alcuni aspetti di xmlrpc.php e non altri? Il plug-in Disable XML-RPC Pingback ti consente di disabilitare solo la funzionalità pingback, il che significa che hai ancora accesso ad altre funzionalità di XML-RPC se ne hai bisogno.

Il plugin funziona allo stesso modo del plugin Disable XML-RPC: basta installarlo, attivarlo e funzionerà.

Configura l'attivazione XML-RPC e API REST con un plug-in

Se desideri un controllo più dettagliato su come sia xmlrpc.php che l'API REST sono configurati sul tuo sito, puoi installare il plug-in REST XML-RPC Data Checker.

Dopo aver installato e attivato questo plug-in, vai su Impostazioni > REST XML-RPC Data Checker e fai clic sulla scheda XML-RPC .

Controllo dati REST XML-RPC
Controllo dati REST XML-RPC

Ciò ti consente di configurare esattamente quali aspetti di xmlrpc.php sono attivi sul tuo sito.

Hai bisogno di un hosting velocissimo, sicuro e adatto agli sviluppatori? Kinsta è stato creato pensando agli sviluppatori di WordPress e fornisce molti strumenti e una potente dashboard. Dai un'occhiata ai nostri piani

In alternativa, puoi semplicemente spegnerlo del tutto. E se vuoi anche controllare l'API REST, il plug-in ti offre un'altra scheda per questo.

Come disabilitare xmlrpc.php senza un plug-in

Se preferisci non installare un altro plugin sul tuo sito, puoi disabilitare xmlrpc.php aggiungendo del codice in un filtro o nel tuo file .htaccess. Diamo un'occhiata a entrambi i metodi.

Disabilita xmlrpc.php tramite un filtro

Un'opzione qui è usare il filtro xmlrpc_enabled per disabilitare xmlrpc.php. Aggiungi questa funzione a un plugin e attivala sul tuo sito:

 add_filter( 'xmlrpc_enabled', '__return_false' );

Puoi aggiungerlo al tuo file delle funzioni del tema, ma è meglio scrivere un plug-in.

L'altra opzione ha a che fare con la modifica del file .htaccess, disponibile con i provider di hosting che utilizzano Apache, collegandosi al server del tuo sito tramite FTP o cPanel.

Disabilita xmlrpc.php tramite il file .htacess

Nel tuo file .htaccess , aggiungi questo codice:

 <Files xmlrpc.php> Order Allow,Deny Deny from all </Files>

Assicurati di fare una copia del vecchio file prima di farlo, nel caso in cui dovessi riscontrare problemi.

Chiedi al tuo provider di hosting di disabilitare xmlrpc.php

In alternativa, alcuni provider di hosting disabiliteranno xmlrpc.php se viene rilevato un attacco.

Su Kinsta, quando viene rilevato un attacco tramite XML-RPC, uno snippet di codice viene automaticamente aggiunto al file Nginx.config:

 location ~* ^/xmlrpc.php$ { return 403; }

Questo produrrà un errore 403 e fermerà l'attacco nelle sue tracce.

Se lo stai facendo da solo, è meglio usare uno dei metodi sopra. Ma prima di farlo, controlla sempre prima con il tuo provider di hosting.

Quando è necessario abilitare xmlrpc.php?

Potrebbero esserci alcune occasioni in cui è necessario abilitare xmlrpc.php sul tuo sito WordPress o quando non dovresti disabilitarlo completamente.

Questi sono:

  • Non stai eseguendo l'API REST (non consigliata, ma necessaria in alcune situazioni) ma devi comunicare tra il tuo sito WordPress e altri sistemi.
  • Non sei in grado di aggiornare WordPress alla versione 4.4 o successiva, quindi non hai accesso all'API REST. Ciò potrebbe essere dovuto a restrizioni nella configurazione dell'hosting (nel qual caso cambierei provider di hosting) o all'incompatibilità del tema o dei plug-in (nel qual caso li sostituirei o aggiornerei).
  • Stai lavorando con un'applicazione esterna che non può accedere all'API REST di WP ma può accedere a XML-RPC (a lungo termine, consiglierei di aggiornare quell'applicazione o passare a un'applicazione compatibile con REST).

Questo è tutto! Nessuno di questi è un motivo particolarmente valido per mantenere attiva la specifica XML-RPC.

L'unico motivo per cui è ancora in WordPress è per la compatibilità con le versioni precedenti e lo useresti solo se stai lavorando con sistemi obsoleti. Per chiunque desideri mantenere i propri siti aggiornati e lavorare con la tecnologia più recente, disabilitare xmlrpc.php è la strada da percorrere.

XML-RPC una volta era una parte essenziale di WordPress. Ora rappresenta un rischio per la sicurezza: questa guida ti mostrerà esattamente come disabilitarlo sul tuo sito. Clicca per twittare

Sommario

La specifica XML-RPC è stata sviluppata prima ancora della creazione di WordPress, come mezzo per consentire a WordPress di comunicare con sistemi e applicazioni esterni. Presenta difetti di sicurezza intrinseci e potrebbe rendere il tuo sito vulnerabile agli attacchi.

Ora che l'API REST consente al tuo sito di comunicare con altre applicazioni, puoi disabilitare in sicurezza xmlrpc.php. Se segui i passaggi precedenti, disabilitandolo migliorerai la sicurezza del tuo sito.