Teste de penetração para sites WordPress

Publicados: 2020-03-20

O WordPress alimenta muitos sites na Internet. Portanto, não é surpresa que invasores experientes e “script-kiddies” gostem de segmentar sites WordPress. Seja você um webmaster ou um profissional de segurança, quando encarregado de avaliar a postura de segurança de um site WordPress, tende a ajudar a estar ciente das armadilhas de segurança comuns que os invasores normalmente aproveitam. Também é importante usar as ferramentas corretas de teste de penetração.

Neste artigo, abordarei uma série de falhas de segurança comuns, más práticas e informações úteis que um invasor pode abusar em muitas instalações do WordPress. Também vou destacar uma série de ferramentas que você pode usar para ajudá-lo a automatizar o teste de penetração do WordPress.

Atenção — Execute apenas testes de penetração de segurança em sistemas que pertencem a você ou para os quais você recebeu permissão. Entenda os limites do acesso que lhe foi concedido e permaneça dentro desses limites.

Problemas comuns de segurança e más práticas do WordPress

Versões desatualizadas do código do WordPress

A execução de versões antigas do núcleo do WordPress contendo vulnerabilidades de segurança é sem dúvida uma das falhas de segurança mais comuns relacionadas ao WordPress. Embora as versões mais recentes do WordPress facilitem a atualização para a versão mais recente, não é incomum que os sites mais antigos do WordPress fiquem para trás.

Executar uma versão antiga do WordPress na Internet é uma bomba-relógio. Muitas versões antigas do WordPress contêm vulnerabilidades de segurança. Muitos desses problemas de segurança são comumente explorados em massa por invasores.

Ao auditar um site WordPress para vulnerabilidades de segurança, isso normalmente é uma das primeiras coisas que você deseja verificar. Felizmente para os invasores, por padrão, o WordPress adiciona uma metatag HTML contendo a versão do WordPress que está sendo usada.

<meta name=”generator” content=”WordPress 4.8.11″ />

Saber que uma instalação do WordPress está executando uma versão antiga pode dar a um invasor a oportunidade de aproveitar uma vulnerabilidade conhecida. Use o banco de dados de vulnerabilidades de segurança CVE para pesquisar problemas de segurança conhecidos no núcleo do WordPress.

Versões desatualizadas de temas e plugins do WordPress

O núcleo do WordPress é muito seguro. Milhões de usuários e hackers mal-intencionados testam e revisam completamente o código. Isso significa que, na maioria das vezes, os problemas de segurança são detectados e corrigidos antes de serem abusados ​​pelos invasores. No entanto, não é imune a vulnerabilidades de segurança. Infelizmente, isso não se aplica aos milhares de plugins e temas do WordPress.

Qualquer pessoa pode enviar um tema ou plugin e disponibilizá-lo para qualquer administrador do WordPress baixar e usar. Claro, isso não significa que todos os plugins do WordPress sejam mal codificados e cheios de vulnerabilidades – longe disso. No entanto, vulnerabilidades conhecidas expõem uma enorme superfície de ataque ao WordPress que você deve estar ciente ao realizar um teste de penetração do WordPress.

A ferramenta mais rápida e, sem dúvida, mais abrangente a ser usada para identificar plugins e temas vulneráveis ​​​​do WordPress é usar o WPScan. O WPScan é um scanner de segurança WordPress de caixa preta de código aberto frequentemente usado para verificar sites WordPress em busca de vulnerabilidades conhecidas no núcleo, plugins e temas.

Ao usar o WPScan durante um pentest, certifique-se de se inscrever e configurá-lo para usar uma chave de API do Banco de Dados de Vulnerabilidade do WPScan . O Banco de Dados de Vulnerabilidades do WPScan é um banco de dados mantido pelos autores do WPScan com as últimas vulnerabilidades conhecidas e suas respectivas versões.

Plugins de impressão digital com WPScan

Para saber mais sobre o WPScan e como executar diferentes tipos de varreduras, consulte introdução ao WPScan.

Versões antigas de PHP e servidores web

O WordPress é um aplicativo web PHP e, portanto, todas as práticas recomendadas de segurança PHP também se aplicam ao WordPress. Durante um teste de penetração do WordPress, esta é uma das primeiras coisas a procurar. As instalações do WordPress que executam versões antigas de PHP ou software de servidor web (por exemplo, Nginx, Apache HTTP Server, IIS…) podem expor o site a todos os tipos de ataques diferentes.

É muito fácil descobrir qual servidor web e versão do PHP um site WordPress está usando. Em muitos casos, tudo o que um invasor precisa fazer é simplesmente prestar muita atenção nos cabeçalhos de resposta HTTP retornados do site. Você mesmo pode enviar uma solicitação com curl:

$ curl -s -D – http://167.71.67.124/ -o /dev/null | grep -i “Servidor\|X-Powered-By”

Procure os cabeçalhos HTTP Server e X-Powered-By na resposta:

Servidor: Apache/2.4.29 (Ubuntu)
X-Powered-By: PHP/5.5.9

Dependendo da versão e da configuração do site, um invasor pode usar vulnerabilidades conhecidas (por exemplo, https://www.cvedetails.com/vendor/74/PHP.html) para obter informações adicionais sobre um alvo. Essas informações podem ajudar a escalar um ataque ou até mesmo executar comandos diretamente no servidor web.

Enumeração de nome de usuário do WordPress

A menos que um administrador do sistema tenha tomado medidas para evitá-lo, por padrão, o WordPress é vulnerável a ataques de enumeração de usuários. Ataques de enumeração de usuários do WordPress, procure diferenças sutis em como o WordPress responde a solicitações específicas. Dependendo da resposta, o invasor pode determinar se um usuário existe ou não, permitindo que um invasor potencialmente use essas informações como parte de um ataque maior.

A seguir está uma captura de tela do WPScan realizando um ataque de enumeração de nome de usuário do WordPress.

Enumeração de usuários WPScan e quebra de senha

Erros de configuração do servidor web

Listagem de diretórios e outras configurações incorretas do servidor web

Além de software desatualizado, deve-se sempre avaliar possíveis configurações incorretas do servidor web. Um servidor web mal configurado pode deixar o site WordPress vulnerável à exploração. Isso pode acontecer mesmo se o servidor web estiver executando o software mais recente. Aqui estão algumas configurações incorretas típicas do servidor web:

Listagem de diretórios ativada

A listagem de diretórios é uma configuração incorreta muito comum. Os servidores da web Apache têm isso ativado por padrão, e isso não ajuda. A listagem de diretórios simplesmente lista arquivos e diretórios em um servidor web em uma interface gráfica quando não há arquivo de índice.

Listagem de diretórios habilitada em um servidor web Apache

Embora isso por si só não seja particularmente prejudicial, fornece a um invasor a possibilidade de navegar pelo conteúdo do diretório do seu servidor web. Isso pode permitir que ele veja todos os arquivos em seu site, a maioria dos quais não deveriam ser acessíveis publicamente, mas são, como backups, senhas e arquivos de configuração.

Arquivos de backup

Os arquivos de backup são outra configuração incorreta do servidor web muito comum. Normalmente, isso ocorre quando os administradores do sistema editam manualmente os arquivos nos sistemas de produção.

Um exemplo comum de arquivos de backup que expõem informações potencialmente confidenciais podem ser cópias de backup de arquivos PHP. Às vezes, os arquivos PHP contêm dados de configuração importantes — como o arquivo wp-config.php do WordPress.

Veja o seguinte cenário — um administrador do WordPress precisa fazer alterações no wp-config.php. Em vez de seguir as melhores práticas e manter uma cópia do arquivo em outro lugar que não seja o servidor web, eles fazem uma cópia do wp-config.php ativo, nomeando o backup wp-config.php.bak. Vamos agora supor que o administrador do sistema esqueceu de remover esse arquivo, o que acontece com mais frequência do que pensamos.

Um invasor agora pode ler o arquivo simplesmente solicitando http://www.example.com/wp-config.php.bak . O invasor pode ler o arquivo porque sua extensão não é mais .php. Assim, o mecanismo PHP o ignora e o servidor web o serve como um arquivo de texto. Agora, o invasor conhece as credenciais do banco de dados do WordPress, os tokens secretos e qualquer outra informação de configuração confidencial que você salvou nesse arquivo.

Arquivos temporários

Semelhante aos arquivos de backup, os arquivos temporários no local errado podem expor dados potencialmente confidenciais. Tomando wp-config.php como exemplo mais uma vez. Se um administrador do sistema tiver que editar este arquivo usando um editor de texto e, por algum motivo, o programa não sair corretamente, há uma boa chance de o editor deixar arquivos temporários. Por exemplo, o popular editor de linha de comando Vim armazena arquivos de backup com a extensão de arquivo *.ext~ junto com um arquivo *.ext.swp. Os arquivos swp são usados ​​como um arquivo de bloqueio. Eles também contêm todo o histórico de desfazer/refazer e outras informações internas que o Vim precisa.

Portanto, no caso de uma falha, o Vim deixa para trás um arquivo wp-config.php.ext~ que pode ser acessível em texto simples como arquivos de backup porque não termina com uma extensão de arquivo *.php. Arquivos temporários desse tipo não são exclusivos do Vim — o Emacs (outro editor de texto de linha de comando popular) também salva arquivos temporários semelhantes, e inúmeras outras ferramentas também.

Atenção - use um plug-in de monitoramento de integridade de arquivos para seu site para ser alertado sobre todas as alterações de arquivos, incluindo arquivos temporários e de backup. Se você não estiver familiarizado com essa tecnologia, leia nossa introdução ao monitoramento de integridade de arquivos para WordPress.

MySQL exposto

De longe, um dos erros de configuração mais graves que um administrador de sistema pode fazer é deixar seu servidor de banco de dados WordPress MySQL aberto à Internet. Por que isso pode parecer loucura, isso acontece provavelmente mais do que você pensa. Abaixo está uma captura de tela do Shodan, um mecanismo de pesquisa para dispositivos conectados à Internet.

Os resultados no Shodan para servidores MySQL

Claro, só porque o MySQL é exposto pela Internet não significa que alguém possa se conectar a ele e acessar o banco de dados do WordPress. No entanto, especialmente se usado em combinação com outros ataques, como uma senha vazada por meio de um backup do wp-config.php ou adivinhar uma senha fraca, isso pode levar a um cenário de desastre.

Uma vez no controle de um banco de dados do WordPress, é o fim do jogo para uma instalação do WordPress. Tudo o que um invasor precisa fazer é redefinir uma senha de administrador. Em seguida, eles praticamente assumem o controle total do seu site WordPress e, potencialmente, até mesmo do servidor em que ele está sendo executado, instalando intencionalmente plugins maliciosos.

Executando serviços desnecessários

Outro problema comum de configuração incorreta do servidor web é a configuração padrão. Muitos administradores executam a configuração padrão e não desabilitam os serviços de que não precisam. Na maioria dos casos, as instalações padrão têm muitos serviços desnecessários em execução, a maioria dos quais, se não protegidas, expõem o servidor web a ataques.

Ferramentas de pentesting para testadores de penetração do WordPress e profissionais de segurança

Os testadores de penetração usam uma variedade de ferramentas para automatizar seu trabalho e suas técnicas. A automação ajuda a reduzir o tempo necessário para realizar uma avaliação de segurança/teste de penetração.

Kali Linux

As ferramentas que se usa variam muito. Depende da preferência pessoal e do problema em questão. No entanto, um bom ponto de partida é ter uma variedade de ferramentas à sua disposição, pré-instaladas.

Kali Linux

Kali Linux, anteriormente conhecido como BackTrack, é a distribuição Linux de teste de penetração de código aberto. O Kali Linux vem com uma série de ferramentas pré-instaladas e pré-configuradas. É útil tanto para usuários iniciantes que desejam começar rapidamente quanto para testadores de penetração experientes. O Kali Linux está disponível gratuitamente e pode ser executado em uma máquina virtual.

Nmap

Este scanner gratuito é um dos scanners mais básicos e versáteis no arsenal de qualquer pentester. O Nmap é basicamente um scanner de portas. No entanto, ele pode ser estendido para fazer todos os tipos de varredura por meio de sua linguagem de script NSE.

O scanner NMAP

WPScan

WPScan (abordado anteriormente neste artigo) é um scanner de segurança WordPress de código aberto. Ele verifica vulnerabilidades conhecidas do WordPress – tanto no núcleo do WordPress quanto nos plugins e temas do WordPress.

Scanner WPScan

O WPScan pode realizar uma série de testes de caixa preta. Ou seja, sem acesso ao código fonte. Como resultado, o WPScan é ótimo para encontrar vulnerabilidades do WordPress com rapidez e precisão.

ZAP OWASP

O OWASP Zed Attack Proxy (ZAP) é uma ferramenta gratuita de teste de penetração de aplicativos da Web de código aberto. O Open Web Application Security Project (OWASP) mantém essas ferramentas. OWASP ZAP é projetado especificamente para testar aplicativos da Web para uma ampla variedade de vulnerabilidades, como Cross-site Scripting (XSS) e SQL Injection (SQLi). ZAP, em sua essência é um proxy. Ele fica entre o navegador do pentester e o site para interceptar e inspecionar as solicitações enviadas entre os dois.

Scanner OWASP ZAP

Além de atuar como um proxy, o ZAP também pode testar automaticamente uma variedade de vulnerabilidades e também pode confundir uma variedade de entradas. Fuzzing é uma técnica de teste de segurança na qual uma entrada inválida ou inesperada é fornecida a um aplicativo com a intenção de descobrir vulnerabilidades de segurança.

Teste de penetração para WordPress – avaliando a postura de segurança do seu site

A segurança do WordPress não é uma correção única. É um processo contínuo baseado em quatro princípios: Harden > Monitor > Test > Improve. Com o teste de penetração, você aborda o princípio do teste . Ou seja, você verifica a postura de segurança do seu site. Em seguida, você pode tomar as medidas necessárias para melhorar a configuração com base em suas descobertas.

Portanto, testes frequentes de penetração de sites WordPress devem fazer parte do seu programa de segurança. Você julga com que frequência deve fazer testes de penetração. Se você fizer alterações frequentes em seu site, faça testes frequentes. No entanto, um teste de penetração trimestral funciona se o seu site raramente recebe uma atualização.