2011 01-18.campus party 2011

Post on 28-Jun-2015

915 views 3 download

Transcript of 2011 01-18.campus party 2011

Pentest em aplicações webNelson Uto, M.Sc.

Agenda

Motivação.(In)segurança de software.Metodologia de testes de invasão.Reconhecimento.Mapeamento.Descoberta e exploração de vulnerabilidades.

Importante

NUNCA procure vulnerabilidades em sistemas, quaisquer que sejam, sem a devida autorização!!!

Ambiente de teste

Motivação

“any program, no matter how innocuous it seems, canharbor security holes”

Cheswick e Bellovin, 1994.

Exemplo

Distribuição de vulnerabilidades

Rede

Sistema Operacional

Aplicações

Fonte: SANS

Vulnerabilidades mais comuns – CVE

Segurança de software

Trindade de problemas [McGraw]:Complexidade;Conectividade;Extensibilidade.

Embutir segurança quando o SW já estiver pronto?Segurança deve ser considerada em todo o ciclo de desenvolvimento de software!!

Vulnerabilidades por fase do SDLC

Fase Vulnerabilidade

Especificação Microsoft Bob

Arquitetura e projeto Topologia de redeEscolha de algoritmos criptográficosfracos

Codificação Tratamento inadequado de erros

Implantação Infraestrutura subjacente vulnerávelGerenciamento inadequado de chaves

OWASP Top Ten 2010 (1)

A1 – Injeção A2 – Cross-site Scripting (XSS)A3 – Falhas em autenticação e gerenciamento de sessõesA4 – Referência direta a objetos inseguraA5 – Cross-site Request Forgery (CSRF)

OWASP Top Ten (2)

A6 – Falhas na configuração de segurançaA7 – Armazenamento criptográfico inseguroA8 – Acesso irrestrito a URLsA9 – Proteção inadequada no transporte de informaçõesA10 – Redirecionamentos não validados

Teste de invasão em aplicações web

O que é um teste de invasão?Tipos de teste:

Caixa preta;Caixa branca;Caixa cinza.

Metodologia

Ferramentas básicas

Navegadores web.Proxies de interceptação.Web spiders.Fuzzers.Varredores de portas e serviços.Varredores de vulnerabilidades.

ReconhecimentoInformações interessantes

Informações:Nomes de funcionários e informações sobre eles.Identificadores de usuários.Tecnologias empregadas.Servidores e topologia de rede.Configurações dos componentes.Recursos disponibilizados pelos servidores.

ReconhecimentoLevantamento de infos em fontes públicas

Redes sociais.Grupos de discussão.Anúncios de emprego.WHOIS.DNS.

ReconhecimentoGoogle Hacking

Técnica que utiliza mecanismos de busca para identificar vulnerabilidades de software e de configuração em sistemas acessíveis pela Internet.Aplicável não somente ao Google Search.Exemplo:

site:<domínio> login OR logonsite:<domínio> "This file was generated by Nessus".

ReconhecimentoInformações sobre infraestrutura

Identificação de SOs, portas e serviços.Identificação de servidores web.Métodos suportados pelo servidor web.Detecção de hosts virtuais.Descoberta de arquivos e diretórios.

Mapeamento

Deve resultar em um mapa da aplicação.Passos:

Cópia das páginas e recursos da aplicação.Identificação dos pontos de entrada de informação.Relacionamento com as informações de reconhecimento.

Descoberta e exploração de vulnerabilidadesValidação no lado cliente da aplicação

Validações no lado cliente devem ser realizadas apenas como uma pré-filtragem.Muito fácil de serem burladas.Muito comum em sistemas Web.

Descoberta e exploração de vulnerabilidadesXSS (1)

Um dos problemas mais populares.Permite transportar código malicioso até o navegador de outros usuários.Código é executado no contexto da aplicação vulnerável.

Descoberta e exploração de vulnerabilidadesXSS (2) – Exemplo

Descoberta e exploração de vulnerabilidadesXSS (3) – Armazenado

Descoberta e exploração de vulnerabilidadesXSS (4) – Cenários

Sequestro de sessão.Escravização de navegador web.Varredura de redes.

Descoberta e exploração de vulnerabilidadesInjeção de SQL (1)

Usuário injeta código SQL em campos da interface.Aplicação não trata a entrada corretamente e executa o código injetado.

Descoberta e exploração de vulnerabilidadesInjeção de SQL (2)

SELECT * FROM TABELA WHERE COLUNA = ´Blah´

BlahCampo:

Aplicação

Interface da aplicação

Descoberta e exploração de vulnerabilidadesInjeção de SQL (3)

SELECT * FROM TABELA WHERE COLUNA = ´´ or 1 = 1;--’

´ or 1 = 1;--Campo:

Aplicação

Interface da aplicação

Descoberta e exploração de vulnerabilidadesFalhas no ger. de sessões e autenticação

São falhas comuns em aplicações web.Permitem acesso ilegítimo.

Nelson Uto, nelson_uto (at) yahoo.com.br

Dúvidas?