Guia de segurança de WordPress (III)

Este artigo já é o terceiro de uma série que será publicada aqui, em WWWhatsnew.com, da Equipe de The Shock family: iconshock, wpthemegenerator e jqueryslidershock, responsáveis também por bypeople.com.

Podem ler a série enteira aqui.

wordpress

Aumentando o nível: Problemas complexos de segurança

Os problemas abaixo são relacionados à segurança que afeta atualmente WordPress e requer que tenhamos um conhecimento um pouco mais completo da ferramenta.

Ataques exploit: TimThumb e Uploadify


Talvez já tenha ouvido falar dele, basicamente o termo exploit se refere a um ataque que é feito aproveitando uma vulnerabilidade de um sistema para esperar um comportamento errado (negação de serviço, acesso não autorizado, etc.)

O código de TimThumb é vulnerável a ataques desta categoria devido a uma de suas funções que permite ao usuário subir imagens de diferentes sites e ao mesmo tempo permite a estes sites o acesso à instalação. As imagens são guardadas em um diretório que está na raíz da instalação; o hacker simplesmente teria que subir uns arquivos para poder acessar aos recursos da instalação que deseja.

O mesmo problema acontece com Uploadify, como se pode deduzir pelo nome, este plugin permite aos usuários subir qualquer tipo de arquivo que queira ao site. Se isso não é controlado apropriadamente, um hacker pode subir um script em PHP que lhe permita tomar controle do site para fazer o que quiser. Isso pode parecer um pouco complexo porém existem pessoas que podem fazê-lo e aproveitam qualquer oportunidade. O problema não é WordPress mas sim os plugins usados. A maioria dos problemas deste tipo podem ser mantidos longe simplesmente fazendo uma atualização apropriada deles, e, se possível, sempre revisar as críticas dos usuários.

Um grande problema: injeção SQL

Até agora, o problema mais comum é que a instalação de WordPress tenha algumas falhas de segurança dependendo da versão; falhas que podem ser corregidas se o usuário tiver conhecimento sobre eles. A injeção de código SQL é feita sem a autorização do administrador e assegura ao atacante privilégios sobre dados sigilosos como usuários e senhas. O atacante pode tomar controle da base de dados e destruir a informação nela, por isso a recomendação principal é sempre que seja possível fazer backups, assim, no caso hipotético de um ataque sempre pode se apoiar neles. Embora também existam opções para assegurar seus arquivos.

Pode configurar o servidor Apache para que feche todas as portas e, desse modo, negar o acesso ao atacante. Para que possa reforçar seu arquivo .htaccess, aqui está o código que ajuda que estes ataques de injeção de código não passem.

Isso deterá a maioria de atacantes amateur, neófitos, e spammers usando scripts como PHP r57 (que é um script constantemente atualizado em páginas de hacking para ganhar acesso a arquivos críticos) e similares; sem dúvida, há outros tipos de ataques.

Edição de Arquivos

O desktop de WordPress permite por padrão a edição dos arquivos .php como por exemplo em temas e plugins, esta é muitas vezes a primeira ferramenta que um atacante usará se for capaz de entrar no desktop, porque permite execução de código; sem dúvida, WordPress também permite a opção de desativar a edição desde o desktop. Simplesmente colocando esta linha em wp-config.php se poderá remover a opção para editar plugins, arquivos e temas para todos os usuários.

define(‘DISALLOW_FILE_EDIT’, true);

Isso não poderá impedir que o atacante suba arquivos maliciosos, porém te dará uma ajuda em parar uma boa parte dos ataques.

O arquivo wp-config

O arquivo wp-config é o que guarda os detalhes confidenciais de WordPress, este arquivo contém o nome, endereço e password da base de dados que guarda toda a informação de usuário; entradas e outros conteúdos importantes, e é por portanto, um alvo importante para um atacante.

Entre as opções que existem para protegê-lo estão: movê-lo ao diretório superior ao da instalação; também usar SAL para hacer para um atacante ainda mais difíceis as coisas; esta página gera cadeias hash bastante completas que podem ser anexadas ao arquivo wp-config.

Ataques de força bruta

Esta classe de ataques se baseia em tentar tantas combinações quanto possíveis, isso é feito utilizando software especializado e na maioria das vezes usando computação distribuida (não só de um computador como as vezes centenas deles atacando ao mesmo tempo); o qual reduz o tempo necessário para encontrar uma senha; a gravidade disso é tal em certos casos que os ataques de computação distribuída são feitos por centenas de equipamentos que uma vez infectados, e sem o conhecimento do administrador, são zumbificados para enviar ataques através da rede.

Sem dúvida também há defesas para parar esse tipo de ataque; pode implementar métodos como:

– Definir um limite de tentativas: há ferramentas que ajudam a definir o número de tentativas de acesso antes de desabilitar uma conta por uma hora por exemplo, assim, o atacante necessitará uma quantidade muitíssimo maior de tempo para descobrir a senha. Para WordPress, há 3 plugins: Limit Login Attempts, Better WP security, e Login Security Solution; dos quais falaremos mais adiante.

– Usar senhas fortes: uma senha forte contém números, combinações de letras maiúsculas e minúsculas assim como símbolos; quanto mais extensa, melhor; também convém que a senha não esteja relacionada com o site. Há sites como este gerador de senhas que usa código javascript para gerar um password e mostrá-lo na tela, o site não envia passwords através da internet e além das dicas úteis de mnemotecnia para recordar o password. Também pode usar frases como senha (por exemplo, pA55w0rDdE3j3mp10, seria algo relativamente fácil de lembrar e bastante difícil de quebrar).

– Administradores de senhas: Se tiver que gerenciar 10, 15 , 25 ou mais senhas, deveria considerar um administrador de senhas. Keepass (gratuito), LastPass (gratuito com opção de pagamento) e 1password (pagamento) são opções recomendadas por WordPress e na verdade que valem cada centavo.

Também lembrar de mudar o nome por padrão do administrador (em WordPress geralmente é admin) porque pode tornar as coisas mais fáceis ao atacante; as versões mais recentes de WordPress permitem mudar o usuário por ´padrão porém, se já instalou sem fazer a mudança, o que pode fazer é criar uma nova conta com privilégios de administrador e apagar a anterior.

Acessos diretos e URL por padrão

Outro elemento de WordPress que pode ser mudado para adicionar um nível extra de segurança é a URL de acesso ao site; porque se pegarmos um exemplo hipotético no qual o atacante tenha roubado sua senha, ele só precisaria do endereço do ingresso e pronto! estaria dentro; sem a direção de ingresso a vantagem continua sendo sua. Há Plugins que permitem a mudança da URL de acesso como Hide Login, que de resto permite criar uma URL personalizada para facilitar a memorização da mesma enquanto se dificulta o acesso de terceiros.

O arquivo .htaccess

Se tem um servidor apache, o arquivo .htaccess é a primeira linha de defesa contra os hackers, há uma grande variedade de regras que podem ser aplicadas dependendo de suas necessidades para alcançar este objetivo; as seguintes linhas contém regras sugeridas para ser agregadas ao .htaccess

Estas linhas se encarregarão de assegurar os arquivos da instalação de WordPress

Estas linhas se encarregarão de outras funções:

Prefixo wp_

É o prefixo por padrão das tabelas da base de dados. No qual a segurança se refere, quanto menos informação se der ao atacante, por mais tempo se pode permanecer “vivo”; na hora de fazer uma nova instalação de WordPress, a mudança deste prefixo é fácil, já que o instalador nos pergunta por um prefixo. Se já tiver instalado deverá mudar estes prefixos manualmente, porém, deve saber muito bem o que está fazendo; ou de outro modo, melhor usar ferramentas profissionais como Better WP Security.

Combatendo scripts r57 e similares

Como foi dito anteriormente, o script r57 dá ao atacante um monte de possibilidades e capacidades; porém, isso só funcionará até que o Shell esteja em nosso servidor; e podemos evitar que funcionem com alguns comandos que busquem os arquivos .PHP localizados na pasta www; logo, nestes arquivos, o comando buscará qualquer menção de r57 não só no nome do arquivo como também no conteúdo. Se for encontrado, o comando omitirá mostrar resultados duplicados; sem dúvida, apagará esses arquivos permanentemente e sem fazer perguntas. Podemos buscar também por arquivos .TXT em vez de .PHP.

Uma manera muito efetiva de encontrar scripts maliciosos é usando CXS, que é um software comercial realmente excelente.