Direcione um Sistema de Gerenciamento de Banco de Dados Específico com sqlmap

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá a usar o sqlmap, uma poderosa ferramenta de teste de penetração de código aberto que automatiza o processo de detecção e exploração de falhas de injeção de SQL. Especificamente, você se concentrará em uma técnica de otimização chave: direcionar um Sistema de Gerenciamento de Banco de Dados (DBMS) de backend específico.

Por padrão, o sqlmap testa uma ampla variedade de sistemas de banco de dados, o que pode consumir tempo. Ao especificar o DBMS alvo (como MySQL, PostgreSQL ou MSSQL), você pode acelerar significativamente o processo de varredura, reduzir o número de requisições enviadas ao servidor e tornar seus testes mais eficientes.

Nós pré-configuramos uma aplicação web vulnerável para você praticar. A URL alvo para este laboratório é: http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit#

Vamos começar!

Identificar o DBMS de Backend Provável (por exemplo, MySQL, PostgreSQL)

Nesta etapa, você executará uma varredura básica do sqlmap para que ele identifique automaticamente o sistema de banco de dados de backend. Este é um primeiro passo comum em um teste de penetração. As informações coletadas aqui nos ajudarão a otimizar nosso ataque nas etapas subsequentes.

Usaremos o flag --batch para permitir que o sqlmap seja executado com suas respostas padrão para todas as perguntas, tornando a varredura não interativa. Também precisamos fornecer um cookie de sessão para acessar a página vulnerável. Para este laboratório, o cookie é security=low; PHPSESSID=labex.

Execute o seguinte comando no seu terminal:

sqlmap -u "http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=labex" --batch

O sqlmap iniciará seu processo de teste. Preste muita atenção à saída. Após uma série de testes, o sqlmap imprimirá informações sobre o sistema operacional do servidor web, a tecnologia do servidor web e, o mais importante, o DBMS de backend.

Você deverá ver uma saída semelhante a esta (alguns detalhes podem variar):

[INFO] o DBMS de back-end é MySQL
sistema operacional do servidor web: Linux Ubuntu
tecnologia da aplicação web: PHP 8.1.2, Apache 2.4.52
DBMS de back-end: MySQL >= 5.0

Como você pode ver, o sqlmap identificou o banco de dados de backend como MySQL. Esta é a informação crucial que usaremos a seguir.

Use o Flag --dbms para Especificar o Sistema Alvo

Nesta etapa, aprenderemos sobre o flag --dbms, que é o cerne deste laboratório. Agora que sabemos que o alvo está executando MySQL a partir da etapa anterior, não há necessidade de o sqlmap perder tempo executando testes para outros sistemas de banco de dados como PostgreSQL, Oracle ou Microsoft SQL Server.

O flag --dbms permite que você diga ao sqlmap exatamente para qual sistema de banco de dados testar. Isso torna a ferramenta muito mais eficiente.

A sintaxe é direta:
--dbms=NOME_DO_DBMS

Você substitui NOME_DO_DBMS pelo nome do banco de dados alvo. Aqui estão alguns valores comuns:

  • MySQL
  • PostgreSQL
  • MSSQL (Microsoft SQL Server)
  • Oracle
  • SQLite
  • Access

Ao fornecer esta informação, você está instruindo o sqlmap a usar apenas payloads e técnicas que são específicas para o DBMS especificado. Esta é uma habilidade fundamental para usar o sqlmap de forma eficaz em cenários do mundo real. Na próxima etapa, você aplicará este flag a uma nova varredura.

Execute uma Varredura com --dbms=MySQL

Nesta etapa, você executará a varredura do sqlmap novamente, mas desta vez adicionará o flag --dbms=MySQL. Isso dirá ao sqlmap para focar seus esforços exclusivamente em testes específicos para MySQL, com base nas informações que coletamos na Etapa 1.

Execute o seguinte comando no seu terminal. É o mesmo comando de antes, com o novo flag adicionado.

sqlmap -u "http://localhost/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=labex" --dbms=MySQL --batch

A varredura começará imediatamente. Você notará que a saída inicial do sqlmap confirma que ele está forçando o DBMS de backend para MySQL.

[INFO] forçando o DBMS de back-end para 'MySQL'

Deixe a varredura ser concluída. Na próxima etapa, analisaremos os resultados e os compararemos com nossa primeira varredura.

Observe a Redução no Número de Payloads e a Identificação Mais Rápida

Nesta etapa, você observará os benefícios diretos do uso do flag --dbms. As principais vantagens são uma redução significativa no número de testes realizados e um tempo de conclusão muito mais rápido.

Se você comparar a saída da varredura da Etapa 3 com a primeira varredura da Etapa 1, notará uma diferença fundamental. A primeira varredura gastou tempo tentando identificar o banco de dados, executando testes genéricos e depois refinando-os. A segunda varredura, no entanto, pulou tudo isso.

A saída da varredura direcionada mostrará que o sqlmap está executando apenas testes relevantes para MySQL. Você não o verá testando outros sistemas como PostgreSQL ou Oracle.

Por exemplo, uma varredura genérica pode testar centenas de payloads em diferentes tipos de injeção SQL para vários bancos de dados. A varredura direcionada, no entanto, executará apenas os payloads conhecidos por funcionarem contra MySQL. Isso resulta em:

  • Menos Requisições HTTP: A ferramenta envia significativamente menos requisições para o servidor alvo.
  • Execução Mais Rápida: O tempo total da varredura é drasticamente reduzido.

Essa eficiência é crucial em testes de penetração, onde o tempo é frequentemente uma restrição e minimizar o tráfego de rede pode ajudar a evitar a detecção por firewalls ou Sistemas de Detecção de Intrusão (IDS).

Compreenda Como Isso Otimiza o Ataque Reduzindo Casos de Teste

Nesta etapa final, vamos solidificar nossa compreensão de por que direcionar o DBMS é uma melhor prática para otimização.

O sqlmap é projetado para ser uma ferramenta abrangente. Sem qualquer orientação, seu comportamento padrão é assumir que ele não sabe nada sobre o alvo. Portanto, ele executa uma grande bateria de testes para cobrir muitas possibilidades:

  1. Impressão Digital (Fingerprinting): Primeiro, ele tenta determinar o tipo de DBMS enviando várias consultas e analisando as respostas. Cada banco de dados tem funções, mensagens de erro e comportamentos únicos que podem revelar sua identidade.
  2. Testes Amplos: Em seguida, ele testa diferentes técnicas de injeção SQL (baseada em booleano cego, baseada em tempo cego, baseada em erro, consulta UNION, etc.).
  3. Payloads Específicos do DBMS: Para cada técnica, ele tenta payloads que funcionam em diferentes sistemas de banco de dados.

Essa abordagem de "força bruta" é completa, mas ineficiente se você já souber ou puder adivinhar rapidamente o backend.

Ao usar --dbms=MySQL, você está dizendo ao sqlmap para pular completamente a etapa 1 e usar apenas os payloads da etapa 3 que são relevantes para MySQL. Isso poda um número massivo de casos de teste de seu fluxo de trabalho.

Essa otimização oferece três vantagens principais:

  • Velocidade: A varredura termina muito mais rápido porque não está executando testes desnecessários.
  • Discrição: Menos requisições significam menos "ruído" nos logs do servidor web, tornando a atividade menos propensa a acionar alertas.
  • Eficiência: Foca o poder da ferramenta nos vetores de ataque mais prováveis, aumentando as chances de uma descoberta bem-sucedida e rápida.

Dominar flags como --dbms transforma o sqlmap de um simples scanner automatizado em uma ferramenta de teste precisa e cirúrgica.

Resumo

Neste laboratório, você aprendeu uma técnica crucial para otimizar as varreduras do sqlmap. Você viu em primeira mão como identificar o Sistema de Gerenciamento de Banco de Dados (DBMS) de backend e, em seguida, usar o flag --dbms pode melhorar drasticamente a eficiência de seus testes de injeção SQL.

Você começou executando uma varredura genérica para identificar o backend como MySQL. Em seguida, aprendeu sobre o flag --dbms e o utilizou para executar uma varredura direcionada. Ao comparar as duas abordagens, você observou que a varredura direcionada foi significativamente mais rápida porque eliminou um grande número de casos de teste irrelevantes.

Este princípio de focar suas ferramentas é um conceito fundamental em testes de penetração eficazes. Parabéns por completar este laboratório e adicionar uma habilidade chave do sqlmap ao seu conjunto de ferramentas!