Um guia completo sobre xmlrpc.php no WordPress (O que é, riscos de segurança, como desativá-lo)

Publicados: 2020-07-06

A especificação XML-RPC WordPress foi desenvolvida para padronizar a comunicação entre diferentes sistemas, o que significa que aplicativos fora do WordPress (como outras plataformas de blogs e clientes de desktop) podem interagir com o WordPress.

Esta especificação faz parte do WordPress desde o seu início e fez um trabalho muito útil. Sem ele, o WordPress estaria em seu próprio silo, separado do resto da internet.

No entanto, xmlrpc.php tem suas desvantagens. Ele pode introduzir vulnerabilidades no seu site WordPress e agora foi substituído pela API REST do WordPress, que faz um trabalho muito melhor ao abrir o WordPress para outros aplicativos.

Neste post, explicaremos o que é xmlrpc.php, por que você deve desativá-lo e ajudar a identificar se ele está sendo executado em seu site WordPress.

Preparar? Vamos mergulhar!

O que é xmlrpc.php?

XML-RPC é uma especificação que permite a comunicação entre o WordPress e outros sistemas. Ele fez isso padronizando essas comunicações, usando HTTP como mecanismo de transporte e XML como mecanismo de codificação.

O XML-RPC é anterior ao WordPress: estava presente no software de blogs b2, que foi bifurcado para criar o WordPress em 2003. O código por trás do sistema está armazenado em um arquivo chamado xmlrpc.php , no diretório raiz do site. E ainda está lá, embora o XML-RPC esteja amplamente desatualizado.

Nas primeiras versões do WordPress, o XML-RPC era desativado por padrão. Mas desde a versão 3.5, ele está habilitado por padrão. A principal razão para isso foi permitir que o aplicativo móvel do WordPress converse com sua instalação do WordPress.

Se você usava o aplicativo móvel do WordPress antes da versão 3.5, talvez se lembre de ter que habilitar o XML-RPC em seu site para que o aplicativo possa postar conteúdo. Isso ocorreu porque o aplicativo não estava executando o próprio WordPress; em vez disso, era um aplicativo separado se comunicando com seu site WordPress usando xmlrpc.php.

Mas não foi apenas para o aplicativo móvel que o XML-RPC foi usado: ele também foi usado para permitir a comunicação entre o WordPress e outras plataformas de blogs, permitiu trackbacks e pingbacks e alimentou o plug-in Jetpack que vincula um WordPress auto-hospedado site para WordPress.com.

Mas como a API REST foi integrada ao núcleo do WordPress, o arquivo xmlrpc.php não é mais usado para essa comunicação. Em vez disso, a API REST é usada para se comunicar com o aplicativo móvel do WordPress, com clientes de desktop, com outras plataformas de blog, com o WordPress.com (para o plug-in Jetpack) e com outros sistemas e serviços. A gama de sistemas com os quais a API REST pode interagir é muito maior do que a permitida pelo xmlrpc.php. Além disso, há muito mais flexibilidade.

Como a API REST substituiu o XML-RPC, agora você deve desabilitar o xmlrpc.php em seu site. Vamos ver por quê.

Por que você deve desabilitar xmlrpc.php

A principal razão pela qual você deve desabilitar o xmlrpc.php em seu site WordPress é porque ele apresenta vulnerabilidades de segurança e pode ser alvo de ataques.

Agora que o XML-RPC não é mais necessário para se comunicar fora do WordPress, não há motivo para mantê-lo ativo. É por isso que é aconselhável tornar seu site mais seguro desabilitando-o.

Se o xmlrpc.php é uma responsabilidade de segurança e não funciona mais, por que não foi removido do WordPress por completo?

A razão para isso é porque um dos principais recursos do WordPress sempre será a compatibilidade com versões anteriores. Se você estiver gerenciando bem seu site, saberá que manter o WordPress atualizado, assim como quaisquer plugins ou temas, é essencial.

Mas sempre haverá proprietários de sites que não querem ou não podem atualizar sua versão do WordPress. Se eles estiverem executando uma versão anterior à API REST, eles ainda precisarão acessar xmlrpc.php.

Vejamos as vulnerabilidades específicas com mais detalhes.

Ataques DDoS via XML-RPC Pingbacks

Uma das funções que xmlrpc.php habilitava eram pingbacks e trackbacks. Estas são as notificações que aparecem nos comentários do seu site quando outro blog ou site tem links para o seu conteúdo.

A especificação XML-RPC foi o que possibilitou essa comunicação, mas foi substituída pela API REST (como já vimos).

Se o XML-RPC estiver habilitado em seu site, um hacker pode potencialmente montar um ataque DDoS em seu site explorando xmlrpc.php para enviar um grande número de pingbacks para seu site em pouco tempo. Isso pode sobrecarregar seu servidor e colocar seu site fora de ação.

Ataques de força bruta via XML-RPC

Cada vez que o xmlrpc.php faz uma solicitação, ele envia o nome de usuário e a senha para autenticação. Isso apresenta uma responsabilidade de segurança significativa e é algo que a API REST não faz. Na verdade, a API REST usa OAuth que envia tokens para autenticação em vez de nomes de usuário ou senhas.

Como o xmlrpc.php envia informações de autenticação com cada solicitação, os hackers podem usá-lo para tentar acessar seu site. Um ataque de força bruta como esse pode permitir que eles insiram conteúdo, excluam código ou danifiquem seu banco de dados.

Se um invasor enviar solicitações suficientes para o seu site, cada uma com um par de nome de usuário e senha diferente, há uma chance de que ele acerte o caminho certo, dando a ele acesso ao seu site.

É por isso que, se você estiver executando uma versão atualizada do WordPress, que usa a API REST para se comunicar com sistemas externos, você deve desabilitar o xmlrpc.php . Não é necessário e pode tornar seu site vulnerável.


O xmlrpc.php está sendo executado no seu site WordPress?

A primeira coisa que você precisa fazer é identificar se xmlrpc.php está sendo executado em seu site WordPress.

Este não é um caso simples de verificar se o arquivo está lá: ele faz parte de todas as instalações do WordPress e estará presente mesmo se o XML-RPC estiver desabilitado.

Para verificar se o xmlrpc.php está habilitado em seu site, use o Serviço de Validação de XML-RPC do WordPress. Isso verificará seu site e informará se xmlrpc.php está ativado.

Serviço de validação XML-RPC do WordPress
Serviço de validação XML-RPC do WordPress

Aqui está o resultado que obtive quando verifiquei este site no serviço.

Verificação de Kinsta XML-RPC
Verificação de Kinsta XML-RPC

Isso mostra que xmlrpc.php foi desabilitado em kinsta.com. Portanto, se você executar a verificação e descobrir que o xmlrpc.php ainda está ativado em seu site, como desativá-lo?

Como desativar xmlrpc.php

Existem três maneiras de desabilitar o xmlrpc.php:

Vamos dar uma olhada em cada um individualmente.

Como desativar xmlrpc.php com um plug-in

Instalar um plugin para desabilitar xmlrpc.php é a maneira mais fácil de fazer isso. O plug-in Desativar XML-RPC o desativará completamente. Aqui está como você usá-lo.

Meu ponto de partida é meu próprio site, no qual o xmlrpc.php está habilitado. Você pode ver isso através da verificação que fiz:

Site de Rachel McCollin - verificação XML-RPC
Site de Rachel McCollin – verificação XML-RPC

Instale o plugin através da tela Plugins no administrador do WordPress e ative-o.

Você não precisa fazer mais nada: ativar o plug-in fará com que ele desative o XML-RPC. Agora, se eu executar uma verificação no meu site, recebo um resultado diferente:

Site de Rachel McCollin - segunda verificação XML-RPC
Site de Rachel McCollin – segunda verificação XML-RPC

É simples assim!

Desabilitar Pingbacks XML-RPC com um Plugin

Mas e se você quiser desabilitar alguns aspectos do xmlrpc.php e não outros? O plug-in Desativar XML-RPC Pingback permite desativar apenas a funcionalidade de pingback, o que significa que você ainda tem acesso a outros recursos do XML-RPC, se precisar deles.

O plugin funciona da mesma forma que o plugin Disable XML-RPC: basta instalar, ativar e funcionará.

Configurar ativação de API XML-RPC e REST com um plug-in

Se você deseja um controle mais refinado de como o xmlrpc.php e a API REST são configurados em seu site, você pode instalar o plug-in REST XML-RPC Data Checker.

Depois de instalar e ativar este plug-in, vá para Configurações > REST XML-RPC Data Checker e clique na guia XML-RPC .

Verificador de dados REST XML-RPC
Verificador de dados REST XML-RPC

Isso permite configurar exatamente quais aspectos do xmlrpc.php estão ativos em seu site.

Precisa de uma hospedagem extremamente rápida, segura e amigável ao desenvolvedor? Kinsta é construído com os desenvolvedores do WordPress em mente e fornece muitas ferramentas e um painel poderoso. Confira nossos planos

Alternativamente, você pode simplesmente desligá-lo completamente. E se você também deseja controlar a API REST, o plug-in oferece outra guia para isso.

Como desativar xmlrpc.php sem um plugin

Se você preferir não instalar outro plugin em seu site, você pode desabilitar o xmlrpc.php adicionando algum código em um filtro, ou no seu arquivo .htaccess. Vejamos os dois métodos.

Desabilitar xmlrpc.php por meio de um filtro

Uma opção aqui é usar o filtro xmlrpc_enabled para desabilitar xmlrpc.php. Adicione esta função a um plugin e ative-o em seu site:

 add_filter( 'xmlrpc_enabled', '__return_false' );

Você pode adicionar isso ao seu arquivo de funções do tema, mas é uma prática melhor escrever um plugin.

A outra opção tem a ver com a edição do seu arquivo .htaccess, que está disponível com provedores de hospedagem que usam Apache, conectando-se ao servidor do seu site via FTP ou cPanel.

Desabilite xmlrpc.php através do arquivo .htacess

Em seu arquivo .htaccess , adicione este código:

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

Certifique-se de fazer uma cópia do arquivo antigo antes de fazer isso, caso você tenha algum problema.

Faça com que seu provedor de hospedagem desabilite xmlrpc.php

Alternativamente, alguns provedores de hospedagem desabilitarão o xmlrpc.php se um ataque for detectado.

Na Kinsta, quando um ataque via XML-RPC é detectado, um trecho de código é adicionado automaticamente ao arquivo Nginx.config:

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

Isso produzirá um erro 403 e interromperá o ataque em suas trilhas.

Se você estiver fazendo isso sozinho, é melhor usar um dos métodos acima. Mas antes de fazer isso, sempre verifique primeiro com seu provedor de hospedagem.

Quando você precisa habilitar xmlrpc.php?

Pode haver algumas ocasiões em que você precisa habilitar xmlrpc.php em seu site WordPress ou quando você não deve desabilitá-lo completamente.

Esses são:

  • Você não está executando a API REST (não recomendado, mas necessário em algumas situações), mas precisa se comunicar entre seu site WordPress e outros sistemas.
  • Você não consegue atualizar o WordPress para a versão 4.4 ou superior, então não tem acesso à API REST. Isso pode ser devido a restrições em sua configuração de hospedagem (nesse caso, eu mudaria de provedor de hospedagem) ou incompatibilidade de tema ou plugins (nesse caso, eu os substituiria ou atualizaria).
  • Você está trabalhando com um aplicativo externo que não pode acessar a API WP REST, mas pode acessar XML-RPC (a longo prazo, aconselho atualizar esse aplicativo ou alternar para um aplicativo compatível com REST).

É isso! Nenhuma dessas razões é particularmente boa para manter a especificação XML-RPC ativada.

A única razão pela qual ainda está no WordPress é para compatibilidade com versões anteriores e você o usaria apenas se estiver trabalhando com sistemas desatualizados. Para quem deseja manter seus sites atualizados e trabalhar com a tecnologia mais recente, desabilitar o xmlrpc.php é o caminho a percorrer.

XML-RPC já foi uma parte essencial do WordPress. Agora ele representa um risco de segurança - Este guia mostrará exatamente como desativá-lo em seu site. Clique para Tweetar

Resumo

A especificação XML-RPC foi desenvolvida antes mesmo do WordPress ser criado, como um meio para o WordPress se comunicar com sistemas e aplicativos externos. Ele tem falhas de segurança inerentes e pode tornar seu site vulnerável a ataques.

Agora que a API REST permite que seu site se comunique com outros aplicativos, você pode desativar com segurança o xmlrpc.php. Se você seguir as etapas acima, ao desativá-lo, você melhorará a segurança do seu site.