• Save
Testes de segurança em aplicações web
Upcoming SlideShare
Loading in...5
×
 

Testes de segurança em aplicações web

on

  • 10,346 views

A segurança dos softwares desenvolvidos atualmente está se tornando um ponto cada vez mais importante a ser testado. Apesar disso, testar a segurança de um software é algo muito complexo e ...

A segurança dos softwares desenvolvidos atualmente está se tornando um ponto cada vez mais importante a ser testado. Apesar disso, testar a segurança de um software é algo muito complexo e custoso. Portanto, os testes de segurança devem ser focados nos pontos onde a segurança tem uma probabilidade maior de ser comprometida. Nessa palestra veremos quais as falhas de segurança são mais comuns em aplicações web, alguns exemplos de como testá-las e algumas ferramentas open source que auxiliam nesse tipo de teste.

Statistics

Views

Total Views
10,346
Views on SlideShare
9,957
Embed Views
389

Actions

Likes
2
Downloads
0
Comments
1

5 Embeds 389

http://www.synergia.dcc.ufmg.br 349
http://www.slideshare.net 36
http://novosynergia.synergia.dcc.ufmg.br 2
https://twitter.com 1
http://h.synergia.dcc.ufmg.br 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Good
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Testes de segurança em aplicações web Testes de segurança em aplicações web Presentation Transcript

    • Testes de segurança em aplicações web Eduardo Habib Bechelane Maia
    • Roteiro da apresentação Introdução Problema Principais falhas Ferramentas Open Source Conclusão
    • Introdução No início da internet, segurança não era preocupação. Hoje a maoria dos sites é uma aplicação Possuem muitas funcionalidades. Suportam login, transações comerciais. Conteúdo dinâmico. Informações confidenciais.
    • Introdução Cada aplicação é diferente. Falhas únicas. Desenvolvidas por pessoas que possuem pouco entendimento sobre segurança. Sites consultam servidores que possuem informações confidenciais. SSL Não impossibilita ataques. Segurança ruim pode comprometer bolso.
    • Introdução Segurança na transmissão de dados é importante. Comércio eletrônico. Tráfego de informações confidenciais. Evitar fraudes. Evitar propagação de virus
    • Introdução
    • Por que fazer testes de segurança? Apesar do aumento da preocupação, incidentes vêm aumentando ano a ano. Aumento de incidentes de 61% de 2008 para 2009. Aumento de 11530% de 1999 até 2009. Universidade de Michigan -> 75% dos sites de Bancos possuem alguma falha grave. Whitehat Security -> 64% de 1364 sites corporativos possuem falhas graves.
    • Problema principal da segurança O Usuário pode enviar QUALQUER dado Deve-se assumir que toda entrada pode ser maliciosa. Requisições podem ser feitas em qualquer sequência Usuários não irão usar apenas o navegador para acessar a aplicação.
    • Problema principal da segurança Exemplos: Usuários podem mudar o preço de um produto na requisição; Modificar o token da sessão transmitido. Remover certos parâmetros que normalmente são enviados. Armazenar Scripts para serem rodados depois. SSL não resolve esse problema.
    • Top 10 Owasp Falhas de injeção Cross Site Scripting (XSS) Falhas de autenticação e de gerenciamento de sessão Referência insegura a objetos Cross Site Request Forgery (CSRF) Problemas de configuração Falha ao rstringir o acesso a alguma URL Redirecionamento inválido Problemas no armazenamento de informações confidenciais Proteção na camada de transporte insuficiente Sem criptografia Certificados inválidos
    • Mapeamento da aplicação Levantamento de informações sobre a aplicação. O que ela faz e como ela funciona? Examinar cada aspecto de suas funcionalidades. Mapeamento manual Para processo preciso, automação é necessária. Ferramentas chamadas de Web Spidering
    • Burlando o controle no cliente Campos hidden Tamanho de campos
    • Cookies Cookies Cookies também podem ter valor alterado Ex.: Cookie de sessão, usuário e desconto.
    • Transmissão de dados via parâmetros da URL Pode ser mudado de forma trivial sem usar qualquer ferramenta.
    • Validações do lado do cliente Validações podem ser burladas Significa que são inúteis? Não Melhora usabilidade Diminui requisições ao servidor.
    • Atacando a Autenticação Se usuário existe e tem permissão ele loga. Senão, não loga. Autenticação TEM que ser segura. Senhas “Fracas” Senha iniciada com um valor padrão Login por força bruta Logins comuns, de teste, controle de falhas por cookies. Senha com valor padrão.
    • Força bruta Mensagem diferente na falha do login e da senha Acessos com vários estágios de autenticação. Algumas aplicações reiniciam a senha assim que a pergunta secreta é respondida. Dicas: Entenda o mecanismo através de uma conta que você conheça. Se existe uma pergunta secreta, identifique as possíveis perguntas. Tente identificar qualquer comportamento que possa ser explorado. Funcionalidade Remember me.
    • Prevenção de ataques de força bruta Travamento da conta após algumas tentativas Suspensão da conta por algum período Uso do captcha Informação do captcha deve estar apenas na imagem.
    • Testar existência de logs Deve-se logar todas as informações que podem vir a ser relevantes Qualquer suspeita de anomalia deve ser investigada. Usuários devem ser informados de qualquer possibilidade de vazamento de informações.
    • Atacando o controle de acesso Acesso vertical Usuários conseguem acessar funcionalidade que não deveriam conseguir. Acesso horizontal Um usuário consegue ver ou modificar dados que ele não deveria conseguir. Ex: WebMail, bancos etc.
    • Exemplos de falhas Arquivos estáticos https://www.site.com/download/0636628104.pdf Acesso passado via URL https://wahh.site.com/login/home.jsp?admin=true Path traversal WebGoat (Bypass a Path Based Access control) ../../../conf/tomcat-users.xml Etágio 1 de (Bypass a Path Based Access control)
    • Injetando código Definição Manipulação de uma instrução SQL através das variáveis quem compõem os parâmetros recebidos a ser inseridos numa consulta. Objetivo do Uso Permissão de acesso a conteúdo restrito; Deleção de tabelas; Alteração / Deleção / Inserção de conteúdos; Outros.
    • Injetando código SELECT nome,sobrenome FROM user WHERE name = ‘nome’ O que acontecerá se for digitado habib‘ or ‘1’=‘1 ?
    • Injetando código Teste de Vulnerabilidade Básico http://www.site.com.br/noticias.asp?publisher=wiley http://www.site.com.br/noticias.asp?publisher=wiley’ Microsoft JET Database Engine (0x80040E14) Erro de sintaxe na seqüência de caracteres na expressão de consulta ‘publisher= wiley''. /noticias.asp, line 6
    • Injetando código Considere uma aplicação web que possua uma tela que faça a seguinte pesquisa SELECT author,title,year FROM books WHERE publisher = ‘Wiley’ E se o usuário digitar no campo de pesquisa: Wiley’ OR ‘a’ = ‘a E se a for colocado um OR desses no login?
    • Exemplo – WebGoat SQL Stage 1 e 3 •' or '1' = '1
    • Atacando outros usuários Ataques aos usuários Usuários atacam a aplicação com o intuito de atacar o usuário. “Travamento” do usuário. Roubo de dados. Scripts podem “vigiar” os usuários. Scripts podem modificar o conteúdo do site. Explorar relação de confiança. Travar ou redirecionar browser. Principal forma: Cross-site scripting.
    • Cross-site Scripting (XSS) XSS não armazenado: código malicioso é inserido na página e resposta é obtida instantaneamente. https://www.site.com.br/error.php?message==Desculpe%2c+um +erro+ocorreu https://www.site.com.br/error.php?message=<script>alert(‘xss’); </script> XSS armazenado: o código malicioso é inserido no servidor para ser executado posteriormente. <script>alert(‘xss’);</script> Exemplo: Stored XSS no WebGoat – Stage 1 Banco do Brasil
    • Cross-site Scripting (XSS) Exemplo 2 http://www.infoconsumo.gov.br/busca/busca.asp Código da página: <input type="TEXT" class="caixaSimples" value="" maxlength="100" size="25" name="SearchString"> Entrada: '"><script>alert('teste')</script> Saída: <input type="TEXT" name="SearchString" size="25" maxlength="100" value="'"> <script>alert(‘teste') </script> " class="caixaSimples"> Outros exemplos de entradas XSS-Me SQL Inject Me
    • Ataque Cross-site Scripting ao MySpace Usuário Implementou script que fazia 2 coisas: Adicionava o invasor na lista de amigos Copiava o script no profile da vítima. 1 milhão de vítimas em menos de 1 hora. MySpace foi retirado do ar. Removeu o código mailicioso de todos os profiles.
    • Explorando informações exibidas Mensagens de erro. Stack Traces exibidos. Mostra a razão precisa do erro. Faz referência a bibliotecas de terceiros. Informações adicionais sobre o ambiente. Erros de scripts. Dicas sobre parâmetros. Mensagens de depuração.
    • Revisões no código Existem várias situações onde é possível auditar o código. Ex: Verificar se as entradas estão sendo tratadas. Programador experiente Conhecimento profundo da arquitetura.
    • Algumas ferramentas Plugins para navegadores Firefox FoxyProxy Tamper Data Live HTTP Headers AddNEditCookies Cookie Watcher XSS Me SQL Inject Me Hack Bar
    • Algumas ferramentas Scanner Paros Outros WebScarab Burp Suite
    • Fonte aberta Projeto Owasp WebScarab WebGoat.
    • Conclusão Todo sistema / aplicação é passível de invasão. Todos usuários são potenciais invasores. Otimização e cautela na programação. Análise de riscos. Novas tecnologias irão criar novas “brechas”. Ataques às aplicações estão perdendo espaço para ataques a usuários.
    • Referências Livros The Web Application Hacker’s Handbook Software Security: Building Security In Cross-Site Scripting: Uma Análise Prática Analyzing the Accuracy and Time Costs of Web Application Security Scanners http://www.parosproxy.org/index.shtml Projeto Owasp http://www.owasp.org
    • Testes de segurança em aplicações web Eduardo Habib Bechelane Maia. habib@dcc.ufmg.br