Una guida definitiva su XMLRPC per WordPress (+ come disabilitarlo)
Pubblicato: 2021-04-08La sicurezza del sito Web è una cosa difficile da risolvere nel modo giusto . In particolare con problemi di sicurezza relativi a XML-RPC, come comunemente sfruttato negli attacchi ai siti WordPress. Ci sono molte informazioni disponibili su Internet che forniscono tutti i tipi di soluzioni, ma quali sono corrette? Questo articolo spiegherà come, le soluzioni disponibili e qual è effettivamente la soluzione migliore. Immergiamoci!
XMLRPC è più vecchio di WordPress stesso. Questo sistema è stato introdotto in WordPress per combattere il dilemma della connessione Internet lenta, aiutando gli utenti a scrivere nuovi post offline e quindi caricarli sul server. La possibilità di connettere WordPress in remoto con altre applicazioni era possibile solo con il file xmlrpc.php.
Anche alcuni sviluppatori esperti non comprendono appieno XMLRPC e le minacce alla sicurezza ad esso associate. È piuttosto probabile che il sito/i siti che gestisci dispongano di un file XMLRPC attivo che richiede la tua attenzione immediata, ma puoi eseguire un piano d'azione efficace solo dopo aver saputo come viene gestito XMLRPC e qual è il modo migliore per gestirlo in modo sicuro.
Sebbene WordPress abbia ora la sua API REST, il file xmlrpc.php è ancora presente all'interno del core ed è abilitato per impostazione predefinita esponendo il sito WordPress a vari attacchi informatici. In questo articolo impareremo l'utilizzo di questo file, le vulnerabilità ad esso associate e come gestirlo senza mettere a rischio la sicurezza del tuo sito.
Sommario
- Che cos'è un file xmlrpc.php?
- Quanto possono essere pericolosi gli hacker con il file xmlrpc.php?
- Attacco a forza bruta
- Attacco DDoS
- Attacco alle porte tra siti (XSPA)
- Metodi inefficaci per bloccare gli attacchi XMLRPC
- Disabilitando completamente l'XMLRPC
- Perché l'installazione di un plug-in di sicurezza danneggia effettivamente il tuo sito
- In che modo Accelerated Domains gestisce i problemi XMLRPC per i suoi clienti?
- Pensieri finali
Che cos'è un file xmlrpc.php?
Nella sua forma più semplice, XML-RPC (Remote Procedure Call) è stato creato per la comunicazione multipiattaforma. Questo protocollo veniva utilizzato per effettuare chiamate di procedura utilizzando HTTP come trasporto e XML come codificatore. Il client effettua queste chiamate inviando una richiesta HTTP al server e riceve in cambio la risposta HTTP. XML-RPC richiama funzioni tramite richiesta HTTP e quindi queste funzioni eseguono alcune azioni e inviano in cambio risposte codificate.
Confrontiamo questo con una chiamata API REST per comprendere appieno il concetto.
Procedura | RPC | RIPOSO |
Iscrizione | POST/registrazione | POST/utenti |
Leggi Utente | GET/readUser?userid=123 | GET/persone/1234 |
REST utilizza i parametri URL per identificare le risorse mentre RPC usa i parametri di query per fornire come argomenti di funzione.
WordPress ha utilizzato XMLRPC per consentire ai suoi utenti di interagire con il proprio sito in remoto. Lo usa ancora per alimentare la sua app mobile e per supportare plug-in come JetPack, WooCommerce, ecc. L'uso del file xmlrpc.php
ha i suoi svantaggi ma disabilitarlo completamente è l'unica soluzione praticabile? Per rispondere dobbiamo prima esaminare le vulnerabilità ad esso associate e quali sono le soluzioni disponibili per evitarle.
Quanto possono essere pericolosi gli hacker con il file xmlrpc.php?
Utilizzando XMLRPC, gli hacker sfruttano le chiamate di procedura remota (RPC) e invocano funzioni per recuperare i dati desiderati. Nella maggior parte dei siti WordPress, il file xmlrpc.php
è facilmente rintracciabile e, semplicemente inviando dati XML arbitrari, gli hacker controllano il sito per eseguire il codice che hanno preparato per eseguire un determinato tipo di attacco.
Per capire come viene compromesso l'XMLRPC di WordPress, diamo un'occhiata agli attacchi informatici più popolari ad esso associati.
Attacco a forza bruta
Nell'attacco Bruteforce, l'hacker cerca di indovinare il nome utente e la password corretti eseguendo numerosi tentativi di accesso. Sfortunatamente, un gran numero di siti WordPress utilizza password di amministrazione deboli o non ha alcun livello di sicurezza aggiunto per fermare gli aggressori. Questi siti sono facilmente compromessi con questo tipo di attacco.
Altri utilizzano una password complessa e dispongono anche di meccanismi di sicurezza come reCaptcha e blocco automatico dell'IP efficace contro gli attacchi di forza bruta, ma se l'hacker decide di utilizzare XMLRPC; non ha nemmeno bisogno di accedere all'amministratore di WordPress.
Uno strumento molto comune di Kali Linux, WPSCAN viene utilizzato per enumerare tutti i nomi utente e, una volta terminato, gli hacker forzano la password utilizzando il file xmlrpc.php
inviando la seguente richiesta HTTP al sito della vittima.
POST /xmlrpc.php HTTP/1.1
User-Agent: Fiddler
Host: www.example.com
Content-Length: 164
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param><value>admin</value></param>
<param><value>pass</value></param>
</params>
</methodCall>
Nell'esempio sopra, un hacker può inviare migliaia di variazioni fino a quando non recupera la password corretta.
La seguente risposta viene restituita alla richiesta di cui sopra. La risposta contiene il codice di errore e un messaggio chiaro che indica che il nome utente e la password provati non erano corretti. È una chiara indicazione che dice all'hacker di riprovare fino a quando non viene trovata la password corretta.
HTTP/1.1 200 OK
Server: nginx
Date: Sun, 26 May 2019 13:30:17 GMT
Content-Type: text/xml; charset=UTF-8
Connection: keep-alive
X-Powered-By: PHP/7.1.21
Cache-Control: private, must-revalidate
Expires: Sun, 02 Jun 2019 13:30:17 GMT
Content-Length: 403
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value><int>403</int></value>
</member>
<member>
<name>faultString</name>
<value><string>Incorrect username or password.</string></value>
</member>
</struct>
</value>
</fault>
</methodResponse>
La risposta ha restituito il codice HTTP 200 e il messaggio che il nome utente e la password forniti non erano corretti. Passando attraverso il canale XMLRPC, un hacker non deve preoccuparsi dei reCaptcha o limitare i plug-in dei tentativi di accesso. Può continuare a eseguire le variazioni fino a quando non viene recuperata la password corretta.
Nota: gli attacchi di forza bruta richiedono molte risorse e causano anche problemi di prestazioni. Il processo di prova ed errore viene eseguito in un ciclo per un periodo di tempo più lungo che può mantenere occupato il tuo server per servire i visitatori effettivi. Questo consumo di risorse non necessario fa sì che i server consumino più energia.
Attacco DDoS
Il Distributed Denial of Service (DDoS) è uno degli attacchi informatici più letali in grado di paralizzare il server colpendolo con centinaia e migliaia di richieste simultanee. Gli hacker utilizzano la funzione pingback di WordPress insieme al file xmlrpc.php per eseguire tali attacchi.
Idealmente, l'hacker prende di mira l'endpoint o una pagina che può essere colpita più volte e impiega più tempo per rispondere. In questo modo un singolo colpo può avere un impatto massimo sulle risorse del server e, nel nostro caso, XMLRPC è utile all'hacker nell'esporre tali endpoint.
Diversi siti WordPress già compromessi vengono utilizzati per eseguire il metodo pingback.ping per prendere di mira una singola vittima. Le travolgenti richieste HTTP GET e POST bloccano il traffico regolare e alla fine mandano in crash il server.
Innanzitutto, l'hacker controlla se il file xmlrpc.php è abilitato o meno inviando la seguente richiesta.
POST /xmlrpc.php HTTP/1.1
Host: withinsecurity.com
Connection: keep-alive
Content-Length: 175
<?xml version="1.0" encoding="utf-8"?>
<methodCall>
<methodName>demo.sayHello</methodName>
<params>
<param>
<value>admin</value>
</param>
</params>
</methodCall>
Una volta confermato che l'XMLRPC è abilitato sul sito Web di destinazione, l'attaccante inizia a colpirlo utilizzando la rete di siti sfruttati per inviare più richieste di pingback a un sito vittima. Questo può essere automatizzato da più host ed essere utilizzato per causare un attacco DDoS di massa sul sito della vittima.
POST /xmlrpc.php HTTP/1.1
Host: withinsecurity.com
Connection: keep-alive
Content-Length: 293
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string>http://173.244.58.36/</string></value>
</param>
<param>
<value><string>https://example.com/blog/how-to-make-a-salad</string></value>
</param>
</params>
</methodCall>
Attacco alle porte tra siti (XSPA)
Gli attacchi cross-site Port Attack (XSPA) sono molto comuni in cui l'hacker inietta lo script dannoso per recuperare informazioni su porte TCP e indirizzi IP. Nel caso di WordPress, XMLRPC viene utilizzato insieme al suo meccanismo di pingback per bypassare qualsiasi mascheramento IP come WAF di base come Cloudflare.
In un attacco XSPA, l'hacker utilizza il metodo pingback.ping per eseguire il pingback di un post su un sito Web di destinazione che in cambio invia l'indirizzo IP in risposta. L'hacker utilizza uno sniffer per creare l'endpoint per l'invio del pingback e un URL live di un post del blog.
Gli hacker inviano la seguente richiesta dal suo server.
<methodCall>
<methodName>pingback.ping</methodName>
<params><param>
<value><string>http://<YOUR SERVER >:<port></string></value>
</param><param><value><string>http://<SOME VALID BLOG FROM THE SITE ></string>
</value></param></params>
</methodCall>
Se la risposta contiene faultCode e un valore maggiore di 0, significa che la porta è aperta per iniziare a inviare direttamente i pacchetti HTTP.
Metodi inefficaci per bloccare gli attacchi XMLRPC
Finora nell'articolo, abbiamo stabilito che il file xmlrpc.php è soggetto ad alcuni gravi attacchi informatici come DDoS, Bruteforce e Cross-site Port Attack, quindi è fondamentale gestirlo correttamente per bloccare questi attacchi .
Eliminando completamente l'XMLRPC
Puoi semplicemente eliminare il file XMLRPC che farà sì che il tuo server inizi a generare errori 404 a chiunque tenti di accedervi. Lo svantaggio di questa soluzione è che il file verrà ricreato ogni volta che aggiorni WordPress.
Disabilitando completamente l'XMLRPC
L'altra opzione più praticabile è disabilitare il file xmlrpc.php
. Puoi farlo semplicemente aggiungendo il blocco di codice all'interno del tuo file .htaccess
. Assicurati di farlo prima delle regole .htaccess
che non cambiano mai aggiunte da WordPress.
<Files xmlrpc.php>
order allow,deny
deny from all
</Files>
Ciò disabiliterà il file xmlrpc.php
per ogni applicazione o servizio che lo utilizza. Puoi inserire nella whitelist un determinato indirizzo IP nel caso in cui desideri comunque accedere al tuo sito WordPress tramite XMLRPC. Per questo, è necessario aggiungere il seguente comando:
<Files xmlrpc.php>
<RequireAny>
Require ip 1.1.1.2
Require ip 2001:db8::/32
</RequireAny>
</Files>
Professionisti
- Elimina i rischi di abuso di XMLRPC negli attacchi informatici.
- Vantaggi in termini di prestazioni a lungo termine e risparmi sulle risorse del server.
contro
- Disabilitare XMLRPC equivale a disabilitare l'accesso remoto per le app che usano questa versione di accesso remoto. Ciò significa che Jetpack, l'app mobile WP o qualsiasi altra soluzione che si collega al tuo sito WordPress tramite XMLRPC non può più connettersi al tuo sito.
- Anche il codice legacy per le app personalizzate potrebbe non funzionare.
Perché l'installazione di un plug-in di sicurezza danneggia effettivamente il tuo sito
Gli utenti di WordPress spesso si affidano ai plug-in per qualsiasi caratteristica o funzionalità richiesta senza pensare molto al loro impatto sulle prestazioni del sito. Esistono diversi plug-in di sicurezza di WordPress che promettono di proteggere il tuo sito Web da problemi di sicurezza relativi a XMLRPC, ma in realtà danneggiano maggiormente il tuo sito.
Ecco alcuni dei motivi per cui proteggere il tuo sito con un plug-in non è la scelta migliore.
- I plugin di sicurezza sono efficaci solo a livello di applicazione e non proteggono il tuo server dall'essere colpito.
- Aggiungono codice non necessario sul tuo sito che ne riduce le prestazioni e aumenta il tempo al primo byte (TTFB).
- Alcuni di questi plugin fanno più male che bene e vengono utilizzati dagli hacker per creare backdoor sul tuo sito web.
- Questi plugin richiedono una gestione frequente che aggiunge più carico di lavoro.
Dalla valutazione di cui sopra, nessuna delle opzioni offre una soluzione ideale per gestire il problema di sicurezza XMLRPC. Questo ci porta ai domini accelerati. Un servizio creato per risolvere problemi complessi relativi alla sicurezza e molto altro. Diamo un'occhiata a come i domini accelerati possono risolvere efficacemente il problema XMLRPC per te.
In che modo Accelerated Domains gestisce i problemi XMLRPC per i suoi clienti?
Accelerated Domains risolve problemi complessi di prestazioni, sicurezza e scalabilità nel modo più efficiente. Accelerated Domains offre sicurezza gestita a livello aziendale che blocca qualsiasi tipo di attacco informatico, compresi quelli associati a XMLRPC.
Lo smart Security Engine di Accelerated Domains si trova davanti al server e filtra quasi il 40% di tutto il traffico HTTP. Rileva anche gli attacchi informatici più sofisticati all'inizio della sequenza temporale grazie alle sue capacità euristiche intelligenti basate sull'alimentazione continua dei dati e alla conoscenza pratica e all'analisi del traffico di Servebolt. Accelerated Domains fa la sua magia senza degradare in alcun modo le prestazioni del tuo sito. In effetti, lo accelera.
Il motore di sicurezza proattivo di Accelerated Domains protegge automaticamente il tuo sito Web dagli attacchi DDoS. Con una capacità di rete di quasi 60 Tbps, è ben attrezzato per resistere anche ad alcuni dei più grandi attacchi DDoS su Internet. Allo stesso modo, fornisce un meccanismo di difesa efficace contro gli attacchi Bruteforce attraverso una funzione di limitazione automatica della frequenza in cui il numero di richieste generate da un'unica fonte viene identificato e limitato per prevenire attività dannose.
Professionisti
- Accelerated Domains attenua la maggior parte delle vulnerabilità di sicurezza associate a XMLRPC, quindi non è necessario disabilitarlo.
- Consente all'utente di continuare a utilizzare i plug-in come Jetpack, l'app WooCommerce e altri strumenti che dipendono dal file xmlrpc.php.
- Integrazione senza problemi su qualsiasi dominio, quindi non è necessario modificare il file
.htaccess
. - Non è necessario installare plug-in aggiuntivi.
contro
- Non ne ha.
Pensieri finali
Gli attacchi informatici stanno diventando sofisticati giorno dopo giorno e come webmaster e imprenditore, è fondamentale per te comprenderli e conoscere gli strumenti per affrontarli. La maggior parte degli attacchi viene evitata con un approccio proattivo come il monitoraggio e l'aggiornamento costanti del software o aggiungendo strumenti come i domini accelerati che fanno tutto ciò con il pilota automatico. Una volta abilitato, Accelerated Domains filtra in modo intelligente il traffico e intraprende le azioni necessarie dove necessario per mantenere il tuo server di origine e il tuo sito Web protetti dagli attacchi informatici.