SlideShare a Scribd company logo
1 of 39
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

More Related Content

What's hot

Dengue, Zica E cHIKUNGUNYA
Dengue, Zica E cHIKUNGUNYADengue, Zica E cHIKUNGUNYA
Dengue, Zica E cHIKUNGUNYANicole Gouveia
 
Security champions v1.0
Security champions v1.0Security champions v1.0
Security champions v1.0Dinis Cruz
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Camilo Ribeiro
 
Asma brônquica alérgica
Asma brônquica alérgicaAsma brônquica alérgica
Asma brônquica alérgicaRenan Ribeiro
 
Detectando Vulnerabilidades em seu Site utilizando OWASP ZAP - Zed Attack Proxy
Detectando Vulnerabilidades em seu Site utilizando OWASP ZAP - Zed Attack ProxyDetectando Vulnerabilidades em seu Site utilizando OWASP ZAP - Zed Attack Proxy
Detectando Vulnerabilidades em seu Site utilizando OWASP ZAP - Zed Attack ProxyJeronimo Zucco
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de softwareRondinelli Mesquita
 
Android security
Android securityAndroid security
Android securityMobile Rtpl
 
Enterprise Mobile Device Management (MDM)
Enterprise Mobile Device Management (MDM)Enterprise Mobile Device Management (MDM)
Enterprise Mobile Device Management (MDM)SPEC INDIA
 

What's hot (20)

Dengue, Zica E cHIKUNGUNYA
Dengue, Zica E cHIKUNGUNYADengue, Zica E cHIKUNGUNYA
Dengue, Zica E cHIKUNGUNYA
 
Security champions v1.0
Security champions v1.0Security champions v1.0
Security champions v1.0
 
Varíola
VaríolaVaríola
Varíola
 
História das Vacinas
História das VacinasHistória das Vacinas
História das Vacinas
 
Segurança em Desenvolvimento de Software
Segurança em Desenvolvimento de SoftwareSegurança em Desenvolvimento de Software
Segurança em Desenvolvimento de Software
 
Doenças vírais
Doenças víraisDoenças vírais
Doenças vírais
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
 
Android security
Android securityAndroid security
Android security
 
Trabalho Riscos BiolóGicos
Trabalho Riscos BiolóGicosTrabalho Riscos BiolóGicos
Trabalho Riscos BiolóGicos
 
Técnicas de Teste
Técnicas de TesteTécnicas de Teste
Técnicas de Teste
 
Slides agentes biológicos!
Slides agentes biológicos!Slides agentes biológicos!
Slides agentes biológicos!
 
Asma brônquica alérgica
Asma brônquica alérgicaAsma brônquica alérgica
Asma brônquica alérgica
 
Roedores e artropodes
Roedores e artropodesRoedores e artropodes
Roedores e artropodes
 
Detectando Vulnerabilidades em seu Site utilizando OWASP ZAP - Zed Attack Proxy
Detectando Vulnerabilidades em seu Site utilizando OWASP ZAP - Zed Attack ProxyDetectando Vulnerabilidades em seu Site utilizando OWASP ZAP - Zed Attack Proxy
Detectando Vulnerabilidades em seu Site utilizando OWASP ZAP - Zed Attack Proxy
 
0 conceitos sobre parasitologia
0   conceitos sobre parasitologia0   conceitos sobre parasitologia
0 conceitos sobre parasitologia
 
CMM e CMMI
CMM e CMMICMM e CMMI
CMM e CMMI
 
Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Android security
Android securityAndroid security
Android security
 
Enterprise Mobile Device Management (MDM)
Enterprise Mobile Device Management (MDM)Enterprise Mobile Device Management (MDM)
Enterprise Mobile Device Management (MDM)
 

Similar to Testes de segurança em aplicações web

Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesClavis Segurança da Informação
 
Desenvolvimento de Software Seguro
Desenvolvimento de Software SeguroDesenvolvimento de Software Seguro
Desenvolvimento de Software SeguroAugusto Lüdtke
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Clavis Segurança da Informação
 
Engenharia de Software II - Teste de segurança de software
Engenharia de Software  II - Teste de segurança de softwareEngenharia de Software  II - Teste de segurança de software
Engenharia de Software II - Teste de segurança de softwareJuliano Padilha
 
OWASP TOP 10 - Web Security
OWASP TOP 10 - Web SecurityOWASP TOP 10 - Web Security
OWASP TOP 10 - Web SecurityMarlon Bernardes
 
Workshop - Testes de Segurança
Workshop - Testes de SegurançaWorkshop - Testes de Segurança
Workshop - Testes de SegurançaAlan Carlos
 
Como analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali LinuxComo analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali LinuxEdlaine Zamora
 
Seguranca web Testday2012
Seguranca web Testday2012Seguranca web Testday2012
Seguranca web Testday2012Marcio Cunha
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR, UnB
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEMagno Logan
 
CWI - Núcleo de tecnologia - OWASP Top Ten
CWI - Núcleo de tecnologia - OWASP Top TenCWI - Núcleo de tecnologia - OWASP Top Ten
CWI - Núcleo de tecnologia - OWASP Top TenPOANETMeetup
 
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...Clavis Segurança da Informação
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPFlavio Souza
 
Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Alex Hübner
 
Teste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações WebTeste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações WebMarcio Roberto de Souza Godoi
 

Similar to Testes de segurança em aplicações web (20)

Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
 
Desenvolvimento de Software Seguro
Desenvolvimento de Software SeguroDesenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
 
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
Tutorial: Principais Vulnerabilidades em Aplicações Web – Rafael Soares Ferre...
 
Engenharia de Software II - Teste de segurança de software
Engenharia de Software  II - Teste de segurança de softwareEngenharia de Software  II - Teste de segurança de software
Engenharia de Software II - Teste de segurança de software
 
OWASP TOP 10 - Web Security
OWASP TOP 10 - Web SecurityOWASP TOP 10 - Web Security
OWASP TOP 10 - Web Security
 
Workshop - Testes de Segurança
Workshop - Testes de SegurançaWorkshop - Testes de Segurança
Workshop - Testes de Segurança
 
Como analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali LinuxComo analisar a vulnerabilidade de uma aplicação web com o Kali Linux
Como analisar a vulnerabilidade de uma aplicação web com o Kali Linux
 
Seguranca web Testday2012
Seguranca web Testday2012Seguranca web Testday2012
Seguranca web Testday2012
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
 
OWASP Top Ten
OWASP Top TenOWASP Top Ten
OWASP Top Ten
 
CWI - Núcleo de tecnologia - OWASP Top Ten
CWI - Núcleo de tecnologia - OWASP Top TenCWI - Núcleo de tecnologia - OWASP Top Ten
CWI - Núcleo de tecnologia - OWASP Top Ten
 
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
OWASP Top 10 - Experiência e Cases com Auditorias Teste de Invasão em Aplicaç...
 
Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019Desenvolvimento seguro - WorkSec 2019
Desenvolvimento seguro - WorkSec 2019
 
Ameaças e Vulnerabilidade em Apps Web-2013
Ameaças e Vulnerabilidade em Apps Web-2013Ameaças e Vulnerabilidade em Apps Web-2013
Ameaças e Vulnerabilidade em Apps Web-2013
 
Ameacas e Vulnerabilidades em Apps Web-2013
Ameacas e Vulnerabilidades em Apps Web-2013Ameacas e Vulnerabilidades em Apps Web-2013
Ameacas e Vulnerabilidades em Apps Web-2013
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
 
Java security
Java securityJava security
Java security
 
Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?Aplicações Web ‐ Seu site está seguro?
Aplicações Web ‐ Seu site está seguro?
 
Teste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações WebTeste de Segurança: Vulnerabilidade de Aplicações Web
Teste de Segurança: Vulnerabilidade de Aplicações Web
 

More from Synergia - Engenharia de Software e Sistemas

More from Synergia - Engenharia de Software e Sistemas (12)

Testes ágeis: saindo da zona de conforto
Testes ágeis: saindo da zona de confortoTestes ágeis: saindo da zona de conforto
Testes ágeis: saindo da zona de conforto
 
Desenvolvendo aplicações web com GWT
Desenvolvendo aplicações web com GWTDesenvolvendo aplicações web com GWT
Desenvolvendo aplicações web com GWT
 
Teste de Aceitação: problemas, desafios e abordagens
Teste de Aceitação: problemas, desafios e abordagensTeste de Aceitação: problemas, desafios e abordagens
Teste de Aceitação: problemas, desafios e abordagens
 
Por que contratar projetos ágeis?
Por que contratar projetos ágeis?Por que contratar projetos ágeis?
Por que contratar projetos ágeis?
 
Inspeções em desenvolvimento de software
Inspeções em desenvolvimento de softwareInspeções em desenvolvimento de software
Inspeções em desenvolvimento de software
 
Como os testes irão se modificar com o advento das metodologias ágeis
Como os testes irão se modificar com o advento das metodologias ágeisComo os testes irão se modificar com o advento das metodologias ágeis
Como os testes irão se modificar com o advento das metodologias ágeis
 
Gestão de Processos de Negócio (BPM)
Gestão de Processos de Negócio (BPM)Gestão de Processos de Negócio (BPM)
Gestão de Processos de Negócio (BPM)
 
Controle estatístico de processos
Controle estatístico de processosControle estatístico de processos
Controle estatístico de processos
 
O retorno do investimento no projeto adequado de interfaces de usuário
O retorno do investimento no projeto adequado de interfaces de usuárioO retorno do investimento no projeto adequado de interfaces de usuário
O retorno do investimento no projeto adequado de interfaces de usuário
 
Gerenciamento de projetos usando corrente crítica
Gerenciamento de projetos usando corrente críticaGerenciamento de projetos usando corrente crítica
Gerenciamento de projetos usando corrente crítica
 
Aplicações Web Ricas e Acessíveis
Aplicações Web Ricas e AcessíveisAplicações Web Ricas e Acessíveis
Aplicações Web Ricas e Acessíveis
 
Introdução a gerenciamento de projetos e PMBoK®
Introdução a gerenciamento de projetos e PMBoK®Introdução a gerenciamento de projetos e PMBoK®
Introdução a gerenciamento de projetos e PMBoK®
 

Testes de segurança em aplicações web

  • 1.
  • 2. Testes de segurança em aplicações web Eduardo Habib Bechelane Maia
  • 3. Roteiro da apresentação Introdução Problema Principais falhas Ferramentas Open Source Conclusão
  • 4. 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.
  • 5. 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.
  • 6. 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
  • 8. 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.
  • 9. 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.
  • 10. 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.
  • 11. 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
  • 12. 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
  • 13. Burlando o controle no cliente Campos hidden Tamanho de campos
  • 14. Cookies Cookies Cookies também podem ter valor alterado Ex.: Cookie de sessão, usuário e desconto.
  • 15. Transmissão de dados via parâmetros da URL Pode ser mudado de forma trivial sem usar qualquer ferramenta.
  • 16. 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.
  • 17. 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.
  • 18. 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.
  • 19. 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.
  • 20. 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.
  • 21. 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.
  • 22. 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)
  • 23. 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.
  • 24. Injetando código SELECT nome,sobrenome FROM user WHERE name = ‘nome’ O que acontecerá se for digitado habib‘ or ‘1’=‘1 ?
  • 25. 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
  • 26. 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?
  • 27. Exemplo – WebGoat SQL Stage 1 e 3 •' or '1' = '1
  • 28. 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.
  • 29. 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
  • 30. 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
  • 31. 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.
  • 32. 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.
  • 33. 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.
  • 34. Algumas ferramentas Plugins para navegadores Firefox FoxyProxy Tamper Data Live HTTP Headers AddNEditCookies Cookie Watcher XSS Me SQL Inject Me Hack Bar
  • 35. Algumas ferramentas Scanner Paros Outros WebScarab Burp Suite
  • 36. Fonte aberta Projeto Owasp WebScarab WebGoat.
  • 37. 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.
  • 38. 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
  • 39. Testes de segurança em aplicações web Eduardo Habib Bechelane Maia. habib@dcc.ufmg.br