Laboratórios
Se você estiver familiarizado com os conceitos básicos por trás das vulnerabilidades do SQLi e quiser praticar a exploração delas em alguns alvos realistas e deliberadamente vulneráveis, poderá acessar os laboratórios deste tópico no link abaixo.
Veja todos os laboratórios de injeção de SQL
Oque é(SQL) & (SQLi).
Structured Query Language, lit. "linguagem de consulta estruturada", é uma linguagem de domínio específico desenvolvida para gerenciar dados relacionais em um sistema de gerenciamento de banco de dados, ou para processamento de fluxo de dados em um sistema de gerenciamento de fluxo de dados..
Já
A injeção de SQL (ou SQL injection) é 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 ele 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 injection de SQL para comprometer o servidor subjacente ou outra infraestrutura de back-end, ou realizar um ataque de negação de serviço.
- Criado Por: Donald Chamberlin, Raymond F. Boyce
Suponha que um aplicativo web tenha um formulário de login com os campos "usuário" e "senha". Quando um usuário digita suas credenciais e clica em "login", o aplicativo constrói uma consulta SQL para verificar se o usuário e a senha correspondem aos registros no banco de dados. A consulta SQL pode parecer com isso:
sql
SELECT * FROM users WHERE username = 'usuário_digitado' AND password = 'senha_digitada';
Se o aplicativo não validar ou filtrar corretamente os dados de entrada, um atacante pode inserir uma entrada maliciosa no campo de "usuário", como:
Bash(sytem Linux- Kali cmd)
' OR '1'='1
sql
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = 'senha_digitada';
Nesse caso, a condição '1'='1' sempre é verdadeira, então o banco de dados retornará todas as linhas da tabela de usuários, efetivamente ignorando a necessidade de uma senha válida para fazer login. Com acesso não autorizado, o atacante pode obter informações confidenciais, modificar dados no banco de dados ou até mesmo executar comandos destrutivos.
Resumo Historia:
A injeção de SQL surgiu nas primeiras fases da internet comercial, quando as aplicações web começaram a se tornar populares. Desde então, tornou-se uma das principais técnicas de ataque exploradas pelos hackers devido à sua eficácia e simplicidade de execução. A prevalência da injeção de SQL é evidenciada por inúmeros incidentes de segurança e violações de dados em todo o mundo, destacando a importância de abordar essa vulnerabilidade de forma proativa.
Ano 2013, Edward Snowden revela ao mundo sitiado pela espionagem americana (National Security Agency-NSA)
Edward Snowden, um ex-técnico da Agência de Segurança Nacional dos Estados Unidos (NSA), tornou-se famoso em 2013 após vazar informações altamente confidenciais sobre programas de vigilância em massa realizados pela NSA. Snowden revelou a extensão dos programas de monitoramento global, incluindo a coleta em larga escala de registros telefônicos dos cidadãos americanos e estrangeiros, bem como o acesso a dados online por meio de empresas de tecnologia.
Em 13 de junho, o diretor do FBI, Robert Mueller, disse que estava iniciada uma investigação penal contra Snowden. Na semana seguinte, o governo americano apresentou as acusações criminais por espionagem, roubo e conversão de propriedade do governo.
Vazamentos
Programa de Vigilância Telefônica: Snowden divulgou documentos que mostravam que a NSA estava coletando registros telefônicos em massa de milhões de americanos, incluindo números de telefone, duração das chamadas e informações de localização, sem a necessidade de mandados individuais. (SQLMAP)
PRISM: Este programa envolvia a coleta de dados de empresas de tecnologia líderes, como Google, Microsoft, Facebook, Apple e outros. Isso incluía e-mails, chats, vídeos, fotos e outros tipos de comunicação online. (SQLI-DB)
XKeyscore: Snowden revelou a existência do XKeyscore, um sistema de busca e análise de dados em larga escala que permitia à NSA acessar praticamente qualquer coisa que um usuário fizesse na internet, incluindo e-mails, chats e histórico de navegação. (SQLI-DB)
Programa de Vigilância em Massa no Exterior: Documentos vazados por Snowden também mostraram que a NSA estava monitorando comunicações em massa fora dos Estados Unidos, muitas vezes em cooperação com agências de inteligência estrangeiras. (SQL-INJECTION)
Edward Snowden- Full Documentary 2016
Fatos
Baseando-se principalmente em ataques de injeção de SQL, o ResumeLooters(Grupo de hackers) está ativo desde o início de 2023, vendendo as informações roubadas em grupos de Telegram com tema de hacking de língua chinesa. Como parte da campanha de novembro a dezembro, o grupo atingiu principalmente locais na Índia (12), Taiwan (10), Tailândia (9), Vietnam (7) e China (3). Contudo, também foi visto visando vítimas na Austrália, Filipinas, Coreia do Sul, Japão, EUA, Brasil, Rússia e Itália.
%
Web site com vulnerabilidade SQL-injection
%
Ataques realizados a dados Simples(Chances de recuperação)
%
Ataque com 60% invasivo: Grave( Sem chance de recuperação)
%
Ataque DDoS: Critico(Sem chance de recuperação)
Tipos de injection
Os cibercriminosos usam o mesmo canal para lançar um ataque contra um servidor e extrair os resultados das solicitações maliciosas. Há duas subcategoriais principais de In-Band SQLi: a error-based SQLi (SQLi baseado em erro) e a union-based SQLi (SQLi basaeada em UNION).
Proteção(individuais)
Contexto virado a Area de CyberSecurity
- Utilização de Prepared Statements e Stored Procedures: Ao invés de construir consultas SQL concatenando strings, utilize prepared statements e stored procedures fornecidas pelas APIs de acesso ao banco de dados. Isso ajuda a separar os dados dos comandos SQL, tornando mais difícil para os atacantes injetarem código malicioso.
- Validação de Entrada de Dados: Valide e filtre todas as entradas de dados vindas dos usuários. Certifique-se de que apenas dados válidos e esperados são aceitos, rejeitando entradas suspeitas, como caracteres especiais em campos que não deveriam contê-los.
- Utilização de ORM (Object-Relational Mapping): O uso de ORM pode ajudar a mitigar SQL injection, pois essas ferramentas mapeiam objetos diretamente para o banco de dados, eliminando a necessidade de escrever consultas SQL manualmente.
- Princípio do Menor Privilégio: Garanta que as credenciais de acesso ao banco de dados tenham apenas as permissões necessárias para realizar as operações requeridas pelo aplicativo. Evite usar credenciais com privilégios de administrador, o que limita o impacto de uma possível exploração.
- Atualização Regular de Software: Mantenha o software do banco de dados e do aplicativo sempre atualizado. Muitas vezes, as atualizações incluem correções para vulnerabilidades conhecidas, incluindo aquelas que poderiam ser exploradas por meio de SQL injection.
- Monitoramento e Auditoria: Implemente sistemas de monitoramento e auditoria para acompanhar atividades suspeitas nos sistemas e nos bancos de dados. Isso pode ajudar a detectar e responder rapidamente a possíveis ataques de SQL injection.
Proteção(global)
Contexto virado a Area Usuarios
- Norton Safe Web
- Verificação de Web site atraves de informacoes fornecidas na barra do seu navegador.
- Utilize Senhas Fortes: Escolha senhas fortes e únicas para suas contas online. Senhas fortes dificultam que os atacantes obtenham acesso não autorizado às suas contas, mesmo que ocorra um ataque de SQL injection.
- Cuidado com Links Suspeitos: Evite clicar em links suspeitos ou desconhecidos em emails, mensagens instantâneas ou redes sociais. Esses links podem redirecioná-lo para sites maliciosos que tentam explorar vulnerabilidades, como SQL injection.
- Use uma Rede Segura: Evite acessar aplicativos web em redes Wi-Fi públicas ou não seguras, onde seus dados podem ser interceptados por atacantes. Prefira usar redes privadas e seguras sempre que possível.
- Habilite a Autenticação em Dois Fatores: Onde disponível, ative a autenticação em dois fatores para suas contas online. Isso adiciona uma camada extra de segurança, exigindo um segundo método de verificação além da senha.
- Evite inserir caracteres especiais em campos de entrada: Evite inserir caracteres especiais, como aspas simples ('), aspas duplas ("), ponto e vírgula (;), entre outros, em campos de entrada, como formulários da web. Esses caracteres podem ser explorados por hackers para injetar comandos SQL maliciosos.
- Esteja Ciente dos Riscos: Esteja ciente dos riscos associados à divulgação de informações pessoais ou confidenciais em aplicativos web. Evite inserir informações sensíveis em sites que não pareçam confiáveis ou seguros.