Em um artigo anterior, falamos um pouco sobre Segurança no Software - Vulnerabilidades e Ataques.
Nesse artigo iremos dar algumas dicas de como testar seu Software usando Injection.
Nos exemplos abaixo verificar possíveis vulnerabilidades na autenticação do Software.
Na tela de autenticação do Software:
Teste 1
Primeiramente, o invasor tenta inserir um nome utilizando aspas. Isso serve só para verificar se o formulário possui alguma função, java script ou alguma linguagem que bloqueie o uso de um caractere como a apóstrofo (‘) ou aspas simples. Conforme mostra a Figura 1. Caso não seja feito esse tipo de tratamento, ocorrerá um erro da instrução SQL (incorrect Sintax). Diante desse resultado, o invasor já sabe que existem possibilidades de invasão do referido site.
O invasor tentará então aplicar códigos SQL, e, através dos erros gerados, tentará realizar a invasão.
Teste 2
Visto que o desenvolvedor não tratou a apóstrofo, o invasor segue com a sua invasão e tenta quebrar a SQL no momento em que o parâmetro é passado. Para interromper essa instrução SQL e inserir outro código, primeiramente devemos interromper o parâmetro exatamente no momento em que ele é passado, considerando que a instrução SQL receberá o login e a senha através da caixa de texto apresentada para o usuário – conforme mostra a Figura 1. Nesse momento é que o invasor digitará um simples código: ‘ or 1=1 –.
Esse é o tipo de invasão mais comum. Nela, o apóstrofo serve para interromper o código anterior e iniciar o novo comando.
Teste 3
O exemplo acima busca os campos nm_usuario, nm_senha, nm_permissao referente a tabela usuário, quando o nm_usuário seja igual a vazio ou quando o número 1 for igual a 1. Nesse caso, a ultima condição sempre dará como verdadeira. Os últimos dois hifens servem para desconsiderar o final da String SQL.
Também é possível buscar por um usuário chamado admin, pois na maioria das bases de dados é cadastrado um usuário com esse nome, por padrão. Dessa forma, o invasor tentará invadir com o nome admin e a senha como ‘ or 1=1 como mostra a Figura 3. Se houver realmente um usuário com esse nome, ele conseguirá burlar o sistema.
________________________________________
Esses erros não deverão apresentar elementos como queries ou erros que possam identificar elementos estruturais.
As mensagens de erro devem ser mascaradas de forma apresentar informações sucintas para o usuário.
Em uma caixa de texto do Software:
Teste 4
<script>alert('XSS');</script>
Pressionar a opção de submit do Software
?msg=<script>alert('bip')</script>
Pressionar a opção de submit do Software
<img src=JaVaScRiPt:alert('XSS')>
Pressionar a opção de submit do Software
<img"""><script>alert("XSS")</script>">
Pressionar a opção de submit do Software
Alguns exemplos de erro
Outros tipos de teste que podemos fazer nos campos do Software são:
Teste 8
Em um campo de texto digitar Tes'te
Pressionar a opção de submit do Software
O Software substitui o apóstrofe(') pelo duplo apóstrofe ('') ou exclui o apóstrofe (')
Pressionar a opção de submit do Software
Teste 5
Pressionar a opção de submit do Software
Teste 6
<img src=JaVaScRiPt:alert('XSS')>
Pressionar a opção de submit do Software
Teste 7
<img"""><script>alert("XSS")</script>">
Pressionar a opção de submit do Software
Alguns exemplos de erro
Outros tipos de teste que podemos fazer nos campos do Software são:
Teste 8
Em um campo de texto digitar Tes'te
Pressionar a opção de submit do Software
O Software substitui o apóstrofe(') pelo duplo apóstrofe ('') ou exclui o apóstrofe (')
Risco Mitigado: A presença de um caractere de apóstrofe (') no conteúdo de uma variável concatenada no SQL é usada para delimitar strings de texto.
Se não for tratado o apóstrofe vai ocorrer um erro de SQL (incorrect Sintax)
Se não for tratado o apóstrofe vai ocorrer um erro de SQL (incorrect Sintax)
Teste 9
Em um campo qualquer digitar caracteres especiais
Pressionar a opção de submit do Software
Caso o Software permita a digitação de caracteres especiais, o Plano de Testes deverá indicar que este campo permitirá a digitação de Aspas ou apostrofe bem como palavras reservadas de programação.
Não perca o próximo artigo.
________________________________________
Gostou? Compartilhe!
Nenhum comentário:
Postar um comentário