"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Parte SQL Injeção Série: Explicação detalhada das técnicas avançadas de injeção de SQL

Parte SQL Injeção Série: Explicação detalhada das técnicas avançadas de injeção de SQL

Postado em 2025-03-12
Navegar:932

Part SQL Injection Series: Advanced SQL Injection Techniques

Autor: Trix Cyrus

Ferramenta Pentesting Waymap: Clique aqui
TrixSec Github: clique aqui
TrixSec Telegram: clique aqui

Explorações avançadas de injeção de SQL-Parte 7: Técnicas de ponta e prevenção

Bem -vindo à parte 7 de nossa série de injeção SQL! Esta parcela investiga as técnicas avançadas de injeção de SQL avançadas empregadas pelos atacantes e fornece estratégias acionáveis ​​para combatê -las. À medida que as ameaças evoluem, entender esses métodos sofisticados é crucial para ficar à frente.


1. Técnicas avançadas de injeção SQL

1.1. Injeção de SQL fora da banda

A injeção fora da banda (OOB) é usada quando o invasor não pode observar diretamente os resultados de sua carga útil. Em vez disso, eles dependem de solicitações DNS ou HTTP para exfiltrar os dados.

  • como funciona : A carga útil aciona uma consulta que envia dados para um servidor controlado pelo invasor. Por exemplo:
selecione * de usuários onde>
  SELECT * FROM users WHERE>



The above payload exploits SQL Server's xp_dirtree to make an outbound DNS request.

  • Real-World Example:

    In 2019, attackers used OOB techniques to bypass traditional defenses and exfiltrate sensitive data from a government database.

  • Mitigation:

    • Block outbound DNS/HTTP requests from the database.
    • Use network monitoring tools to detect unusual outbound traffic.

1.2. Boolean-Based Blind SQL Injection

This method determines true or false conditions based on subtle changes in the application's behavior.

  • Example Payload:
  ' AND 1=1 -- True condition  
  ' AND 1=2 -- False condition  
As diferenças de resposta indicam se a condição injetada é verdadeira ou falsa.

  • Uso:
    Os atacantes enumeram bancos de dados, tabelas ou colunas um pouco por vez usando consultas condicionais.

  • mitigation :

      use consultas parametrizadas ou estruturas ORM.
    • implante firewalls de aplicativos da web (wafs) com conjuntos de regras para detecção de injeção de SQL cega.

1.3. Injeção de SQL cegas baseadas no tempo

Esta técnica usa atrasos para inferir dados. O atacante observa quanto tempo leva o servidor para responder.

  • Exemplo Payload :
selecione se (1 = 1, sono (5), 0); - atrasa a resposta por 5 segundos
  SELECT IF(1=1, SLEEP(5), 0); -- Delays response by 5 seconds  
  • Impacto:
    As consultas lentas podem prejudicar o desempenho do servidor, causando uma negação de serviço.

  • mitigation :

      use limitação de taxa para bloquear solicitações excessivas.
    • monitore e encerre as consultas de longa duração.

1.4. Injeção SQL de segunda ordem

Nesta técnica, cargas úteis maliciosas são armazenadas no banco de dados e acionadas durante uma ação subsequente, como uma revisão do administrador.

  • cenário de exemplo :

      invasor insere essa carga em um formulário:
    robert '); Soltar usuários de tabela; -
      SELECT IF(1=1, SLEEP(5), 0); -- Delays response by 5 seconds  
    
      Durante uma revisão, o aplicativo executa a carga útil armazenada.
  • mitigation :

      Escape e higienize as entradas em todas as etapas, mesmo durante a recuperação.
    • use funções imutáveis ​​de banco de dados para impedir a execução de scripts maliciosos.

2. Estudos de caso do mundo real

Estudo de caso 1: Vulnerabilidade Magento (CVE-2019-8144)

incidente :

    Os atacantes exploraram uma vulnerabilidade de injeção de SQL baseada no tempo na plataforma de comércio eletrônico da Magento.
  • eles ignoraram a autenticação e obtiveram acesso a dados confidenciais do cliente.

lições de mitigação :

    Patch Software regularmente para abordar as vulnerabilidades conhecidas.
  • execute testes de segurança em plugins e extensões de terceiros.

Estudo de caso 2: Shopify (2020 Bug Bounty)

incidente :

    um pesquisador de segurança identificou uma vulnerabilidade de injeção de SQL OOB na API do Shopify, que poderia vazar dados sensíveis ao DNS.
  • Isso foi capturado antes da exploração, graças ao programa de recompensa de insetos do Shopify.

lições de mitigação :

    Invista em programas de recompensa de insetos para incentivar o relatório de vulnerabilidade ética.
  • Aproveite os gateways da API para aplicar a validação estrita de consulta.

3. Estratégias defensivas avançadas

3.1. Análise de consulta dinâmica

use ferramentas que monitoram consultas de banco de dados para padrões incomuns ou complexidade excessiva.

  • Ferramentas:
      sqlmap: para testar seus sistemas.
    • Aqua Security ou Imperva: para proteção de tempo de execução.

3.2. Validação com reconhecimento de contexto

aplicar regras de validação com base no contexto:

  • Páginas de login : validar credenciais para permitir apenas valores alfanuméricos.
  • Pesquise Forms : higienize entradas para excluir operadores SQL como Select ou Union.

3.3. Configurações específicas do banco de dados

    Ativar recursos como
  • Modo de detecção de injeção SQL em mysql.
  • use os filtros Seccomp no PostgreSQL para restringir as operações perigosas.

3.4. Teste de penetração contínuo

    simular ataques para identificar vulnerabilidades antes que os atacantes o façam.
  • automatize com pipelines CI/CD usando ferramentas como Owasp Zap ou Burp Suite.

4. Desafio prático: simulação de exploração e defesa

Cenário

Um site de comércio eletrônico permite que os usuários pesquisem produtos usando um campo de entrada. Teste e prenda -o.

Passos:

    injete uma carga útil para detectar a vulnerabilidade de injeção de SQL:
'ou' 1 '=' 1 ' -
  SELECT IF(1=1, SLEEP(5), 0); -- Delays response by 5 seconds  
    Se o site estiver vulnerável, use ferramentas automatizadas como o SQLMAP para simular a extração de dados.

Fix Defension :

    implemente declarações preparadas:
$ stmt = $ PDO-> preparar ("Selecionar * de produtos onde nome =: nome"); $ stmt-> execute (['nome' => $ product_name]);
  SELECT IF(1=1, SLEEP(5), 0); -- Delays response by 5 seconds  
    Valide a entrada usando um padrão rigoroso:
import re padrão = r "^[a-za-z0-9] $" se não for re.match (padrão, user_input): Raise ValueError ("Entrada inválida!")
  import re
  pattern = r"^[a-zA-Z0-9 ] $"
  if not re.match(pattern, user_input):
      raise ValueError("Invalid input!")

5. Tendências em ataques de injeção SQL

5.1. Explorações em nuvem

Os bancos de dados baseados em nuvem são cada vez mais direcionados devido a equívocos.

5.2. Vulnerabilidades da API

Com a ascensão dos microsserviços, APIs mal projetadas são um ponto de entrada para os atacantes.

5.3. Ataques acionados por IA

As ferramentas automatizadas aproveitam a IA para criar cargas úteis de injeção complexa.


Pensamentos finais

Esta sessão avançada destaca a natureza em evolução da injeção de SQL e a importância da defesa proativa. Ao entender as técnicas de ponta e implementar medidas robustas de segurança, você pode reduzir significativamente o risco de exploração.

~ TrixSec

Declaração de lançamento Este artigo é reproduzido em: https://dev.to/trixsec/how-to-detect-and-defend-against-sql-injection-attacks-part-6-advanced-sql-injection-techniques-20mf?1 Se houver violação, entre em contato com [email protected] para reagir.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3