A equipe de segurança de um órgão público detectou em seus sistemas de monitoramento a seguinte requisição em direção a um site do órgão: http://www.site.gov.br/index.php?username=1'%20or%20'1'%20 =%20'1'))/*&password=t&$t3. O tipo e a técnica de ataque detectados são, respectivamente:
- A)HTML injection, com o objetivo de alterar a página de login;
Errada, porque HTML injection altera conteúdo exibido no navegador, enquanto aqui o alvo é a consulta ao banco de dados e o login.
- B)SQL injection, com o objetivo de bypassar a página de login;
Certa, pois a sequência usa sintaxe típica de SQL injection para tornar a condição de autenticação verdadeira e burlar o login.
- C)SQL injection, com o objetivo de forçar o banco de dados a gerar um erro;
Errada, porque o objetivo não é provocar erro no banco, e sim explorar a lógica da consulta para entrar no sistema.
- D)Command injection, com o objetivo de realizar a execução de código na página de login;
Errada, porque command injection envolve execução de comandos no sistema operacional, não manipulação de instrução SQL em parâmetro de autenticação.
- E)Command injection, com o objetivo de forçar o banco de dados a gerar um erro.
Errada, porque command injection não tem relação direta com erro do banco de dados, e a estrutura da URL aponta para manipulação de SQL.
Gabarito: B
A questão mostra uma URL com parâmetros de login alterados por uma sequência clássica de aspas, operadores lógicos e comentário: isso é a cara de SQL injection. A ideia do atacante é interferir na consulta feita no banco, fazendo o sistema "entender" uma condição sempre verdadeira, como se dissesse: "não precisa nem conferir direito, deixa passar". No login, isso costuma servir para burlar autenticação, porque a aplicação monta a query de forma insegura, concatenando entrada do usuário com o SQL. Quando aparece algo como ' or '1'='1, o invasor tenta transformar a validação em uma expressão verdadeira, ignorando a senha e entrando no sistema sem credenciais válidas. O trecho /* reforça a intenção de comentar o restante da instrução SQL, evitando que o comando original atrapalhe o ataque. Em provas, quando você vê aspas, OR, 1=1 e comentário em parâmetros de URL ou formulário, pense primeiro em SQL injection, não em HTML ou command injection. Por isso o gabarito B está correto: o tipo de ataque é injeção SQL e a técnica é o bypass da página de login. Em termos doutrinários, isso é um exemplo típico de falha de validação de entrada e de construção insegura de consultas, problema clássico de segurança de aplicações.