WordPress SQL Injection: um guia completo para proteger

imprimir · Время на чтение: 17mínimo · por · Publicados · Atualizada

jogarOuça este artigo

WordPress SQL Injection - Um guia para proteção contra ataques SQL.

injeção SQL são alguns dos ataques mais destrutivos em sites WordPress. Na verdade, eles ocupam o segundo lugar na lista das vulnerabilidades mais críticas do WordPress, perdendo apenas para ataques de script entre sites. A injeção SQL do WordPress permite que um hacker acesse o banco de dados do seu site e o inunde com malware.

Se você leu sobre ataques de injeção de SQL em sites WordPress e está preocupado com os danos que eles podem causar, você veio ao lugar certo. Vou lhe dizer exatamente como lidar com o malware desses ataques e, mais importante, como evitar que eles ocorram.

Em 2019, dois terços de todos os ataques foram ataques de injeção de SQL. Esse número diminuiu um pouco, mas isso não os torna menos perigosos. No entanto, entender o que um ataque de injeção de SQL no WordPress faz e como ele funciona ajuda muito a proteger seu site. Os ataques de injeção de SQL são perigosos para qualquer site e podem causar danos significativos.

O conteúdo do artigo:

O que são ataques de injeção de SQL no WordPress?

Ataques de injeção de SQL no WordPress - o que é?
Ataques de injeção de SQL no WordPress são tentativas de obter acesso não autorizado ao banco de dados do seu site. O banco de dados do seu site contém todas as informações e conteúdos criados pelos usuários, como postagens, páginas, links, comentários e até usuários. Este é um enorme repositório de informações importantes e, portanto, uma mina de ouro para hackers.

A implementação do WP SQL, sem surpresa, usa comandos SQL. Linguagem de consulta estruturada ou SQL é uma linguagem usada para interagir com bancos de dados. Possui comandos que podem adicionar, excluir ou modificar informações armazenadas nas tabelas do banco de dados. O SQL permite que os arquivos do seu site encontrem e recuperem os dados corretos do banco de dados para exibição em seu site.

Os ataques de injeção SQL funcionam injetando comandos SQL nos campos de formulário do seu site. Por exemplo, um hacker pode usar seu formulário de contato para inserir dados em seu site. Os dados possuem comandos SQL que são executados pelo seu site e assim podem alterar seu banco de dados. Então, uma vez que um hacker tenha acesso ao banco de dados do seu site, ele pode inundar seu site com malware ou causar outros tipos de problemas de pesadelo.

Existem vários pontos de entrada para ataques de injeção de SQL. Os hackers geralmente visam formulários e quaisquer outros campos expostos, como barras de pesquisa. Os carrinhos também são conhecidos por serem suscetíveis à injeção de SQL.

As consequências de um ataque de injeção de SQL em seu site WordPress

As consequências de uma injeção de SQL no WordPress podem variar muito, dependendo do que o hacker escolher fazer com seu acesso obscuro. Aqui estão algumas das consequências que os hackers causam aos sites:

  • Na pior das hipóteses, um hacker pode deletar todo o conteúdo do seu banco de dados. Isso interromperá seu site e impossibilitará a restauração se você não tiver backups independentes.
  • Com injeção de SQL no WordPress, um hacker pode injetar malware em seu banco de dados. Isso pode significar malware de spam de SEO e variantes, como hacking de palavras-chave ou hacking farmacêutico. Também pode significar malware de redirecionamento hackeado que infecta todas as postagens e páginas.
  • Um hacker pode assumir o controle da conta de um usuário e elevar seus privilégios. Se você observar uma atividade estranha do usuário, isso pode ser um sinal de um site invadido.
  • Como o hacker tem acesso ao seu banco de dados, ele pode adicionar, alterar, excluir ou até mesmo roubar dados. Isso representa um grande problema de privacidade, especialmente se você estiver armazenando dados do usuário, como e-mails ou dados pessoais. Vazamentos de dados colocam os usuários em risco.
  • Por fim, os ataques de injeção de SQL também podem levar a ataques de execução remota de código.

Resumindo, os ataques de injeção de SQL são um mecanismo usado por hackers para obter acesso não autorizado. Depois disso, eles podem causar muitos danos ao seu site.

Como verificar se o seu site WordPress tem uma vulnerabilidade de injeção de SQL?

A maior razão pela qual os ataques de injeção de SQL geralmente são bem-sucedidos são as vulnerabilidades. Vulnerabilidades são omissões no código, seja no núcleo do WordPress, plugins ou temas. Abordaremos a mecânica de como a injeção SQL do WordPress funciona mais adiante neste artigo, mas basta dizer que as vulnerabilidades são pontos de entrada.

Existem várias maneiras de descobrir se o seu site tem uma vulnerabilidade de injeção de SQL no WordPress:

1. Verifique se algo em seu site precisa de uma atualização. Se uma vulnerabilidade for descoberta em qualquer software em seu site, os desenvolvedores desse software se certificarão de lançar uma atualização de patch de segurança. Esta é a principal razão pela qual sou sempre a favor da atualização do seu site.

2. Use uma ferramenta de teste de penetração. Uma ferramenta de injeção de SQL muito popular, o sqlmap, verifica seu site quanto à vulnerabilidade de injeção de SQL do WordPress.

3. Teste seu site com código SQL. Esta etapa requer algum conhecimento técnico de você. Dependendo de qual banco de dados seu site usa, você pode usar esta folha de dicas para descobrir quais comandos tentar.

Também existem verificadores online que testarão vulnerabilidades de injeção de SQL. O Sqlmap é um deles, mas também há o Acunetix, um scanner de vulnerabilidade de sites e outras ferramentas de código aberto. No entanto, essas são ferramentas de teste de penetração e não podem proteger seu site contra ataques. Para proteger seu site contra ataques, você precisa instalar um firewall WordPress.

Como se livrar do malware infiltrado pelo ataque de injeção SQL

A injeção SQL do WordPress não é malware em si, mas um mecanismo para potencialmente injetar malware no banco de dados do seu site ou no próprio site.

Sintomas de malware em seu site

Malware nem sempre aparece claramente em um site, no entanto, existem alguns sintomas que você pode observar:

  • Spamming seu site nos resultados de pesquisa do Google.
  • Problemas de segurança no Google Search Console.
  • Erros e outros problemas em seu site, como código quebrado em páginas ou pop-ups de spam.
  • Alterações internas inexplicáveis no site.
  • O site redireciona para outro site.
  • O Google está colocando seu site na lista negra.
  • Há uma queda maciça nas posições na emissão do Yandex.
  • As posições e os resultados das solicitações principais desaparecem.
  • Yandex Webmaster notifica você sobre uma violação de segurança.
  • O host da web pausa o site ou envia um e-mail de alerta.
  • Problemas de desempenho, como lentidão do site.
  • Problemas de experiência do usuário, como spam enviado aos usuários.
  • Alterações nos modelos de análise para surtos repentinos de tráfego.
  • A conta do Google Ads está na lista negra.
  • A conta Yandex YAN também está bloqueada.

Apenas um desses marcadores pode ser uma anomalia, mas uma combinação de dois ou mais é um sinal claro de malware.

Escaneie seu site em busca de malware

Se você vir um fenômeno inexplicável em seu site, precisará confirmar se há malware em seu site. A melhor maneira de fazer isso é escanear seu site em busca de malware. Existem três maneiras de rastrear seu site, listadas em ordem decrescente de eficácia.

  • Varredura profunda com um scanner de segurança para encontrar os menores vestígios de malware em seu site ou banco de dados. Esta é a melhor maneira de determinar se o seu site tem malware.
  • A digitalização com um scanner online é um método de digitalização menos eficiente, mas é um bom primeiro passo para descobrir se algo está errado.
  • A verificação manual de malware é a menos eficaz, por isso não a recomendamos.

Remover malware do seu site

Depois de determinar que seu site contém malware, você precisa priorizar a limpeza imediatamente. O malware é flagrante e fica cada vez pior com o tempo.
Existem 3 maneiras de remover malware do seu site WordPress:

  1. Use um plug-in de segurança do WordPress;
  2. Contrate uma equipe de suporte do WordPress;
  3. Limpe o malware manualmente.

1. Use um plug-in de segurança do WordPress

Das três opções, é melhor usar um plugin de segurança. Recomendo plugins como:

  • Tudo em um WP Segurança
  • Segurança Wordfence

Eles ajudarão a limpar seu site de malware em minutos. Eles usam um sistema inteligente para remover cirurgicamente apenas malware de seu site, mantendo seus dados completamente intactos.

Na verdade, o WordPress SQL Injection pode injetar malware no banco de dados do seu site, mas plug-ins como esses estão acima de todos os outros plug-ins de segurança quando se trata de limpar o banco de dados de malware.

2. Contrate um Help Desk WordPress

A próxima melhor opção é contratar um serviço de manutenção ou especialista em segurança para limpar seu site de malware. Esteja ciente, no entanto, que esses serviços são caros e raramente compensam a limpeza. Como resultado, você pode obter uma grande conta de serviços.

3. Limpe o malware manualmente

Eu aconselho fortemente contra a limpeza manual de malware. Além do tempo que leva, sempre há espaço para erro humano.

Lista de verificação pós-hack

Depois que o malware for removido, há algumas coisas que você precisa fazer. Essas são tarefas de serviço que levam em consideração que um hacker pode ter acesso ao seu site e banco de dados por algum tempo.

  1. Atualize todas as senhas: usuários, banco de dados, e-mails, tudo;
  2. Alteração de funções e chaves de segurança do WordPress;
  3. Limpe todos os caches;
  4. Avise os usuários sobre a alteração de senhas.

Como regra geral, é melhor presumir que informações confidenciais, como senhas, podem ter sido comprometidas e, portanto, precisam ser alteradas.

Como evitar injeções de SQL no WordPress?

A melhor maneira de lidar com malware e ataques é impedir que eles ocorram. Existem algumas etapas específicas de segurança de injeção de SQL que você pode seguir para garantir que seu site seja o mais seguro possível:

  • Instale o plug-in de segurança: Não posso deixar de enfatizar a importância do plug-in de segurança. Para ficar por dentro da segurança do site, você precisa de um scanner que funcione diariamente. O malware fica mais perigoso quanto mais tempo permanece no seu site. Os verificadores verificam diariamente malware e vulnerabilidades, e você pode simultaneamente limpar seu site em minutos e evitar piorar as coisas.
  • Use um firewallR: Os firewalls são a melhor proteção contra ataques de injeção de SQL que um administrador do WordPress pode suportar. O problema com as vulnerabilidades é que há pouco que você pode fazer como administrador de site para corrigir os problemas subjacentes. Mas você pode instalar um firewall WordPress. O firewall usa regras para bloquear ataques, como injeção de SQL, além de outros, como execução remota de código e script entre sites.
  • Atualize todos os seus plugins e temas: Continuo falando sobre a importância de atualizar tudo no seu site. As atualizações geralmente contêm correções de segurança para vulnerabilidades. Escolher atrasar as atualizações pode levar a ataques e malware bem-sucedidos.
  • Software sem nulo: Escolha as extensões com cuidado. Plugins e temas anulados são bombas-relógio. Se eles não vierem com malware pré-instalado, é provável que tenham backdoors que podem ser explorados. Além disso, o plug-in ou tema não pode ser atualizado porque é uma versão hackeada. Assim, apesar de as vulnerabilidades serem corrigidas na versão legítima, elas permanecerão para sempre em um estado zerado.
  • Fortaleça a segurança do seu WordPress. Além de implementar as melhores práticas de segurança em seu site WordPress, você também pode fortalecê-lo. Eu recomendo desabilitar o XML-RPC e habilitar a autenticação de dois fatores em seu site.

Se você é um desenvolvedor ou está criando um código personalizado para o seu site, pode fazer o seguinte para evitar vulnerabilidades de injeção SQL do WordPress em seu site:

  • Use declarações preparadas. Isso significa que a entrada do formulário é primeiro enviada para a função para validação, armazenada em uma variável e depois passada para os operadores. As entradas não são incorporadas diretamente nos comandos e depois executadas.
  • Certifique-se de higienizar a entrada do usuário. A validação de entrada é muito importante. Remova todos os caracteres especiais que são operadores no SQL e proíba totalmente seu uso em senhas. Seu sistema deve rejeitar imediatamente esses caracteres.
  • Você também pode usar estruturas que possuem funções que usam instruções preparadas. Muitos desenvolvedores usam essas plataformas para que não precisem escrever instruções SQL diretamente em seu código.
  • Você pode restringir o acesso ao banco de dados apenas para aqueles que precisam dele.

Existem muitos recursos de codificação disponíveis para ajudá-lo do ponto de vista do desenvolvimento. Felizmente, o WordPress usa funções para armazenar senhas, então você precisa se preocupar com um tipo a menos de injeção WP SQL.

Por que os ataques de injeção de SQL são tão comuns?

As injeções de SQL levam a muitos dados valiosos para os hackers. Esta é a principal razão pela qual eles são tão comuns. Embora existam outras razões:

  • A maioria dos bancos de dados de sites usa SQL.
  • O ataque funciona principalmente por meio de campos de formulário, e a maioria dos sites tem pelo menos um campo que permite inserir dados. Formulário de contato, campo de pesquisa e assim por diante.
  • Existem muitos scanners disponíveis na Internet que podem detectar vulnerabilidades de injeção de SQL em um site. Geralmente, são ferramentas de hacking ético projetadas para alertar um administrador de site sobre pontos fracos em sua segurança, mas também podem ser usadas por hackers.
  • Infelizmente, as injeções de SQL são fáceis de executar. Eles não exigem muito conhecimento técnico ou experiência.
  • É difícil contabilizar essas vulnerabilidades. Na verdade, vulnerabilidades de injeção de SQL também foram encontradas em plug-ins de segurança do WordPress. O único lugar onde você não esperaria encontrá-los.

No início de 2022, vulnerabilidades de injeção de SQL também foram descobertas no núcleo do WordPress. À medida que os desenvolvedores implementam proteções contra métodos de ataque antigos, os hackers estão encontrando novas maneiras de usar os sites.

Como funcionam os ataques de injeção de SQL?

As injeções de SQL funcionam quando os hackers inserem comandos SQL em um site e obtêm acesso a um banco de dados. Há muitas maneiras de fazer isso, que veremos na seção sobre tipos de ataques de injeção de SQL.

Um exemplo de um banco de dados WordPress afetado.

Essencialmente, os hackers usam entradas não verificadas. Entradas não higienizadas são entradas do usuário que não são validadas ou validadas por um sistema, neste caso um site. As entradas serão tomadas pelo banco de dados e os resultados enviados de volta. Trata-se de usar o comando SQL de forma criativa para obter o resultado desejado.

Implementação do código de injeção SQL através do formulário de contato no site.

Por exemplo, os hackers usam caracteres especiais contidos no SQL para extrair informações de um banco de dados. Símbolos ou símbolos são conhecidos como operadores que possuem um significado especial na linguagem. O caractere asterisco (*) é um operador que significa "todos". Os operadores são usados para melhorar a eficiência da codificação, mas, como não são específicos, podem ser mal utilizados se usados de forma descuidada.

Exemplo de injeção de SQL no WordPress:

Vejamos um exemplo de como funciona um ataque de injeção de SQL:

Digamos que você tenha um formulário de login no qual conheça um dos nomes de usuário ou endereços de e-mail.

SELECT * FROM users WHERE email = 'admin@siteemail.ru' AND pass = 'password' LIMIT 1

Adivinhar a senha pode não ajudar. No entanto, você pode tentar adicionar um caractere especial: a aspa simples. Como resultado, você obtém um erro inesperado.

Os logs mostrarão que ocorreu um erro de sintaxe, significando que a aspa simples foi lida como um código e não como um caractere da senha. A aspa simples tem um significado especial no SQL e, portanto, causa um erro.

SELECT * FROM users WHERE email = 'admin@siteemail.ru' AND pass = 'password'' LIMIT 1

Se você observar a segunda linha de código, as aspas simples alteram completamente a sintaxe. Um par de aspas simples em cada lado da senha especifica onde a senha começa e termina naquela linha de código. Portanto, tudo entre essas marcas deve ser considerado uma senha. No entanto, adicionando aspas extras no final da senha, você acaba com os dados da senha antes do esperado. Um erro inesperado diz ao hacker que este formulário pode ser vulnerável à injeção de SQL porque ele pega tudo o que é inserido nos campos do formulário exatamente como é digitado e o envia para o banco de dados.

A propósito, esta é uma informação interessante para um hacker. Essas informações fornecem informações sobre como o banco de dados lida com os comandos.

Então inserimos ' ou 1=1 - no campo de senha.

SELECT * FROM users WHERE email = 'admin@siteemail.ru' AND pass = '' or 1=1--' LIMIT 1

Isso nos deu acesso ao sistema. Por que? As aspas simples, como explicamos anteriormente, encerravam o campo de senha. E 1=1, o que inserimos é convertido para o valor verdadeiro no sistema.

Então - o banco de dados ignora todo o resto depois de TRUE. Então o usuário foi autenticado porque o código retornou um valor true indicando que a senha estava correta.

Tipos de ataques de injeção de SQL no WordPress

O exemplo da seção anterior é uma pequena ilustração de um ataque de injeção de SQL muito simples. A maioria dos programas do WordPress já protege contra esses tipos de ataques. É conhecida como a clássica injeção de SQL em banda.

Além dessas injeções SQL clássicas, existem várias outras categorias. No entanto, antes de falarmos sobre outros tipos, existem alguns termos que são úteis para conhecer no contexto dos sites WordPress:

  • aplicativo da web: a maioria dos recursos de segurança da Web explica os ataques de injeção de SQL em relação aos aplicativos da Web. Em nosso artigo, estamos falando especificamente sobre sites WordPress. Portanto, o aplicativo da Web, neste caso, é um site. Este é o front-end com o qual o usuário interage e, em essência, deve diferenciá-lo do back-end do site, ou seja, o banco de dados.
  • servidor web: Este é o servidor web que hospeda seu site WordPress. Todos os sites são armazenados nos servidores da web das empresas de hospedagem.
  • Solicitações/Respostas: A comunicação na Internet ocorre por meio de solicitações. Uma pessoa interage com seu site usando o navegador. O navegador envia uma solicitação a um servidor da Web, que processa o conteúdo dessa solicitação e envia uma resposta de volta ao navegador da pessoa. Por exemplo, se você clicar no link de um site no Google, uma solicitação será enviada ao servidor do site. A resposta é que o site é carregado no seu navegador.
  • Canal: Um canal é um método de comunicação usado para ataques de injeção e os resultados desse ataque. Nas seguintes categorias de ataques de injeção, a principal diferença é o canal. Nos ataques in-band, o canal de resposta é o mesmo da requisição. No entanto, o canal é diferente para ataques lógicos e ataques fora de banda. No caso de sites WordPress, um hacker usa o site para atacar. Se os resultados do ataque forem visíveis no próprio site, diz-se que a injeção de SQL está usando o mesmo canal.

tipos de ataque

  • Injeção de SQL em banda/Injeção de SQ clássica: Existem várias maneiras de entender como o sistema subjacente funciona, e os erros e outras mensagens do sistema são uma boa maneira de obter essa ideia. As injeções SQL dentro da banda basicamente enviam instruções SQL para serem executadas e os resultados são exibidos na mesma página. Existem dois tipos principais de ataques clássicos de injeção de SQL:
    Ataque baseado em erro: Aqui, a instrução SQL na injeção contém deliberadamente sintaxe ou entrada incorreta. Quando executado, o sistema retorna uma mensagem de erro. Com base nessa mensagem de erro, um hacker pode reunir informações sobre o banco de dados. As mensagens de erro devem ser tão úteis quanto possível para os desenvolvedores e permitir que eles identifiquem rapidamente os bugs. Este é um abuso grosseiro desta funcionalidade.
    Junte-se ao ataque baseado: as instruções de união são comandos SQL que combinam duas ou mais instruções em uma. Os sites afetados por esta vulnerabilidade sinalizam uma solicitação maliciosa no final de uma solicitação normal para que ela seja aplicada. Os resultados são exibidos na página como uma resposta HTTP.
  • Injeção SQL Inferencial/Injeção SQ Cega: Ao contrário dos ataques de injeção de SQL em banda, erros ou resultados de consultas SQL não são exibidos na página. Assim, o hacker tenta diferentes tipos de entrada e analisa o comportamento resultante para descobrir como o banco de dados funciona. Pense nisso como um chifre de morcego. Quando o sinal rebate objetos, o morcego pode determinar o tamanho e a distância do objeto e se é comida ou uma ameaça. Existem dois tipos principais de ataques inferenciais de injeção de SQL:
    ataque lógico: O hacker começa enviando uma solicitação que ele sabe que produzirá um resultado verdadeiro e observa o comportamento do aplicativo da web. Um exemplo disso seria uma condição como 1=1, que sempre será verdadeira. O hacker observará o comportamento quando a solicitação for falsa. Com essas informações, eles sabem como o banco de dados reage a verdadeiros e falsos. Pode não estar imediatamente claro como um hacker pode usar essas informações para extrair dados. No entanto, o hacker agora pode criar consultas que são essencialmente uma série de perguntas verdadeiro-falso. Por exemplo, para extrair senhas de contas de administrador, um hacker pode verificar a senha caractere por caractere em uma lista de letras, números e caracteres especiais. Como esta lista é finita, a senha será revelada gradualmente. Concordo, este é um processo tedioso que leva muito tempo. No entanto, os hackers automatizam isso para que aconteça em minutos.
    Ataque Baseado no Tempo: Teoricamente semelhante ao ataque booleano, o ataque baseado em tempo depende do atraso de tempo em vez do resultado verdadeiro/falso. Se a solicitação estiver correta, a resposta será retornada após um tempo. Se não, isso acontecerá imediatamente.

Ataques de injeção de SQL inferencial podem demorar mais devido à forma como são configurados. No entanto, isso não os torna menos perigosos.

  • Ataque de injeção fora de banda SQ: esses tipos de ataques são o próximo passo dos ataques inferenciais SQLi. Em ataques de injeção de SQL fora de banda, as respostas não são mostradas no site.

Portanto, os ataques fora de banda do SQLi funcionam forçando o sistema subjacente a enviar respostas para outro sistema, que geralmente é controlado pelo hacker.

Que efeito o malware tem em seu site por meio da injeção de SQL?

O malware causa grandes danos e perdas a um site. Consome recursos, afasta os visitantes e causa muito estresse. Normalmente, o administrador entra em pânico. Além disso, aqui estão alguns dos efeitos de malware vistos em sites invadidos:

  1. Explosões orgânicas;
  2. O Google coloca seu site na lista negra;
  3. Yandex bloqueia seu site;
  4. O site parece marcado como não seguro;
  5. O host da Web está suspendendo seu site;
  6. Os visitantes param de visitar seu site.

Esta lista nem arranha a superfície dos problemas - são apenas os problemas mais flagrantes. Resumindo: o malware nunca deve ser menosprezado.

Conclusão

Há pouco que um administrador do WordPress possa fazer para atenuar as vulnerabilidades de injeção de SQL do WordPress em seu site, além de garantir que tudo esteja atualizado. No entanto, um bom firewall do WordPress impedirá que hackers explorem essas vulnerabilidades, para que o site permaneça seguro. A melhor coisa que qualquer administrador pode fazer para manter o WordPress seguro é instalar um plugin de segurança.

Lendo este artigo:

Obrigado por ler: AJUDANTE DE SEO | NICOLA.TOP

Quão útil foi este post?

Clique em uma estrela para avaliá-la!

Classificação média 5 / 5. contagem de votos: 413

Nenhum voto até agora! Seja o primeiro a avaliar este post.

Você pode gostar...

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

dois × dois =