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?