Upload
magno-logan
View
75
Download
2
Embed Size (px)
DESCRIPTION
ENSOL 2011 - OWASP e a Segurança na Web
Citation preview
The OWASP Foundation http://www.owasp.org
OWASP e a Segurança na Web
!!
Magno Logan [email protected]
Líder do capítulo OWASP Paraíba Membro do OWASP Portuguese Language Project
OWASP Paraíba
Será que estamos seguros?
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
Agenda• OWASP?
• Segurança na Web
• OWASP Top 10
• Ferramentas
• Lulz Time!
3
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
http://www.owasp.org/index.php/About_OWASP !
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 Paulohttp://www.owasp.org/index.php/Category:OWASP_Chapter
!
OWASP Paraíba
6
• Formado por desenvolvedores, sys admins,
estudantes e demais interessados
• Lista de Discussão: bit.ly/owasppb
• Twitter: @owasppb
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
OWASP Top Ten 2010A1: 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
Vulnerabilidades
10
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.
Exemplo de SQL InjectionFi
rew
all
Hardened OS
Web Server
App ServerFi
rew
all
Dat
abas
es
Lega
cy S
yste
ms
Web
Ser
vice
s
Dir
ecto
ries
Hum
an R
esrc
s
Billi
ng
Custom Code
ATAQUE DE APLICAÇÃO
Cam
ada
de R
ede
Cam
ada
de A
plic
ação
Acc
ount
s
Fina
nce
Adm
inis
trat
ion
Tran
sact
ions
Com
mun
icat
ion
Kno
wle
dge
Mgm
t
E-C
omm
erce
Bus.
Func
tions
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:
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
bobby-tables.com
14
Dicas de como evitar SQL Injection em diversas linguagens
Casos famosos...• Fevereiro 2011 – HBGary
• Março 2011 - MySQL
• Março e Maio 2011 – Comodo
• Maio 2011 – PBS, Sony, Fox,
Infragard, Nintendo, CNN...
15
16
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
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
Acc
ount
s
Fina
nce
Adm
inis
trat
ion
Tran
sact
ions
Com
mun
icat
ion
Kno
wle
dge
Mgm
t
E-C
omm
erce
Bus.
Func
tions
Atacante prepara a armadilha – atualizar meu perfil
Vítima acessa a página – o perfil do atacante
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)
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
Exemplo de Falha de Autenticação
Custom Code
Acc
ount
sFi
nanc
eA
dmin
istr
atio
nT
rans
acti
ons
Com
mun
icat
ion
Kno
wle
dge
Mgm
tE-
Com
mer
ceB
us. F
unct
ions1 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
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
Criptografar dados pra quê?
23
Depois não vai chorar...
24
Ferramentas
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
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
28
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
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
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
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
Lulz Time!
Perguntas?
34
Referênciashttp://www.owasp.org/index.php/Top_10_2010-Main
http://owasptop10.googlecode.com/files/OWASP%20Top%2010%20-%202010.pdf
http://owasptop10.googlecode.com/files/OWASP_Top_10_-_2010%20Presentation.pptx
https://www.owasp.org/index.php/OWASP_Mantra_-_Security_Framework
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
http://www.slideshare.net/stamparm/euro-python-2011miroslavstamparsqlmapsecuritydevelopmentinpython
http://w3af.sourceforge.net/
35
www.owasp.org
36
46