SQL INJECTION na PRÁTICA (PHP + MySQL)

Entenda SQL Injection de forma prática através da utilização e PHP + MySQL


O que é injeção de SQL (SQLi)?


A injeção de SQL é uma vulnerabilidade de segurança da web que permite que um invasor interfira nas consultas que um aplicativo faz ao seu banco de dados. Geralmente, permite que um invasor visualize dados que normalmente não é capaz de recuperar. Isso pode incluir dados pertencentes a outros usuários ou quaisquer outros dados que o próprio aplicativo é capaz de acessar. Em muitos casos, um invasor pode modificar ou excluir esses dados, causando alterações persistentes no conteúdo ou comportamento do aplicativo.

Em algumas situações, um invasor pode escalar um ataque de injeção de SQL para comprometer o servidor subjacente ou outra infraestrutura de back-end, ou realizar um ataque de negação de serviço.


Qual é o impacto de um ataque de injeção de SQL bem-sucedido?


Um ataque de injeção de SQL bem-sucedido pode resultar em acesso não autorizado a dados confidenciais, como senhas, detalhes de cartão de crédito ou informações pessoais do usuário. Muitas violações de dados de alto perfil nos últimos anos foram resultado de ataques de injeção de SQL, levando a danos à reputação e multas regulatórias. Em alguns casos, um invasor pode obter um backdoor persistente nos sistemas de uma organização, levando a um comprometimento de longo prazo que pode passar despercebido por um longo período.


Como detectar vulnerabilidades de injeção de SQL


A maioria das vulnerabilidades de injeção de SQL podem ser encontradas de forma rápida e confiável usando o scanner de vulnerabilidades da Web do Burp Suite .

A injeção de SQL pode ser detectada manualmente usando um conjunto sistemático de testes em cada ponto de entrada no aplicativo. Isso normalmente envolve:

  • Enviando o caractere de aspas simples 'e procurando erros ou outras anomalias.
  • Enviando alguma sintaxe específica de SQL que avalia o valor base (original) do ponto de entrada e um valor diferente e procurando por diferenças sistemáticas nas respostas do aplicativo resultante.
  • Enviando condições booleanas, como OR 1=1OR 1=2, and procurando por diferenças nas respostas do aplicativo.
  • Enviar cargas úteis projetadas para disparar atrasos quando executados em uma consulta SQL e procurar diferenças no tempo necessário para responder.
  • Envio de cargas OAST projetadas para acionar uma interação de rede fora de banda quando executado em uma consulta SQL e monitorar todas as interações resultantes.

Comentários