WordPress sob pressão. Proteja com suas próprias mãos

19

WordPress – uma plataforma conveniente para a publicação de artigos e gerenciamento, baseada em um grande número de sites diferentes. Por causa de sua prevalência, esse CMS tem sido um petisco saboroso para os hackers.

Infelizmente, as configurações básicas não fornecem um nível adequado de proteção, deixando muitos buracos descobertos na inadimplência de crédito. Neste artigo, vamos passar por um típico site de hacking “modelo" no WordPress e mostrar como corrigir as vulnerabilidades identificadas.

Hoje, o sistema de gerenciamento de conteúdo WordPress é o mais popular. Sua participação é de 60,4% do número total de sites que usam mecanismos de CMS. Destes, segundo as estatísticas, 67,3% dos sites baseiam-se na versão mais recente do software. Enquanto isso, nos doze anos do web engine foram encontradas 242 vulnerabilidades de vários tipos (excluindo vulnerabilidades encontradas em plug-ins e temas de terceiros). Uma estatística de complementos de terceiros é ainda mais triste. Assim, a empresa realizou uma análise em 2350 modelos Revisium Russified para WordPress, retirados de diferentes fontes. Como resultado, eles descobriram que mais da metade (54%) estavam infectados com links Web Shell, backdoors, blackhat seo (“spam”) e scripts contendo vulnerabilidades críticas. Então sente-se, agora vamos entender como realizar uma auditoria no site WordPress e eliminar as deficiências encontradas. O uso será a versão 4.

Site de indexação

A primeira etapa em qualquer teste geralmente é coletar informações sobre o alvo. E, muitas vezes, ajuda a configuração incorreta do site de indexação, que permite que usuários não autorizados visualizem o conteúdo de determinadas seções do site e, por exemplo, obtenham informações sobre plug-ins e temas instalados, bem como acesso a dados confidenciais ou backups de bancos de dados. Para verificar quais diretórios são visíveis de fora, a maneira mais fácil de aproveitar o Google. Basta executar uma consulta do tipo Google Dorks site: example.com intitle: «index of» inurl: / wp-content /. O operador inurl: Você pode especificar os seguintes diretórios:

/wp-content/
/wp-content/languages/plugins
/wp-content/languages/themes
/wp-content/plugins/
/wp-content/themes/
/wp-content/uploads/

Se você pode visualizar o / wp-content / plugins /, o próximo passo é coletar informações sobre os plug-ins instalados e suas versões é bastante simplificado. Naturalmente, você pode impedir a indexação usando o arquivo robots.txt. Portanto, por padrão, ele não está incluído no pacote de instalação do WordPress, é necessário criar e se jogar no diretório raiz do site. Os manuais para criar e trabalhar com o arquivo robots.txt são muitos, então deixe esse assunto para si. Para dar apenas uma das opções possíveis:

User-Agent: *
Disallow: /cgi-bin
Disallow: /wp-login.php
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/
Disallow: /wp-content/plugins/
Disallow: /wp-content/themes/
Disallow: /?author=*
Allow: /

Se os arquivos armazenados em uma pasta de uploads forem informações confidenciais, adicione a esta linha de lista: Disallow: /wp-content/uploads/. Por outro lado, o arquivo robots.txt não é recomendado para colocar links para diretórios que foram criados especificamente para o armazenamento de informações confidenciais. Caso contrário, você facilita a tarefa do invasor, porque este é o primeiro lugar onde geralmente todos procuram por "yammy".

Plugins de segurança para WordPress
Conecte .htaccess

Para restringir o acesso a informações confidenciais é melhor usar o arquivo .htaccess – é um arquivo de configuração usado pelo Apache Web Server. Considere a possibilidade do arquivo do ponto de vista da segurança. Com ele você pode: negar acesso a diretórios e arquivos, bloquear vários scripts maliciosos e de injeção de SQL. Para este arquivo .htaccess padrão para CMS WordPress 4.1, você precisa expandir um pouco. Para fechar a lista de arquivos e pastas, adicione:

Options +FollowSymLinks -Indexes
 
RewriteCond %{QUERY_STRING} base64_encode[^(]*([^)]*) [OR]

Referências de bloco contendo a codificação Base64. Livre-se de links que contenham a tag <script>:

RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]

Para neutralizar scripts que tentam definir variáveis ​​globais ou alterar _REQUESTvariáveis ​​via URL:

RewriteCond %{QUERY_STRING} GLOBALS (=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST (=|[|%[0-9A-Z]{0,2})

Para combater as solicitações de bloqueio de injeção SQL para o URL, contendo determinadas palavras-chave:

RewriteCond %{query_string} concat.*( [NC,OR]
RewriteCond %{query_string} union.*select.*( [NC,OR]
RewriteCond %{query_string} union.*all.*select [NC]
RewriteRule ^(.*)$ index.php [F,L]

Para estragar a vida das ferramentas comuns de hacking, filtra certos user-agents:

SetEnvIf user-agent «Indy Library» stayout=1
SetEnvIf user-agent «libwww-perl» stayout=1
SetEnvIf user-agent «Wget» stayout=1
deny from env=stayout
Protege arquivos

Seria bom limitar e acessar arquivos críticos que armazenam a configuração ou apenas podem fornecer algumas informações a um invasor. Você pode selecionar os seguintes candidatos:

  • Wp-config.php, inclui um nome de banco de dados, nome de usuário, senha e prefixo de tabela;
  • .htaccess;
  • Readme.html e ru_RU.po, que contêm uma versão do WordPress;
  • Install.php.

Isto se faz do seguinte modo:

<Files file_name>
Order Allow,Deny
Deny from all
</Files>

O arquivo .htaccess, contendo essas linhas, deve estar no mesmo diretório onde o arquivo está protegido. Em seguida, não permita a listagem de usuários (lembre-se, um pouco mais acima, falamos sobre como é fácil obter uma lista de usuários?):

RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301]

Então, o que mais? Você pode permitir a entrada apenas de endereços IP especificados. Para fazer isso, crie um arquivo .htaccess em seu wp-admin com as seguintes regras:

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Access Control"
AuthType Basic
order deny,allow
deny from all
allow from 178.178.178.178  # IP Home computer
allow from 248.248.248.248  # IP Work computer

O método não é muito flexível e é aplicável somente se você estiver trabalhando com um número limitado de endereços IP fixos. Caso contrário, é recomendável definir uma senha para a pasta wp-admin panel por meio da hospedagem (se esta funcionalidade).

WWW

Um conjunto de regras 5G Blacklist e 6G Blacklist beta da Perishable Press, que permite lidar com solicitações de URL maliciosas predominantes para WordPress.

Medidas adicionais

Além do que foi dito acima, as seguintes recomendações podem ser adicionadas. Primeiro, use apenas as versões mais recentes do WordPress e seus componentes – isso eliminará as vulnerabilidades conhecidas. Em segundo lugar, remova os plugins e temas, que também podem ser proekspluatirovat. Em terceiro lugar, baixe os temas e plugins do WordPress de fontes confiáveis, como sites de desenvolvedores e o site oficial do WordPress. Além do PC doméstico, você precisa verificar periodicamente seu recurso da Web Antivírus da Web, por exemplo, AI-Bolit. Se você tiver acesso ao servidor web, o humor de direitos de acesso a arquivos e diretórios. Normalmente, o WordPress define todos os direitos na fase de instalação, mas, se necessário, pode ser definido manualmente chmod. Para diretório – chmod 755 para arquivos – chmod 644. Certifique-se de que os direitos do 777 são atribuídos apenas às instalações que precisam dele (às vezes é necessário para o funcionamento normal de alguns plug-ins). Se o WordPress parou de funcionar normalmente, experimente os direitos de acesso: primeiro tente 755, depois 766 e finalmente 777. Para que todo o arquivo htaccess exponha o chmod 444 (somente leitura). Se o site não funcionar mais, experimente valores de 400, 440, 444, 600, 640, 644.

Mova o arquivo wp-config.php. Este arquivo contém informações sobre as configurações, MySQL, o prefixo da tabela, chaves secretas e muito mais. Portanto, é necessário transferir para o arquivo não disponível na Internet. Se o site não estiver localizado na pasta public_html, arraste o arquivo wp-config.php no nível de pasta acima e o WordPress o encontrará automaticamente no diretório raiz (aplica-se se houver apenas um site de hospedagem neste CMS).

Para complicar o shell de transmissão, desative a capacidade de editar tópicos do console do WordPress. Para fazer isso, insira a seguinte linha no arquivo wp-config.php:

define ('DISALLOW_FILE_EDIT', true) ;

Outro ponto fraco – o arquivo install.php (na pasta wp-admin). Portanto, é melhor remover, bloquear ou alterar. Execute um dos seguintes procedimentos:

  1. Simplesmente exclua este arquivo – após a instalação, ele não é mais necessário.
  2. Negue o acesso ao arquivo via .htaccess.
  3. Renomeie o arquivo original install.php (por exemplo, install.php.old) e crie um novo arquivo install.php com o seguinte conteúdo:
<?php header("HTTP/1.1 503 Service Temporarily Unavailable"); ?>
<?php header("Status 503 Service Temporarily Unavailable"); ?>
<?php header("Retry-After 3600"); // 60 minutes ?>
<?php mail("[email protected]", "Database Error", "There is a problem with teh database!"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en"xmlns="http://www.w3.org/1999/xhtml"lang="en">
<head>
<meta http-equiv="Content-Type"content="text/html; charset=utf-8" />
<title>Error Establishing Database Connection</title>
</head>
<body>
<h1>Error Establishing Database Connection</h1>
<p>We are currently experiencing database issues. Please check back shortly. Thank you.</p>
</body>
</html>

Além de notificar os visitantes do site, esse script faz o seguinte:

  • Envia ao cliente e aos motores de busca o código de estado 503 (“Serviço indisponível”);
  • Especifica o intervalo de tempo em que os clientes e os buscadores podem retornar ao site (parâmetro ajustável);
  • Notifique por e-mail sobre um problema com o banco de dados para a ação apropriada.

O fato de que em versões anteriores do WordPress (< = 2.7.1) com falhas MySQL (por exemplo, ataque DDoS) CMS torna possível reinstalar. Além disso, pode acontecer e falha / dano a uma das tabelas do WordPress. Em particular, o ataque é possível quando a tabela danificada ks29so_options (no WordPress 2.6.2) ou ks29so_users (no WordPress 2.0.3 e 2.0.11). Ou seja, em diferentes versões do WP, tabelas diferentes na verificação principal do instalador – pode ser a tabela ks29so_options ou ks29so_users.

Por fim, desconecte o cadastro de novos usuários, caso isso não seja necessário. Se, no entanto, fornecer registro online, cuide para que novos usuários após o registro recebam privilégios mínimos.

Links Úteis
fechando

WordPress – um produto bastante grande e complexo, com seus prós e contras. Infelizmente, na configuração padrão, sua segurança é questionável, pois mesmo na presença de skriptkidis normais, a mão direita e a Internet poderão romper a proteção. Portanto, recomendamos verificar o recurso da mesma forma que fizemos no artigo. E se você encontrar falhas, corrija-as para reduzir ao mínimo as chances de um invasor comprometer um recurso.

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação