analysis of vulnerabilities in web applications - linuxcon brazil 2010

54
Analysis of Vulnerabilities in Web Applications Como saber se suas aplicações web estão seguras.

Upload: luiz-vieira

Post on 28-Jun-2015

923 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Analysis of Vulnerabilities in Web Applications

Como saber se suas aplicações web estão seguras.

Page 2: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 3: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 4: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 5: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 6: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 7: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

“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

Page 8: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 9: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 10: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 11: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 12: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Prós e Contras das Ferramentas

Prós

Recursos temporais limitados Podem poupar muito

tempo em vulnerabilidades facilmente detectáveis pelas ferramentas

Boas soluções custo/eficáciaRecursos humanos limitadosExige pouco conhecimento

técnicoAutomatização de testes

frequentes

Contras

Confiabilidade das ferramentas

Não são “A” solução Não significa que não

existam falhas se estas não forem encontradas

Têm limitaçõesCustoTempo de scanning

Dependendo da aplicação, o próprio crawling pode demorar dias

Page 13: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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?

Page 14: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Vulnerabilidades Web

Page 15: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 16: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 17: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Isto é preocupante?

Page 18: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 19: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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)

Page 20: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Exemplo de código vulnerável à XSS

Page 21: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 22: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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>

Page 23: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Tentativa de Proteção

Page 24: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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')

Page 25: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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']);

Page 26: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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.

Page 27: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Soluções

● Ineficientes:– Blacklist– addslashes() é ineficiente para XSRF

● Eficientes:– Evitar falhas de XSS– Controle próprio de tokens

Page 28: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Armazenamento Criptográfico Inseguro

Definições:● Funções Hash● Funções Criptográficas

– Criptografia Simétrica– Criptografia Assimétrica

● Hash + Criptografia

Ataques:● Senhas fracas

– Brute-force● Senhas fortes

– Wordlist- Rainbowtables + hash sites

Page 29: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Armazenamento Criptográfico InseguroRainbowCrack

● 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/

Page 30: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Proteção de dados

● Armazenamento de Senha?

● Dados a serem recuperados?

● Hash puro?

● E criptografia? Proteja bem a chave.

Page 31: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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...

Page 32: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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.

Page 33: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Execução Remota de Arquivos – Exemplo: Formulário de Acesso

Page 34: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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.

Page 35: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Execução Remota de Arquivos – Princípio do Ataque

● http://localhost/AtaquesWeb/rfi/?pagina=home home.php

● http://localhost/AtaquesWeb/rfi/?pagina=historico historico.php

● http://localhost/AtaquesWeb/rfi/?pagina=contato contato.php

● ...● …

● http://localhost/AtaquesWeb/rfi/?pagina=[arquivo_malefico]

Page 36: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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.

Page 37: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

Execução Remota de Arquivos – Solução Eficiente

● Criar whitelist, permitindo somente caracteres válidos:

Page 38: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 39: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

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

Page 40: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

40/2

Page 41: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

41/2

Injection Flaws – String SQL Injection

Page 42: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

42/2

Injection Flaws – String SQL Injection

●Solução do desafio:

Vieira' OR 'a'='a

Page 43: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

43/2

Cross-Site Scripting (XSS) - Stage 1: Stored XSS

Page 44: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

44/2

Cross-Site Scripting (XSS) - Stage 1: Stored XSS

●Solução do desafio:

<script>alert("XSS");</script>

OU

<script>alert(document.cookie);</script>

Page 45: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

45/2

Cross-Site Scripting (XSS) - Cross Site Request Forgery (CSRF)

Page 46: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

46/2

Cross-Site Scripting (XSS) - Cross Site Request Forgery (CSRF)

●Solução do desafio:

<img src="http://127.0.0.1:8080/WebGoat/attack?Screen=9&menu=900&transferFunds=4000"

width="1" height="1" />

Page 47: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

47/2

AJAX Security - DOM-Based cross-site scripting

Page 48: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

48/2

AJAX Security - DOM-Based cross-site scripting

●Solução do desafio:

●<IMG SRC="images/logos/owasp.jpg"/>

●<img src=x onerror=;;alert('XSS') />

● <IFRAME SRC="javascript:alert('XSS');"></IFRAME>

● Please enter your password:<BR><input type = "password" name="pass"/><button onClick="javascript:alert('I have your password: ' + pass.value);">Submit</button><BR><BR><BR><BR><BR><BR><BR><BR> <BR><BR><BR><BR><BR><BR><BR><BR>

Page 49: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

49/2

Parameter Tampering - Exploit Hidden Fields

Page 50: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

50/2

Parameter Tampering - Exploit Hidden Fields

Vídeo

Page 51: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

51/2

Session Management Flaws - Spoofing an Authentication Cookie

Page 52: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

52/2

Session Management Flaws - Spoofing an Authentication Cookie

Vídeo

Page 53: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

53/2

Page 54: Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010

54/2

Obrigado!!!!

Luiz Vieira

[email protected]

[email protected]

www.4linux.com.br

hackproofing.blogspot.com

Tel: 55-11-2125-4747