O documento discute testes de invasão em aplicações web, abordando: 1) as principais vulnerabilidades em software, como injeção de código e falhas no gerenciamento de sessões; 2) a metodologia de teste, incluindo reconhecimento, mapeamento e exploração de vulnerabilidades; 3) técnicas como varredura de portas e fuzzing para descoberta de vulnerabilidades.
2. Agenda
Motivação.
(In)segurança de software.
Metodologia de testes de invasão.
Reconhecimento.
Mapeamento.
Descoberta e exploração de vulnerabilidades.
3. Importante
NUNCA procure vulnerabilidades em sistemas,
quaisquer que sejam, sem a devida autorização!!!
9. 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!!
10. Vulnerabilidades por fase do SDLC
Fase Vulnerabilidade
Especificação Microsoft Bob
Arquitetura e projeto Topologia de rede
Escolha de algoritmos criptográficos
fracos
Codificação Tratamento inadequado de erros
Implantação Infraestrutura subjacente vulnerável
Gerenciamento inadequado de chaves
11. OWASP Top Ten 2010 (1)
A1 – Injeção
A2 – Cross-site Scripting (XSS)
A3 – Falhas em autenticação e gerenciamento de
sessões
A4 – Referência direta a objetos insegura
A5 – Cross-site Request Forgery (CSRF)
12. OWASP Top Ten (2)
A6 – Falhas na configuração de segurança
A7 – Armazenamento criptográfico inseguro
A8 – Acesso irrestrito a URLs
A9 – Proteção inadequada no transporte de
informações
A10 – Redirecionamentos não validados
13. Teste de invasão em aplicações web
O que é um teste de invasão?
Tipos de teste:
Caixa preta;
Caixa branca;
Caixa cinza.
15. Ferramentas básicas
Navegadores web.
Proxies de interceptação.
Web spiders.
Fuzzers.
Varredores de portas e serviços.
Varredores de vulnerabilidades.
16. Reconhecimento
Informaçõ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.
18. Reconhecimento
Google 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 logon
site:<domínio> "This file was generated by Nessus".
19. Reconhecimento
Informaçõ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.
20. 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.
21. Descoberta e exploração de vulnerabilidades
Validaçã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.
22. Descoberta e exploração de vulnerabilidades
XSS (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.
25. Descoberta e exploração de vulnerabilidades
XSS (4) – Cenários
Sequestro de sessão.
Escravização de navegador web.
Varredura de redes.
26. Descoberta e exploração de vulnerabilidades
Injeçã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.
27. Descoberta e exploração de vulnerabilidades
Injeção de SQL (2)
Interface da Campo: Blah
aplicação
Aplicação
SELECT * FROM TABELA WHERE COLUNA = ´Blah´
28. Descoberta e exploração de vulnerabilidades
Injeção de SQL (3)
Interface da Campo: ´ or 1 = 1;--
aplicação
Aplicação
SELECT * FROM TABELA WHERE COLUNA = ´´ or 1
= 1;--’
29. Descoberta e exploração de vulnerabilidades
Falhas no ger. de sessões e autenticação
São falhas comuns em aplicações web.
Permitem acesso ilegítimo.