AppSec Latam 2011 - Segurança em Sites de Compras Coletivas
ENSOL 2011 - OWASP e a Segurança na Web
1. The OWASP Foundation
http://www.owasp.org
OWASP e a Segurança na Web
!
!
Magno Logan
magno.logan@owasp.org
Líder do capítulo OWASP Paraíba
Membro do OWASP Portuguese Language Project
OWASP
Paraíba
Será que estamos seguros?
2. Magno Logan?
• Primeiro de tudo curioso! =)
• Analista de Sistemas
• Especialista em SegInfo
• Fundador do Capítulo OWASP Paraíba
• Praticante de Ninjutsu
• DJ nas horas vagas
4. 4
OWASP
(Open Web Application Security Project)
!
• Organização internacional que recebe iniciativas de
todo o mundo
• Comunidade aberta dedicada a possibilitar a criação de
aplicações confiáveis
• Todas as ferramentas, documentos, fóruns e capítulos
são livres e abertos a todos interessados
ttp://www.owasp.org/index.php/About_OWASP
!
5. 5
Capítulos Locais!
• Centenas Capítulos Locais mas somente por volta de 80
estão ativos
• http://www.owasp.org/index.php/Category:Brasil
• Brasília
• Campinas
• Curitiba
• Goiania
• Paraíba
• Porto Alegre
• Recife
• São Paulo
ttp://www.owasp.org/index.php/Category:OWASP_Chapter
!
6. OWASP Paraíba
6
• Formado por desenvolvedores, sys admins,
estudantes e demais interessados
• Lista de Discussão: bit.ly/owasppb
• Twitter: @owasppb
7. Como funciona?
• Reuniões 1x por mês
• Aberta ao público!
• Discussões de assuntos relacionados à
segurança de aplicações
• Palestras com profissionais da área
• Criações de projetos, ferramentas,
artigos, etc...
7
8. OWASP Top Ten 2010
A1: Injection
A2: Cross-Site
Scripting (XSS)
A3: Broken
Authentication
and Session
Management
A4: Insecure
Direct Object
References
A5: Cross Site
Request
Forgery (CSRF)
A6: Security
Misconfigurati
on
A7: Failure to
Restrict URL
Access
A8: Insecure
Cryptographic
Storage
A9:
Insufficient
Transport
Layer
Protection
A10:
Unvalidated
Redirects and
Forwards
http://www.owasp.org/index.php/Top_10
11. A1 – Falhas de Injeção
11
Injeção significa…
• Enganar uma aplicação a incluir comandos nos dados enviados a um
interpretador
Interpretadores
• Recebem strings e interpretam como comandos
• SQL, OS Shell, LDAP, XPath, Hibernate, etc…
SQL injection ainda é muito comum!
• Muitas aplicações ainda são suscetíveis (falha dos desenvolvedores)
• Embora seja normalmente muito simples de evitar
Impacto Típico
• Normalmente alto. Todo o banco de dados pode ser lido ou modificado.
• Pode também permitir acesso à contas de usuário ou até mesmo acesso
a nível de SO.
12. Exemplo de SQL Injection
Firewall
Hardened OS
Web Server
App Server
Firewall
Databases
LegacySystems
WebServices
Directories
HumanResrcs
Billing
Custom Code
ATAQUE DE
APLICAÇÃO
CamadadeRedeCamadadeAplicação
Accounts
Finance
Administration
Transactions
Communication
KnowledgeMgmt
E-Commerce
Bus.Functions
HTTP
request
!
SQL
query!
DB Table
!
✇
HTTP
response
"
✇
"SELECT * FROM
accounts WHERE
acct=‘’ OR 1=1--’"
1.Aplicação apresenta um
formulário para o atacante
2.Atacante envia uma requisição no
formulário
3.Aplicação repassa ataque para o
banco de dados em uma query SQL
Account Summary
!
Acct:5424-6066-2134-4334
Acct:4128-7574-3921-0192
Acct:5424-9383-2039-4029
Acct:4128-0004-1234-0293
4. Banco de dados executa query
contendo o ataque e envia os
resultados para aplicação
5.Aplicação recebe os dados e envia
os resultados para o usuário
Login:
Senha:
Login:
Senha:
13. A1 – Evitando Falhas de Injeção
13
!
1. Não tente sanitizar as entradas no banco sozinho!
2. Use SQL statements parametrizados específicos da linguagem
3. Codifique todas as entradas dos usuários antes de passar para o
SGBD
• Sempre execute validação de entrada do tipo ‘white list’ em todas as
informações fornecidas pelo usuário
• Sempre minimize os privilégios do banco de dados para reduzir o
impacto de uma falha
15. Casos famosos...
• Fevereiro 2011 – HBGary
• Março 2011 - MySQL
• Março e Maio 2011 – Comodo
• Maio 2011 – PBS, Sony, Fox,
Infragard, Nintendo, CNN...
15
17. A2 – Cross Site Scripting (XSS)
17
Acontece a qualquer momento…
• Dados não processados do atacante são enviados para um navegador de
um usuário inocente
Existem 3 tipos de XSS:
• Armazenados em banco de dados (Stored)
• Refletidos de entrada da web : formulário, campo oculto, URL, etc.
(Reflected)
• Enviado diretamente ao cliente JavaScript (DOM Based)
Praticamente toda aplicação web tem este problema!
• Tente isto no seu navegador – javascript:alert(document.cookie)
Impacto Típico
• Roubo de sessão ou dados sensíveis, defacement ou redirecionar usuário
para sites de phishing ou malware
• Mais severo: Instalar proxy XSS que permita atacante observar e
direcionar todo o comportamento do usuário em sites vulneráveis e forçar
o usuário a outros sites
18. Exemplo de XSS
Aplicação com
vulnerabilidade de
Stored XSS
3
2
Atacante insere um
script malicioso na
página que armazena
dados no servidor
1
Script silenciosamente envia o cookie de sessão
da vítima
Script roda dentro do
navegador da vítima
com total acesso ao
DOM e cookies
Custom Code
Accounts
Finance
Administration
Transactions
Communication
KnowledgeMgmt
E-Commerce
Bus.Functions
Atacante prepara a armadilha – atualizar meu perfil
Vítima acessa a página – o perfil do
atacante
19. A2 – Evitando XSS
19
• Eliminar a falha
• Não inclua parâmetros de entrada nas páginas de resposta
• Defender contra a falha
• Recomendação Básica: Codifique todas as informações fornecidas pelos usuário!
• Realizar validações de entrada do tipo ‘white list’ em todas as entradas de
usuários que forem ser incluídas na página
• Para maiores tamanhos de HTML fornecido pelo usuário, utilize o projeto da
OWASP AntiSamy
(AntiSamy)
20. A3 – Falha de Autenticação e Gerência de
Sessões
20
HTTP é um protocolo “stateless” (sem estado)
• Significa que as credenciais deve ser enviadas a cada requisição
• Devemos utilizar SSL para tudo que necessite de autenticação
Falhas no controle das sessões
• SESSION ID usado para controlar o estado já que o HTTP não faz
• E é tão bom quanto as credenciais para o atacante…
• SESSION ID é comumente exposto na rede, no navegador, nos logs, etc
Cuidado com as alternativas!
• Mudar minha senha, lembrar minha senha, esqueci minha senha, pergunta
secreta, logout, email, etc…
Impacto Típico
• Contas de usuários comprometidas ou sessões de usuários sequestradas
21. Exemplo de Falha de Autenticação
Custom Code
Accounts
Finance
Administration
Transactions
Communication
Knowledge
Mgmt
E-Commerce
Bus.Functions
1 Usuário envia suas
credenciais
2Site usa URL rewriting
(coloca a sessão na URL)
3 Usuário clica no link http://
www.hacker.com em um forum
www.twitter.com?JSESSIONID=9FA1DB9EA...
4
Hacker checa os logs de referência em
www.hacker.com
e encontra o JSESSIONID do usuário
5
Hacker usa JSESSIONID
e tem acesso à conta da
vítima
22. A7 – Armazenamento com Criptografia
Insegura
22
Armazenando dados sensíveis de forma insegura
• Falha em identificar todos os dados sensíveis
• Falha em identificar todos os locais onde os dados sensíveis são
armazenados
• Falha em proteger devidamente estes dados em todos os locais
Impacto Típico
• Atacantes acessam ou modificam informações privadas ou
confidenciais
• Obtém segredos para usá-los em novos ataques
• Embaraço da empresa, insatisfação dos clientes e perda de
confiança
• Gastos para limpar o incidente
• Empresas são processadas e/ou multadas
26. OWASP ZAP
• Ferramenta para testes de invasão em
aplicações web (com versão em pt-BR!)
• Open source e Multiplataforma
• Recomendada para desenvolvedores e
profissionais de segurança
• Desenvolvido por Simon Bennetts
26
27. OWASP MANTRA
27
!
!
!
• Framework open source de segurança
• Firefox + Add-ons de segurança
• Criado por um grupo de Indianos
• Se tornou um projeto da OWASP depois
29. Seu servidor é seguro?
29
Nikto2 – v 2.1.4
• Scanner de Servidores Web
• Verifica versões desatualizadas,
arquivos perigosos, problemas
de configuração
• Open Source (GPL) e fácil de usar!
• Desenvolvido por Chris Sullo e David Lodge
30. E a sua aplicação?
!
!
!
• Framework de Ataque e Auditoria de Aplicações Web
• Procura e explora vulnerabilidades em aplicações web
• Open Source e Multiplataforma
• Desenvolvido por Andrés Riancho
30
31. E o seu banco de dados?
SQLmap
• Ferramenta open source que automatiza o processo
de detecção e exploração de falhas SQL Injection e
roubo de bancos de dados
• Acredita-se que foi uma das ferramentas utilizadas
nos ataques do LulzSecBrazil
• Chamando desenvolvedores
31
32. Se protegendo…
HnTool
• Ferramenta de proteção de servidores Unix
• Varre o sistema e verifica vulnerabilidades
• Open source e em Python
• Desenvolvida por brasileiros,
melhor ainda, nordestinos!
32