sexta-feira, 16 de maio de 2014

Segurança no Software - Vulnerabilidades e Ataques - Injection

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.
  ________________________________________

O Injection também pode ser utilizado em outros campos do Software para provocar alguns erros.

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

Teste 5
          ?msg=<script>alert('bip')</script>
          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)

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!

br.linkedin.com/pub/silas-fellipe/24/33a/950

 

Nenhum comentário:

Postar um comentário