TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Software Seguro

Pesquisas Acadêmicas: Software Seguro. Pesquise 862.000+ trabalhos acadêmicos

Por:   •  18/11/2013  •  464 Palavras (2 Páginas)  •  652 Visualizações

Página 1 de 2

Exemplo de ataque:

Inicialmente usaremos uma consulta abaixo para exemplificar a vulnerabilidade. Quando um usuário utiliza o campo de pesquisa para procurar por todos os livros do editor CRAFT, a aplicação executa a seguinte consulta no banco :

SELECT autor, titulo, ano FROM livros WHERE editor = ‘CRAFT’ AND

publicado=1

Essa consulta obriga o banco de dados verificar cada linha dentro da tabela livros, extrair cada registro em que a coluna editor tenha o conteúdo CRAFT e publicado com o valor 1, e ao término, retornar o conjunto de todos esses registros, publicando o resultado em uma página HTML. Agora o usuário quer fazer uma busca por todos os livros produzidos pela L’CRAFT, isso faz a aplicação executar a seguinte consulta:

SELECT autor, titulo, ano FROM livros WHERE editor = ‘L'CRAFT’ and publicado=1

O interpretador executa a consulta analisando o que está dentro de aspas simpes, e obtem o valor L, em seguida ele encontra a expressão CRAFT que não é uma sintaxe SQL válida e acaba gerando um erro:

Incorrect syntax near 'CRAFT'.

Server: Msg 105, Level 15, State 1, Line 1

Unclosed quotation mark before the character string '

Esta mensagem de erro indica que a aplicação produziu um comportamento inesperado, ou seja, a estrutura geral do pedido de consulta ao banco de dados, que antes produzia resultados corretos, foi alterada de maneira arbitrária e não pode ser concluída com sucesso.

Se o atacante puder realizar modificações estruturais ao pedido de consulta ao banco de dados para permitir a reprogramação de suas funcionalidades inicial, o aplicativo está vulnerável à injeção de SQL. Um exemplo seria modificar a pesquisa para listar todos os livros disponíveis através do seguinte termo:

CRAFT' OR 1=1--

Portanto, este pedido seria executado desta maneira no banco de dados:

SELECT autor, titulo, ano FROM livros WHERE editor = ‘CRAFT’ OR 1=1--’ and publicado =1

A condição CRAFT’ OR 1=1– faz com que a cláusula WHERE sempre seja avaliado como verdadeiro e ignora o restante da consulta, essa consulta permite ao invasor ignorar a exigência de que a consulta retorne apenas itens de propriedade do usuário autenticado, o banco de dados verifica cada linha na tabela e extrai cada registro onde a coluna publisher tem o valor “CRAFT” ou onde 1 é igual a 1, fazendo com que a consulta agora retorne para aplicação todas as entradas armazenadas na tabela, independentemente do seu proprietário.

A utilização de meta-caracteres que sejam interpretados como comentários, como é o caso da sequência “–”, é frequentemente empregada nos ataques de injeção SQL, pois permite que você ignore o restante da consulta criado pelo desenvolvedor do aplicativo.

Uma forma alternativa é a utilização de aspas sem usar o símbolo de comentário e terminar a injeção inserindo o termo de pesquisa:

CRAFT' OR 'a' = 'a

O resultado

...

Baixar como (para membros premium)  txt (3.1 Kb)  
Continuar por mais 1 página »
Disponível apenas no TrabalhosGratuitos.com