Ir para conteúdo
Marcio Rubens

Vulnerabilidade no WordPress pode tirar seu site do ar

Recommended Posts

No dia 5 de fevereiro de 2018, um pesquisador israelense, Barak Tawily, descobriu uma falha de segurança no WordPress. Essa vulnerabilidade é do tipo Denial of Service, ou negação de serviço. Um ataque do tipo Denial of Service, ou Negação de Serviço (DoS) consiste em causar lentidão ou indisponibilidade em um site na Internet.

 

Como a empresa negou corrigir o problema, a vulnerabilidade (CVE-2018-6389) permanece sem precedentes e afeta quase todas as versões do WordPress lançadas nos últimos nove anos, incluindo a versão mais recente do WordPress (Versão 4.9.2)

 

Para aqueles que não sabem, o arquivo load-scripts.php foi projetado para que os usuários de administração ajudem um site a melhorar o desempenho e carregar a página mais rapidamente ao combinar (no servidor) vários arquivos JavaScript em uma única solicitação.

No entanto, para fazer o "load-scripts.php" funcionar na página de login do administrador (wp-login.php) antes do login, os autores do WordPress não mantiveram qualquer autenticação no lugar, tornando o recurso acessível a qualquer pessoa.

 

wordpress-dos-attack.png.f05d74372a0c21ad1715ea3cbb4906ef.png

 

Dependendo dos plugins e módulos que você instalou, o arquivo load-scripts.php seletivamente chama arquivos JavaScript necessários passando seus nomes para o parâmetro "load", separados por uma vírgula, como no seguinte URL:

https://sua-wordpress-site.com/wp-admin/load-scripts.php?c=1&load=editor,common,user-profile,media-widgets,media-gallery

 

Ao carregar o site, o "load-scripts.php" (mencionado no cabeçalho da página) tenta encontrar cada nome de arquivo JavaScript fornecido no URL, anexar seu conteúdo em um único arquivo e depois enviá-lo para a web do usuário navegador


Como solucionar?


Na empresa DialHost Internet, onde faço parte da equipe de infraestrutura, optamos pela configuração diretamente no .htaccess e no wp.config.php das contas dos clientes que possuem o Wordpress.

 

.htaccess

<FilesMatchload-(scripts|styles).php>
Require all denied
<FilesMatch>

wp-config.php

define('CONCATENATE_SCRIPTS', false);

Já o pesquisador liberou uma correção para ser implementada pelos usuários do WordPress, que está disponível a todos

 

Links Relacionados
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-6389

https://thehackernews.com/2018/02/wordpress-dos-exploit.html?m=1

Editado por Marcio Rubens
Faltou um arquivo a ser configurado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora


  • Conteúdo Similar

    • Por Randys
      Criei um site em WordPress para um cliente porém ele deseja usuário tenha acesso a página através de senha. Utilizei a publicação nativa do WordPress para essa ação, porém a senha fica gravada na sessão, e o meu cliente deseja que sempre peça a senha quando a página for acessada então fiz um script em PHP para ao clicar na página solicitar a senha e ser redirecionado para a página em questão.
       
      Segue abaixo como eu fiz:
       
      página restrito.php
      <?php $Senha = '123'; if(isset($_POST['entra'])) { extract($_POST); if($senha=="$Senha") { echo "<script> alert('Logado'); location.href='http://eba.local/formulario-inscricao/'; </script>"; } else { echo "<script> alert('Dados inválidos'); location.href='?'; </script>"; } } ?> <form method="POST" action=""> <p><input name="senha" type="password"></p> <p><input value="Entrar" type="submit" name="entra"></p> </form>  
      página inscrição.php
      <?php include("restrito.php"); ?> porém estou com um problema que se o usuário acessar a página http://eba.local/formulario-inscricao/ direto pelo navegador não pede senha, como faço para ter uma validação nesta página? e impedir que ela seja aberta sem utilizar a senha?
       
       
    • Por sorafs
      Tenho um site principal e criei o multisite conforme instalação. Os sites criados estão normais. Minha dúvida é? Como fazer a chamada do post site 1 para o site principal. Existe script para inclusão na pagina inicial, ou pode usar algum plugin?
    • Por Dina Laramy Oliveira
      No site que administro pelo wordpress, estou querendo que apareça na página de noticias apenas parte da notícia de cada item,(exempl: o titulo da noticia,  uma frase a respeito da mesma e o botao de acesso a noticia completa ). já inseri todo o conteudo . Só preciso saber como que deixo só uma frase após o titulo, sem ser a noticia completa. Alguem sabe como me ajudar?
    • Por cpereiramt
                         Olá, estou tentando criar um componente personalizado para visual composer um dropdown, tenho o arquivo php pesquisa.php que cria o componente personalizado,  e tenho o arquivo Receita.php que retorna os dados para serem exibidos no componente, o problema é que quando executo a pagina não aparece o componente e nem os dados do arquivo Receita.php.
                         Pelo DEBUG do Wordpress apresenta a seguinte mensagem abaixo:
       
      [03-Feb-2018 02:33:07 UTC] PHP Fatal error:  Method ImmutableValueObject::__set() must take exactly 2 arguments in /var/www/html/wp-content/themes/n2go-2014/visual-composer/elements/Receita.php on line 33
                         Por fim segue o conteúdo dos arquivos PHP mencionados : 
      Pesquisa.php
      <?php include 'Receita.php'; class Pesquisa extends WPBakeryShortCode { } $atts = Integration::instance()->get_default_shortcode_attrs(); vc_map([ 'name' => __('N2Go Integrations', 'js_composer'), 'base' => 'n2go_integrations', 'icon' => 'icon-heart', 'category' => [__('Content', 'js_composer')], 'params' => array_map( function($key, $default){ return [ 'type' => 'Dropdown', 'heading' => ucwords(str_replace('_', ' ', $key)), 'param_name' => $key, 'value' => $default, ]; }, array_keys($att), $atts ), 'descrição' => 'alguma descrição', ]); ?>  
      Receita.php
      <?php /** * Utility base class that makes it easier to fill in readonly value objects. * @internal */ abstract class ImmutableValueObject { protected $data = []; final public function __construct(array $properties = []) { $this->data = array_merge($this->data, $properties); } final public function __get($name) { if (!array_key_exists($name, $this->data)) { throw new RuntimeException(sprintf('Undefined property: %s::%s', __CLASS__, $name)); } return $this->data[$name]; } final public function __set($name) { throw new RuntimeException(sprintf( '%s property: %s::%s', array_key_exists($name, $this->data) ? 'Readonly' : 'Undefined', __CLASS__, $name )); } } /** * @internal This is just a stub. * * @property string $id Unique ID of the integration * @property string $name Full name of integration, eg; 'WordPress' * @property string $abbreviation Short code of integration, eg; 'MAG' for Magento or 'WP' for WordPress * @property string $imageUrl Logo of the integration, usually in SVG format * @property string $helpUrl User guide URL - can be empty, in which case disable or hide help link * @property string $type A value from: 'CRM', 'CMS' or 'Webshop' * @property IntegrationSystem[] $items List of supported integrations (plugins or connectors bound to one system) */ class Integration extends ImmutableValueObject {} /** * @internal This is just a stub. * * @property string $id Unique ID of the integration system * @property string $edition Eg; 'v4.2', 'v3 and older' or 'All Versions' - used in combination with integration * @property int $position Used for ordering * @property IntegrationPlugin[] $plugins List of plugins that support this edition. * @property IntegrationConnector[] $connectors List of connectors that support this edition. */ class IntegrationSystem extends ImmutableValueObject {} /** * @internal This is just a stub. * * @property string $id Unique ID of the plugin * @property string $version Eg; '4000' or '4.0.0.0' - if it is 4 chars and no dots, then it should be formatted with dots between each char. * @property string $url Full URL for download the plugin. This may be a direct download or a page showcasing the plugin in a marketplace. */ class IntegrationPlugin extends ImmutableValueObject {} /** * @internal This is just a stub. * * @property string $id Unique ID of the connector * @property string $version Eg; '4000' or '4.0.0.0' - if it is 4 chars and no dots, then it should be formatted with dots between each char. */ class IntegrationConnector extends ImmutableValueObject {} /** @var Integration[] $sampleData */ $sampleData = [ new Integration([ 'id' => '1', 'name' => 'Amazon', 'abbreviation' => 'AM', 'imageUrl' => '//files-staging.newsletter2go.com/integration/amazon.svg', 'helpUrl' => 'https://www.newsletter2go.de/features/amazon-newsletter-integration/', 'type' => 'Webshop', 'items' => [ new IntegrationSystem([ 'id' => '1', 'edition' => 'All Versions', 'position' => 0, 'plugins' => [], 'connectors' => [ new IntegrationConnector(['id' => '1', 'version' => '3000']), ], ]) ] ]), new Integration([ 'id' => '2', 'name' => 'Lightspeed eCom', 'abbreviation' => 'LS', 'imageUrl' => '//files-staging.newsletter2go.com/integration/lightspeed.svg', 'helpUrl' => '', 'type' => 'Webshop', 'items' => [ new IntegrationSystem([ 'id' => '2', 'edition' => 'All Versions', 'position' => 0, 'plugins' => [], 'connectors' => [ new IntegrationConnector(['id' => '2', 'version' => '3000']), new IntegrationConnector(['id' => '3', 'version' => '3001']), new IntegrationConnector(['id' => '4', 'version' => '3002']), new IntegrationConnector(['id' => '5', 'version' => '3003']), ], ]) ] ]), new Integration([ 'id' => '3', 'name' => 'WordPress', 'abbreviation' => 'WP', 'imageUrl' => '//files-staging.newsletter2go.com/integration/wordpress.svg', 'helpUrl' => 'https://www.newsletter2go.com/help/integration-api/set-up-wordpress-plug-in/', 'type' => 'CMS', 'items' => [ new IntegrationSystem([ 'id' => '2', 'edition' => 'All Versions', 'position' => 0, 'plugins' => [ new IntegrationPlugin(['id' => '1', 'version' => '2100', 'url' => 'https://www.newsletter2go.de/plugins/wordpress/wp_v2_1_00.zip']), new IntegrationPlugin(['id' => '2', 'version' => '3000', 'url' => 'https://www.newsletter2go.de/plugins/wordpress/wp_v3_0_00.zip']), new IntegrationPlugin(['id' => '3', 'version' => '3003', 'url' => 'https://www.newsletter2go.de/plugins/wordpress/wp_v3_0_03.zip']), new IntegrationPlugin(['id' => '4', 'version' => '3005', 'url' => 'https://www.newsletter2go.de/plugins/wordpress/wp_v3_0_05.zip']), new IntegrationPlugin(['id' => '5', 'version' => '4006', 'url' => 'https://www.newsletter2go.de/plugins/wordpress/wp_latest.zip']), ], 'connectors' => [ new IntegrationConnector(['id' => '6', 'version' => '3000']), ], ]) ] ]), ]; return $sampleData;  
    • Por Allan Spillmann
      Bom dia.
       
      Este é meu primeiro questionamento no fórum.
       
      Tenho instalado em meus domínios o Contact Form 7, com o addon Conditional Fields. 
       
      A questão é a seguinte: para enviar o formulário é preciso preencher corretamente os campos, inclusive os campos numéricos como CPF e CNPJ. Se tentar preencher com letras no campo designado para números não irá conseguir. Porém venho recebendo muito SPAM que parece ser um script, pois ele consegue preencher os campos numéricos com letras. Vou anexar um print para verem o SPAM.
       
      Além do addon Conditional Fields utilizo o plugin de máscara para CNPJ, CPF e Telefone, que formata os números corretamente nos devidos campos.
       
      Este é um dos domínios que utiliza o Contact Form 7: http://www.barradeancoragem.com.br/contato/
       
      Gostaria de saber como sanar este problema sem precisar utilizar Captcha.

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: