2. 2/2
Quem sou eu?
Luiz Vieira
● Construtor 4Linux
● Analista e Consultor de Segurança
● 15 anos de experiência em TI
● Pen-Tester
● Articulista sobre Segurança de vários
sites: VivaOLinux, SegurançaLinux,
Imasters, HackProofing e etc
● Entusiasta do Software Livre
● Filósofo e Psicoterapeuta
3. Tópicos de hoje
●
Princípios de Sistemas Web
●
Ataques Web: Origem e Motivação
●
Princípios da Segurança Web
●
“all input is evil until proven otherwise”
●
OWASP
●
Ferramentas para Análise e Auditoria
●
Prós e Contras das Ferramentas
●
Vulnerabilidades Web
●
Oportunidades
●
WebGoat
●
Demo
4. Princípios de Sistemas Web
• Ótima escolha para mudança de plataforma das
aplicações(?)
• A Internet não foi criada visando segurança
• Atualmente é considerada uma selva
5. Ataques Web: Origem e Motivação
●
Roubo de informações
– Benefício Próprio
– Espionagem Industrial
●
Defacement
– Mass scaning/defacing
●
(Ex-)Funcionários Insatisfeitos
– Salários baixos ou demissões injustas
●
Worms
6. Princípios da Segurança Web
●
“all input is evil until proven otherwise”.
●
Ter uma noção das falhas não é suficiente.
●
White List vs Black List
7. “all input is evil until proven
otherwise”
●
Entradas visíveis e de fácil manipulação
– Campos texto
– Variáveis de URL
●
Entradas de manipulação intermediária
– Campos hidden
– Valores de cookies
– Demais inputs (select, checkbox, radio etc)
●
Entradas de difícil manipulação
– Campos de cabeçalhos HTTP
8. OWASP
●
Significado:
– Open Web Application Security Project
●
Missão:
●
Promove o desenvolvimento seguro de software
●
Orientado para o desenvolvimento de serviços baseados na
web
●
Focado mais em aspectos de desenvolvimento do que em web-
design
●
Um fórum aberto para discussão
●
Um recurso gratuito e livre para qualquer equipe de
desenvolvimento
●
http://www.owasp.org
9. OWASP Top 10
●
Top 10 Web Application Security
Vulnerabilities
●
Uma lista dos 10 aspectos de segurança mais
críticos
●
Atualizado periodicamente
●
Crescente aceitação pela indústria
●
Federal Trade Commission (US Gov)
●
US Defense Information Systems Agency
●
VISA (Cardholder Information Security Program)
●
Está sendo adotado como um padrão de
segurança para aplicações web
10. OWASP Guide
Guia para o Desenvolvimento Seguro de Web
Apps
●
Oferece um conjunto de linhas gerais para o
desenvolvimento de software seguro
●
Introdução à segurança em geral
●
Introdução à segurança aplicacional
●
Discute áreas-chave de implementação
- Arquitetura
- Autenticação
- Gestão de Sessões
- Controle de Acesso e Autorização
- Registro de Eventos
- Validação de Dados
●
Em contínuo desenvolvimento
11. Ferramentas para Análise e Auditoria
●
Distribuições
- Backtrack 4
- OWASP Live CD
●
Ferramentas
- WebScarab
- Paros Proxy
- Firebug
- Muitas outras...
●
Plugins
- Firecat (para Firefox) http://migre.me/RyHN
●
Wargames
- Webgoat
- Série HACME, da Foundstone
- www.hackerskills.com
http://projects.webappsec.org/Web-Application-Security-Scanner-List
12. Prós e Contras das Ferramentas
Prós Contras
Recursos temporais limitados Confiabilidade das
Podem poupar muito ferramentas
tempo em vulnerabilidades Não são “A” solução
facilmente detectáveis Não significa que não
pelas ferramentas existam falhas se estas não
Boas soluções custo/eficácia forem encontradas
Recursos humanos limitados Têm limitações
Exige pouco conhecimento Custo
técnico Tempo de scanning
Automatização de testes Dependendo da aplicação,
frequentes o próprio crawling pode
demorar dias
13. Vulnerabilidades Web
●
Caminho mais fácil de expor informação.
●
Internet não é somente a Web
●
Preocupação com vulnerabilidades
– Dados valiosos?
– E em outro host do mesmo servidor?
15. O código faz parte do perímetro de
segurança
Não é possível usar proteção ao nível da camada de rede (firewall, SSL, IDS,
hardening) para parar ou detectar ataques ao nível aplicacional
16. Isto é preocupante?
●
Qual a probabilidade de sucesso de um ataque
contra uma aplicação web?
➢
Probabilidade elevada
➢
Fácil de explorar sem conhecimento e ferramentas especiais
➢
Quase indetectável
➢
Existem milhares de programadores web, pouco preocupados
com segurança
●
Consequências?
➢
Corrupção de dados ou destruição de BD
➢
Acesso root a servidores web ou aplicacionais
➢
Perda de autenticação e de controle de acesso de usuários
➢
Defacement
➢
Ataques secundários a partir da própria aplicação web
18. Principais Vulnerabilidades – OWASP
Top 10 2010
●
A1: Injeção
●
A2: Cross Site Scripting (XSS)
●
A3: Quebra de Autenticação e da Gestão de
Sessões
●
A4: Referência Insegura Direta a Objetos
●
A5: Cross Site Request Forgery (CSRF)
●
A6: Configuração de Segurança Incorreta
●
A7: Falhas na Restrição de Acesso a URL
●
A8: Redirecionamentos e Encaminhamentos não-
validados
●
A9: Armazenamento Criptográfico Inseguro
●
A10: Proteção Insuficiente da Camada de
Transporte
19. Cross-Site-Scripting (XSS)
●
Alta ocorrência
●
Baixo impacto (?)
- Sequestro de sessão
- Alteração de fluxo de dados
- Defacement
- Vetor para diversos outros ataques
●
Execução arbitrária de códigos Javascript
●
Má (ou falta de) filtragem dos dados que podem ser
manipulados pelo usuário.
●
Permite a criação de worms:
– Vírus do Orkut (2007)
21. Localização da Vulnerabilidade
Vulnerabilidade de XSS:
A variável "buscar" pode ser facilmente manipulada
pelo usuário
A variável é repassada para o navegador sem
qualquer tipo de filtro
22. Exploração da Vulnerabilidade
●
Induzir a vítima a acessar o endereço:
- http://localhost/AtaquesWeb/xss_exemplo1.php?
busca=<script>alert('Vulneravel+a+XSS')</script>
24. Métodos de Ataque
●
Procurar esconder (camuflar) a tentativa de ataque:
http://localhost/AtaquesWeb/xss_exemplo1.php?busca=
%3c%73%63%72%69%70%74%3e%61%6c
%65%72%74%28%27%56%75%6c%6e
%65%72%61%76%65%6c%20%61%20%58%53
%53%27%29%3c%2f%73%63%72%69%70%74%3e
●
http://localhost/AtaquesWeb/xss_exemplo1.php?busca=<script>alert('Vulneravel a XSS')</script>
OU
●
– http://localhost/AtaquesWeb/xss_exemplo1.php?
busca=“+onmouseover="javascript:alert('XSS')
25. Soluções
●
Criar uma whitelist ao invés de uma blacklist
●
Utilizar funções de tratamento de caracteres que
possuem significado no HTML
– PHP: htmlspecialchars()
$txtbuscar = htmlspecialchars($_GET['buscar']);
26. Cross Site Request Forgery
●
Semelhante a XSS
●
Qualquer sistema vulnerável a XSS está
vulnerável a XSRF
●
Nem toda aplicação vulnerável a XSRF está
também vulnerável a XSS
●
Permite alterar as informações enviadas ao
navegados.
●
Ataque client-side
●
Não se baseia em executar código JS
●
Se baseia em enviar requisições com as
credenciais do usuário para o servidor.
27. Soluções
●
Ineficientes:
– Blacklist
– addslashes() é ineficiente para XSRF
●
Eficientes:
– Evitar falhas de XSS
– Controle próprio de tokens
29. Armazenamento Criptográfico Inseguro
RainbowCrack
●
Brute-force Normal:
– 350 milhões de senhas (texto puro) por segundo.
●
Rainbow:
– 62.223 milhões de senhas em texto puro por
segundo
●
http://www.md5crack.com/
30. Proteção de dados
●
Armazenamento de Senha?
●
Dados a serem recuperados?
●
Hash puro?
●
E criptografia? Proteja bem a chave.
31. Execução Remota de Arquivos
Características:
●
Diversas proteções por configuração
●
Alto Impacto
●
Execução de Comandos no Servidor
Possibilidades:
●
Apagar Arquivos
●
Instalar Programas (keyloggers, sniffers)
●
Acessar Outras Páginas
●
Repositório de Arquivos (virus?)
●
Utilizar o servidor como zumbi (DDoS ?)
●
O que a imaginação permitir...
32. Execução Remota de Arquivos –
Exemplos de PHP
●
include()
●
require()
●
include_once()
●
require_once()
●
include → Em caso de erro continua
●
require → Em caso de erro crash!
●
_once() → Apenas uma vez
E daí?
●
Se o arquivo a ser incluído contiver códigos PHP
os mesmos serão executados.
34. Execução Remota de Arquivos –
Exemplo: Formulário de Acesso
●
É possível notar a utilização das funções
citadas.
●
Sistema com alta produtividade
- Ex: Adicionar um novo item de menu
●
O parâmetro de uma das funções include()
pode ser manipulada pelo usuário.
36. Execução Remota de Arquivos –
Arquivos Maléficos Famosos
●
Explorer de Arquivos, bypass de
segurança, etc
- c99.txt
- r57.txt
- Safe0ver.txt
●
Atenção: Cuidado com trapdoors.
37. Execução Remota de Arquivos –
Solução Eficiente
●
Criar whitelist, permitindo somente caracteres válidos:
38. 38/2
Oportunidades
● Necessidade de maior nível de segurança
● Previnir X Remediar
● Compliance com normas e metodologias
● Testes automatizados X Testes personalizados
● Funcionário X Consultor
39. 39/2
WebGoat
● WebGoat é uma aplicação web J2EE
deliberadamente vulnerável, mantida pelo
OWASP e desenvolvida para ensinar lições de
segurança em aplicações web.
● http://www.owasp.org/index.php/Category:OWASP
_WebGoat_Project