Contornar Filtros Básicos com Scripts Tamper no sqlmap

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você explorará como usar os poderosos scripts tamper do sqlmap para contornar filtros comuns de aplicações web. Muitas aplicações web implementam validação e filtragem de entrada básicas para prevenir ataques de injeção SQL. Esses filtros podem bloquear palavras-chave SQL comuns, espaços ou outros caracteres. Os scripts tamper do sqlmap podem modificar automaticamente os payloads de injeção SQL para evadir esses filtros, tornando seus ataques mais eficazes. Você aprenderá a identificar cenários onde a evasão é necessária, listar os scripts tamper disponíveis, aplicar um script específico e observar seu efeito nos payloads gerados.

Identificar um Cenário que Requer Evasão

Nesta etapa, você entenderá por que os scripts tamper são necessários. Aplicações web frequentemente empregam filtros básicos para prevenir padrões comuns de injeção SQL. Por exemplo, um filtro pode bloquear espaços ou substituí-los por outros caracteres, ou pode bloquear palavras-chave como UNION ou SELECT. Quando os payloads padrão do sqlmap são bloqueados, você precisa modificá-los para contornar esses filtros.

Considere um cenário hipotético onde uma aplicação web filtra espaços na entrada do usuário. Se o sqlmap tentar injetar um payload como ' OR 1=1--, o filtro pode transformá-lo em 'OR1=1--, tornando o payload ineficaz. Os scripts tamper ajudam o sqlmap a gerar payloads alternativos que podem contornar tais restrições.

Para simular uma varredura básica do sqlmap sem quaisquer técnicas de evasão, usaremos uma URL fictícia. Isso nos ajudará mais tarde a comparar os payloads gerados com e sem scripts tamper.

Execute o seguinte comando sqlmap para iniciar uma varredura básica contra um alvo fictício. Observe que este alvo não é realmente vulnerável, mas nos permite observar o comportamento do sqlmap e os payloads gerados.

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dump --batch --forms --level 1 --risk 1 --parse-errors --technique=U --eta --output-dir=/tmp/sqlmap_output_no_tamper

Este comando tentará realizar uma varredura básica de injeção SQL. A opção --dump é usada para extrair dados, --batch executa em modo não interativo, --forms verifica formulários, --level 1 --risk 1 define o nível de detecção e risco, --parse-errors analisa mensagens de erro, --technique=U especifica injeção SQL com consulta UNION, --eta mostra o tempo estimado de chegada, e --output-dir especifica o diretório de saída.

Observe a saída. Embora este comando específico possa não encontrar vulnerabilidades no URL fornecido (pois é um site de teste geral e não configurado especificamente para o propósito deste laboratório), o objetivo é ver a tentativa inicial do sqlmap e entender que, às vezes, essas tentativas podem ser bloqueadas por filtros.

Listar Scripts Tamper Disponíveis com --list-tampers

Nesta etapa, você aprenderá como listar todos os scripts tamper disponíveis no sqlmap. O sqlmap vem com uma grande variedade de scripts tamper, cada um projetado para contornar tipos específicos de filtros ou WAFs (Web Application Firewalls). Saber quais scripts estão disponíveis é crucial para selecionar o correto para suas necessidades de evasão.

Para listar todos os scripts tamper disponíveis, use a opção --list-tampers com o sqlmap.

sqlmap --list-tampers

Este comando exibirá uma lista de todos os arquivos .py localizados no diretório tamper do sqlmap. Cada arquivo representa um script tamper diferente. Por exemplo, você pode ver scripts como space2comment.py, unionalltostring.py, apostrophemask.py, etc. Cada script tem um propósito específico, como substituir espaços por comentários, converter UNION ALL para concatenação de strings, ou mascarar apóstrofos.

Revise a lista e tente entender o propósito de alguns scripts com base em seus nomes. Por exemplo, space2comment.py é projetado para substituir espaços por comentários SQL, o que pode contornar filtros que bloqueiam espaços.

Selecionar e Aplicar um Script Tamper com --tamper=space2comment

Nesta etapa, você selecionará e aplicará um script tamper específico à sua varredura sqlmap. Para este laboratório, usaremos o script tamper space2comment. Este script substitui espaços no payload de injeção SQL por sequências /**/ (comentário de múltiplas linhas). Esta técnica é eficaz contra filtros que bloqueiam ou removem espaços, mas permitem comentários SQL.

Para aplicar um script tamper, você usa a opção --tamper seguida pelo nome do script (sem a extensão .py).

Execute o seguinte comando sqlmap, desta vez incluindo o script tamper space2comment:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dump --batch --forms --level 1 --risk 1 --parse-errors --technique=U --eta --tamper=space2comment --output-dir=/tmp/sqlmap_output_with_tamper

Observe a adição de --tamper=space2comment. Isso informa ao sqlmap para processar todos os payloads gerados através deste script tamper específico antes de enviá-los ao alvo.

Embora a saída possa parecer semelhante à etapa anterior, internamente, o sqlmap está agora modificando seus payloads. Na próxima etapa, examinaremos a diferença nos payloads gerados.

Executar uma Varredura com o Script Tamper Selecionado

Nesta etapa, você já executou o comando sqlmap com o script tamper space2comment na etapa anterior. O objetivo desta etapa é reforçar a execução e preparar para a comparação de payloads.

O comando que você executou foi:

sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --dump --batch --forms --level 1 --risk 1 --parse-errors --technique=U --eta --tamper=space2comment --output-dir=/tmp/sqlmap_output_with_tamper

Este comando instrui o sqlmap a realizar uma varredura, mas desta vez, ele modificará seus payloads usando o script tamper space2comment. Por exemplo, um payload como UNION SELECT pode ser transformado em UNION/**/SELECT. Esta mudança sutil pode frequentemente contornar mecanismos simples de filtragem de espaços.

A opção --output-dir=/tmp/sqlmap_output_with_tamper garante que a saída do sqlmap, incluindo quaisquer payloads ou logs gerados, seja armazenada em um diretório separado. Isso será útil para comparar os payloads na próxima etapa.

Permita que a varredura do sqlmap seja concluída. Mesmo que ele não encontre uma vulnerabilidade no alvo fictício, o importante é que o sqlmap tentou usar payloads adulterados.

Comparar Payloads com e sem o Script Tamper

Nesta etapa final, você comparará os payloads gerados pelo sqlmap com e sem o script tamper space2comment. Esta comparação demonstrará visualmente como os scripts tamper modificam os payloads de injeção para evadir filtros.

O sqlmap registra suas atividades, incluindo os payloads que envia, no diretório de saída. Especificamos diretórios de saída diferentes para as varreduras na Etapa 1 e na Etapa 3.

Primeiro, vamos tentar encontrar alguns arquivos de log que possam conter os payloads. O sqlmap normalmente armazena requisições HTTP em arquivos dentro de seu diretório de saída.

Navegue até os diretórios de saída e procure por logs de requisição. Os nomes exatos dos arquivos podem variar, mas geralmente estão em log/ ou diretamente no diretório do alvo.

Vamos tentar encontrar um arquivo de log comum que contenha as requisições. O sqlmap frequentemente cria um arquivo session.log ou similar.

Use grep para procurar por palavras-chave SQL comuns nos arquivos de log de ambas as execuções.

Compare os payloads observando as diferenças na forma como os espaços são tratados.

echo "--- Payloads sem script tamper ---"
grep -r "UNION" /tmp/sqlmap_output_no_tamper/ | head -n 5

echo ""
echo "--- Payloads com script tamper ---"
grep -r "UNION" /tmp/sqlmap_output_with_tamper/ | head -n 5

Você deverá observar que na saída "Payloads com script tamper", os espaços dentro de palavras-chave SQL (como UNION SELECT) são substituídos por comentários /**/, enquanto na saída "Payloads sem script tamper", espaços regulares são usados. Isso ilustra claramente o efeito do script tamper space2comment.

Esta comparação destaca a eficácia dos scripts tamper em modificar payloads para contornar mecanismos básicos de filtragem, tornando o sqlmap uma ferramenta mais versátil para testes de penetração.

Resumo

Neste laboratório, você aprendeu com sucesso a usar os scripts tamper do sqlmap para contornar filtros básicos de aplicações web. Você começou entendendo a necessidade de técnicas de evasão ao lidar com filtros de entrada. Em seguida, explorou como listar os scripts tamper disponíveis usando --list-tampers e selecionou o script space2comment para uma demonstração prática. Finalmente, você executou o sqlmap com e sem o script tamper e comparou os payloads gerados, observando claramente como o script space2comment modificou os espaços em comentários /**/. Esta experiência prática o equipou com uma habilidade fundamental para aprimorar suas capacidades de teste de injeção SQL, evadindo mecanismos de filtragem comuns.