Identificação de vulnerabilidades em aplicações web open ...

75
Departamento de Ciências e Tecnologias da Informação Identificação de vulnerabilidades em aplicações web open-source António José Rocha Teixeira Dissertação submetida como requisito parcial para a obtenção do Grau de Mestre em Engenharia de Telecomunicações e Informática Orientador: Prof. Doutor Carlos José Corredoura Serrão Setembro de 2016

Transcript of Identificação de vulnerabilidades em aplicações web open ...

Page 1: Identificação de vulnerabilidades em aplicações web open ...

Departamento de Ciências e Tecnologias da Informação

Identificação de vulnerabilidades em

aplicações web open-source

António José Rocha Teixeira

Dissertação submetida como requisito parcial para a obtenção do Grau de

Mestre em Engenharia de Telecomunicações e Informática

Orientador:

Prof. Doutor Carlos José Corredoura Serrão

Setembro de 2016

Page 2: Identificação de vulnerabilidades em aplicações web open ...

“El arte de vencer se aprende en las derrotas.”

Simon Bolivar

Prócer Latino-americano (1783-1830)

Page 3: Identificação de vulnerabilidades em aplicações web open ...

1

Resumo

Na atualidade, as tecnologias da informação facilitam a comunicação das empresas e

permitem uma implementação digital dos principais processos de negócio internos e da

integração com clientes, fornecedores e parceiros de negócio. Mas nem tudo são

benefícios. O facto dos negócios estarem mais acessíveis e interligados traduz-se

também em novos riscos de segurança que devem ser identificados e devidamente

mitigados. Muitas destas organizações optam hoje por software open-source, em

particular aplicações web, sem ter a capacidade de avaliar até que ponto estas mesmas

aplicações são seguras. Esta é a principal motivação para o presente trabalho de

investigação, a de permitir que as organizações possam ter uma opinião informada sobre

este tipo de software que utilizam. Para conseguir atingir este objetivo, esta investigação

baseou-se na auditoria e análise das aplicações web open-source mais utilizadas pelas

empresas através das principais ferramentas de análise automatizada de vulnerabilidades

em aplicações web.

Os resultados servirão como referência nos conhecimentos relacionados com a

segurança informática, especificamente nas aplicações web open-source que poderão

ser utilizadas por pequenas e grandes empresas, adicionalmente podem ser utilizados

para trabalhos futuros.

Palavras-chave: Aplicações web, segurança informática, vulnerabilidades, open-

source, testes de penetração.

Page 4: Identificação de vulnerabilidades em aplicações web open ...

2

Abstract

Currently, Information Technology facilitates the communication inside and outside

companies and allows the digital implementation of key internal business processes and

the integration with customers, suppliers and business partners. But not all are benefits.

In fact, the more businesses become accessible and interconnected also there is an

increase in the new security risks to which they are exposed that must be identified and

properly mitigated. Many of these organizations use open-source software, in particular

web applications, without having the ability of evaluating if the applications are secure

or not. This is the main motivation for this research work and the objective is to allow

the organizations to have an informed opinion about this type of software on what

concerns security. To achieve this goal, this research was based on the audit and

analysis of the most implemented open-source web applications, using the main

automated tools of web vulnerabilities analysis.

The results obtained in this research work could serve as reference in knowledge related

to information technology security, specifically in the open-source web applications

used nowadays by small and large companies. Additionally, these results could be used

for future work to be developed in the area.

Keywords: web applications, information security, vulnerabilities, open-source,

penetration test.

Page 5: Identificação de vulnerabilidades em aplicações web open ...

3

Capítulo 1. Introdução

Neste capítulo será explicada a motivação para a execução de esta investigação, estarão

especificadas as perguntas que devem ser respondidas assim como os objetivos que se

pretendem alcançar no final do trabalho. Será igualmente especificado o método de

investigação a ser utilizado.

1.1 Motivação e Enquadramento

As tecnologias da informação são algo sem o qual os negócios hoje em dia não

sobrevivem. Estas tecnologias possibilitam que as empresas possam comunicar de

forma simples e dinâmica e permitem uma implementação digital dos principais

processos de negócio internos e da integração com clientes, fornecedores e parceiros de

negócio. Contudo, o facto dos negócios estarem mais acessíveis e interligados traduz-se

em novos riscos de segurança que devem ser identificados e devidamente mitigados.

Por esta razão têm-se desenvolvido estratégias no âmbito de segurança que procuram

erradicar os riscos que afetam os sistemas (Agnosticator, 2013).

Devido à sua facilidade de utilização e valor, muitas organizações optam hoje por

software open-source, em particular aplicações web. São múltiplas as categorias de

aplicações web open-source que são usadas pelas organizações dos nossos dias, desde

sistemas de gestão de conteúdos, distribuição e partilha de documentos, integração de

processos de negócio na organização, relacionamento com o cliente, comércio

eletrónico, entre muitos outros (Rubens, 2013). A principal questão que se coloca é que

Page 6: Identificação de vulnerabilidades em aplicações web open ...

4

a maior parte das organizações que usam estas mesmas aplicações não têm a capacidade

de aferir até que ponto as mesmas são seguras. A principal motivação para este trabalho,

parte precisamente deste facto, ou seja, permitir que as organizações possam ter uma

opinião informada sobre a segurança das aplicações web open-source que usam para

implementar os seus processos de negócio (Guasch, 2013).

Para conseguir atingir este objetivo, esta investigação irá basear o seu trabalho de

auditoria na análise das principais ferramentas de análise automatizada de

vulnerabilidades web existentes, tendo como base algumas distribuições de Linux de

Ethical Hacking (Kumar, 2015). Isto terá como objetivo perceber quais as

vulnerabilidades que foram encontradas e de que forma é que as mesmas podem ser

mapeadas nos riscos do OWASP Top Ten assim como definir o grau de severidade das

mesmas e catalogar as aplicações web open-source de acordo com métricas definidas e

que têm um impacto na segurança das mesmas.

Assim, um dos principais resultados a obter neste mesmo trabalho centra-se no facto de

ser possível obter uma classificação de segurança, para cada aplicação web open-source

auditada, e assim perceber quais aquelas que maiores riscos de segurança acarretam

para as organizações.

1.2 Objetivos

O problema do software inseguro é possivelmente um dos desafios técnicos mais

importantes do nosso tempo, porque a infraestrutura digital torna-se cada vez mais

complexa e interligada, existindo uma maior dificuldade em garantir a segurança na

Internet, e em que a exposição de aplicações web e de dados aumenta

exponencialmente. (Martinato, 2016)

Atualmente, existe um conjunto de organizações que utilizam aplicações web open-

source para as mais variadas tarefas ou funcionalidades: publicação de conteúdos

online, lojas online, aplicações empresariais, entre muitas outras. Algumas destas

aplicações podem conter vulnerabilidades que podem expor os dados e a informação

que as mesmas terão que gerir.

Page 7: Identificação de vulnerabilidades em aplicações web open ...

5

Um dos projetos mais importantes dedicado a determinar e combater as causas que

fazem com que o software seja inseguro é o OWASP (Open Web Application Security

Project). O OWASP é um fórum aberto, formado por empresas, organizações

educativas e particulares de todo o mundo interessados no tema da segurança

aplicacional (não apenas para a web). Juntos constituem uma comunidade de segurança

de informação que trabalha para criar artigos, metodologias, documentação, ferramentas

e tecnologias que são disponibilizadas à comunidade em geral e podem ser usadas

gratuitamente por qualquer um.

Um dos projetos-bandeira da OWASP é o OWASP Top Ten. O OWASP Top Ten é um

documento que identifica os principais dez riscos de segurança mais importantes nas

aplicações web, e cujo objetivo é criar uma consciência da segurança em quem concebe

aplicações através da identificação de alguns dos riscos mais críticos que as aplicações

web (e as organizações que as utilizam) enfrentam (OWASP Foundation, 2013).

Com este trabalho pretende-se avaliar a segurança aplicacional de um conjunto de

aplicações web open-source, com diversas características, e usando múltiplas

ferramentas automáticas de auditoria (que permitiram implementar testes de intrusão),

recolher as vulnerabilidades identificadas, validar as mesmas e depois avaliar a

segurança destas aplicações face a um conjunto de métricas pré-definidas. Assim, os

objetivos mais específicos deste trabalho podem ser resumidos nos seguintes:

Selecionar e categorizar um conjunto de aplicações open-source (as mais

representativas e usadas em cada uma das categorias de aplicações web open-

source), e instalar as mesmas em máquinas virtuais individualizadas, estabelecendo

assim os alvos de teste.

Selecionar um conjunto de ferramentas de testes de intrusão open-source (mais

conhecidas e usadas pela comunidade de testes de intrusão, e alinhadas com as

melhores práticas da indústria), recorrendo à distribuições Linux de Ethical

Hacking, para executar testes de intrusão junto das aplicações web identificadas

anteriormente.

Recolher os resultados dos testes e confirmar manualmente as vulnerabilidades

identificadas pelas ferramentas automáticas de testes, eliminando as que se

Page 8: Identificação de vulnerabilidades em aplicações web open ...

6

confirmarem tratar-se de falsos positivos, e mapear essas mesmas vulnerabilidades

de acordo com a recomendação OWASP Top Ten.

Desenvolver escalas de segurança para cada uma das aplicações web testadas,

comparando-as em termos de segurança.

1.3 Método de Investigação

Na presente tese será utilizada como metodologia de investigação o Design Science in

Information Systems Research (a investigação científica baseada na ciência do desenho

para sistemas de informação) o qual refere a importância de um bom desenho na

investigação, o qual permitirá cumprir o propósito de melhorar a eficácia e eficiência na

organização (Hevner, March, Park, & Ram, 2004).

No desenho de SI (Sistemas de informação) há dois paradigmas distintos mas que

complementam. O primeiro é a ciência do comportamento que procura desenvolver e

justificar teorias, e o segundo é a ciência do desenho que baseia-se na engenharia que

procura solucionar problemas e criar inovação.

A ciência do desenho centra-se tanto nos processos como nos artefactos. O processo de

desenho é um ciclo entre o desenvolvimento de artefactos e sua avaliação para

compreender melhor o problema e os artefactos finais que são gerados. A ciência do

desenho procura resolver problemas nos processos de desenho que já tenham sido

estudados e documentados como são:

Requisitos instáveis em ambientes mal definidos;

Interações complexas entre subcomponentes do problema e a solução;

Necessidade de flexibilidade no desenho de processos e de artefactos;

Dependência de habilidades humanas para produzir soluções efetivas.

A metodologia apresenta um guião para conduzir as investigações e centra-se nos

desenhos que usam tecnologia, tomando as políticas e práticas de trabalho como

artefactos.

Page 9: Identificação de vulnerabilidades em aplicações web open ...

7

Depois do impacto que teve o artigo original, os autores propuseram una arquitetura

geral para projetos de investigação centrados no desenho, a partir de três ciclos: rigor,

relevância e desenho, a qual é mostrada na Figura 1.

Figura 1. Esquema da metodologia Design Science in Information Systems Research (Hevner, A Three Cycle View of Design Science Research, 2007)

A lógica dos três ciclos consiste em integrar o entorno (o domínio ou contexto de

aplicação onde reside o problema) e a base do conhecimento (teorias, modelos,

métodos, experiencia e artefactos existentes) para construir e avaliar um artefacto

(solução), fundamentado na base do conhecimento e destinado a resolver o problema

relevante, a partir das necessidades obtidas da compreensão das pessoas, a tecnologia e

o contexto organizacional do entorno (Gonzalez & Quimbaya., 2012).

O ponto de entrada do ciclo será na “Relevância” devido a que se origina de uma

necessidade expressada e identificada, não da continuidade de um projeto anterior.

O problema identificado (Ciclo Relevância):

Possível existência de riscos de segurança nos sistemas de informação baseados em

aplicações web open-source utilizados pelas empresas, os quais devem ser identificados

e devidamente mitigados.

Page 10: Identificação de vulnerabilidades em aplicações web open ...

8

O artefacto para solucionar o problema (Ciclo Desenho):

Planeamento e elaboração de um conjunto de testes num grupo de aplicações web (as

mais representativas e usadas em cada uma das categorias), através de ferramentas

automáticas de intrusão. Posteriormente mapear essas mesmas vulnerabilidades de

acordo com o OWASP Top Ten e finalizando com o desenvolvimento de escalas de

segurança para cada uma das aplicações web testadas, comparando-as em termos de

segurança.

Contribuição teórica para a base do conhecimento (Ciclo Rigor):

Os resultados servirão como referência nos conhecimentos relacionados com a

segurança informática, especificamente nas aplicações web open-source que poderão

ser utilizadas por pequenas e grandes empresas, adicionalmente podem ser utilizados

para trabalhos futuros.

Page 11: Identificação de vulnerabilidades em aplicações web open ...

9

Capítulo 2. Revisão da Literatura

Neste capítulo serão detalhados os principais tópicos referentes ao estado da arte de

auditoria de vulnerabilidades em aplicações web, serão identificadas as principais

vulnerabilidades assim como as organizações que se responsabilizam em avaliar e

informar detalhadamente suas características. São igualmente identificadas as

metodologias mais fiáveis e robustas para a identificação de vulnerabilidades assim

como as principais ferramentas automáticas de análise de vulnerabilidades em

aplicações web (web scanners).

2.1 Listas de Vulnerabilidades em Aplicações Web e Entidades

Internacionais em Segurança da Informação

Com o passar do tempo cada vez é maior a quantidade de vulnerabilidades existentes

nas aplicações que são usadas na maior parte da nossa vida pessoal e das organizações.

Estas vulnerabilidades são igualmente cada vez mais potentes e fáceis de explorar. Pela

necessidade de avaliar, identificar e comunicar estas vulnerabilidades e tendo em conta

o alto relevo na informática com a temática da segurança aplicacional nasceram

instituições internacionais especializadas em segurança da informação. A análise estado

da arte tem em consideração as boas práticas de identificação e análises de

vulnerabilidades correspondentes a um conjunto de entidades internacionais,

especialmente vocacionadas para a segurança aplicacional web, nomeadamente:

Page 12: Identificação de vulnerabilidades em aplicações web open ...

10

Computer Emergency Response Team

O CERT é um centro de resposta a incidentes de segurança em tecnologia da

informação. Trata-se de um grupo de especialistas responsáveis pelo desenvolvimento

de medidas preventivas e/ou reativas aos problemas de segurança em sistemas de

informação. O CERT estuda o estado da segurança global de computadores e redes e

fornece serviços de resposta a incidentes de vítimas de ataques na rede, publica alertas

de ameaças e vulnerabilidades e fornece informações para ajudar a melhorar a

segurança desses mesmos sistemas (Carnegie Mellon University, 2016).

Massachusetts Institute of Technology Research Establishment

A corporação MITRE é uma empresa sem fins lucrativos que opera vários centros de

pesquisa e desenvolvimento financiados pelo governo federal dos Estados Unidos.

Fornecem soluções inovadoras e práticas para alguns dos desafios mais críticos da

nação norte-americana, como por exemplo defesa e inteligência, aviação, sistemas civis,

segurança interna, o judiciário, saúde e segurança cibernética. (The MITRE

Corporation, 2016)

O CVE (Commom Vulnerabilities and Exposures) é um dicionário de nomes comuns

para as vulnerabilidades de segurança da informação publicamente conhecidas, onde

cada referência tem um número de identificação único, o que facilita a sua partilha em

bases de dados de segurança. A lista é definida e mantida pela organização MITRE com

a colaboração de organizações ao redor do mundo que desenvolvem atividades na área

da segurança da informação, como por exemplo, vendedores de ferramentas comerciais,

instituições de investigação, agências governamentais e outros peritos em segurança

(The MITRE Corporation, 2016).

Open Web Application Security Project

O projeto OWASP é uma comunidade aberta dedicada a capacitar as organizações a

desenvolver, comprar e manter aplicações de confiança. Todas as ferramentas,

documentos, fóruns e capítulos do OWASP são gratuitos e abertos a qualquer pessoa

interessada em melhorar a segurança da aplicação.

Page 13: Identificação de vulnerabilidades em aplicações web open ...

11

O OWASP Top Ten é uma lista com os principais riscos de segurança em aplicações

web. Tem como principal objetivo educar quem desenha, arquiteta e programa

aplicações web (embora também exista para outro tipo de aplicações ou sistemas),

assim como as organizações acerca das consequências das debilidades mais importantes

da segurança de aplicações, mediante a identificação dos riscos mais críticos que

enfrentam. O projeto Top Ten é referenciado por muitos padrões, livros, ferramentas e

organizações, sendo hoje quase um standard “de facto” do mundo da segurança de

informação e do desenvolvimento aplicacional.

A versão do OWASP Top Ten foi inicialmente lançada no ano 2003, tendo tido

atualizações menores nos anos 2004 e 2007. A versão do ano 2010 foi renovada para

dar prioridade ao risco e oferecer informação adicional sobre como avaliar o risco das

aplicações web. A versão mais recente foi lançada no ano 2013 e segue o mesmo

enfoque que a versão de 2010. Os riscos descritos no OWASP Top Ten (OWASP

Foundation, 2013) são os seguintes:

A1 - Injeção

Falhas de injeção, tais como as que ocorrem no SQL, sistema operativo (SO) e LDAP.

Estas falhas ocorrem quando os dados não confiáveis são enviados a um interpretador

como parte de um comando ou consulta. Os dados hostis do atacante podem enganar o

interpretador para executar comandos não intencionais ou aceder aos dados sem a

devida autorização.

A2 - Quebra de Autenticação e Gestão de Sessões

As funções da aplicação relacionadas com a autenticação e com a gestão de sessões,

muitas vezes não são implementadas corretamente, permitindo aos atacantes

comprometer as palavras-passe, chaves ou tokens de sessão, ou explorar outras falhas de

implementação para assumir a identidade de outros utilizadores.

A3 - Cross-Site Scripting (XSS)

As Falhas XSS ocorrem sempre que uma aplicação usa dados não confiáveis e os envia

para um navegador web, sem a devida validação e codificação apropriada. O XSS

Page 14: Identificação de vulnerabilidades em aplicações web open ...

12

permite que os atacantes executem scripts no navegador da vítima, que podem

sequestrar as sessões do utilizador, destruir websites, ou redirecionar o utilizador para

sites maliciosos.

A4 - Referência Direta e Insegura a Objetos

Uma referência direta a objetos ocorre quando um programador expõe uma referência a

um objeto de implementação interno, como por exemplo, um diretório, um arquivo ou

uma base de dados. Sem uma verificação de controlo de acesso ou qualquer outro tipo

de proteção, os atacantes podem manipular estas referências para aceder a dados não

autorizados.

A5 - Configuração Incorreta de Segurança

Uma boa segurança exige ter definida e implementada, uma configuração segura para a

aplicação, frameworks utilizadas no desenvolvimento, servidor da aplicação, servidor

web, servidor de base de dados e plataforma operacional. Todas as configurações de

segurança devem ser definidas, implementadas e mantidas, porque geralmente não são

seguras por defeito. Além disso, o software deve ser mantido atualizado, incluindo as

bibliotecas externas de código utilizadas pela aplicação.

A6 - Exposição de Dados Sensíveis

Muitas aplicações web não protegem corretamente os dados sensíveis tais como cartões

de crédito ou credenciais de autenticação. Os atacantes podem roubar ou modificar tais

dados para realizar fraudes de cartão de crédito, roubos de identidade ou outros crimes.

Os dados sensíveis requerem métodos de proteção adicionais como a criptografia de

dados, bem como precauções especiais na troca de dados no browser.

A7 - Ausência de Controlo de Acesso a Funções.

A maioria das aplicações web verificam os direitos de acesso ao nível da funcionalidade

antes de a tornar visível na interface do utilizador. No entanto, as aplicações precisam

verificar o controlo de acesso no servidor quando cada funcionalidade é acedida. Se os

pedidos não forem verificados, os atacantes podem realizar pedidos, a fim de aceder a

funcionalidades da aplicação sem a devida autorização.

Page 15: Identificação de vulnerabilidades em aplicações web open ...

13

A8 - Falsificação de Pedidos em Sites Cruzados (Cross-Site Request Forgery, CSRF).

Um ataque CSRF força o navegador web de uma vítima autenticado a enviar um pedido

HTTP falsificado, incluindo um cookie de sessão da vítima ou outra informação de

autenticação incluída automaticamente a uma aplicação web vulnerável. Isto permite ao

atacante forçar o navegador da vítima a gerar pedidos que a aplicação vulnerável acha

que são pedidos legítimos da vítima.

A9 - Utilização de Componentes Vulneráveis

Alguns componentes, tais como bibliotecas, frameworks e outros módulos de software,

são quase sempre executados com os mesmos privilégios da aplicação. Se um

componente vulnerável é explorado através de um ataque, pode ser facilitada a intrusão

no servidor e a perda grave de dados. As aplicações que usam componentes com

vulnerabilidades conhecidas debilitam as defesas da aplicação e permitem ampliar a

gama de possíveis ataques e os seus impactos.

A10 - Redireccionamentos e Reencaminhamentos não Validados

As aplicações da web frequentemente redirecionam e reencaminham os utilizadores

para outras páginas e websites, e utilizam dados não confiáveis para determinar as

páginas de destino. Sem a devida validação, os atacantes podem redirecionar as vítimas

para websites de phishing ou malware, ou utilizar a informação reencaminhada para

aceder a páginas não autorizadas.

Web Application Security Consortium

O WASC é uma organização sem fins lucrativos, criada como um esforço cooperativo

para esclarecer, classificar e organizar ameaças de segurança web. Os membros do

Consórcio Web Application Security, criaram este projeto para desenvolver e promover

na indústria uma terminologia padrão para descrever as ameaças.

Com o WASC os programadores de aplicações, profissionais de segurança,

fornecedores de software e auditores têm a capacidade de aceder a uma linguagem

consistente para solucionar problemas de ameaças de segurança web e definições

relacionadas.

Page 16: Identificação de vulnerabilidades em aplicações web open ...

14

Classificação de Ameaças WASC Web Threat v2.0

Da mesma forma que o OWASP, a organização WASC conta com sua própria lista das

principais vulnerabilidades de segurança aplicacional as quais serão indicadas na Tabela

1.

Ataques Fraquezas

Abuse of Functionality Application Misconfiguration

Brute Force Directory Indexing

Buffer Overflow Improper Filesystem Permissions

Content Spoofing Improper Input Handling

Credential/Session Prediction Improper Output Handling

Cross-Site Scripting Information Leakage

Cross-Site Request Forgery Insecure Indexing

Denial of Service Insufficient Anti-automation

Fingerprinting Insufficient Authentication

Format String Insufficient Authorization

HTTP Response Smuggling Insufficient Password Recovery

HTTP Response Splitting Insufficient Process Validation

HTTP Request Smuggling Insufficient Session Expiration

HTTP Request Splitting Insufficient Transport Layer Protection

Integer Overflows Server Misconfiguration

LDAP Injection

Mail Command Injection

Null Byte Injection

OS Commanding

Path Traversal

Predictable Resource Location

Remote File Inclusion (RFI)

Routing Detour

Session Fixation

SOAP Array Abuse

SSI Injection

SQL Injection

URL Redirector Abuse

XPath Injection

XML Attribute Blowup

XML External Entities

XML Entity Expansion

XML Injection

XQuery Injection Tabela 1. Classificação de ameaças de WASC

(Web Application Security Consortium, 2010)

Page 17: Identificação de vulnerabilidades em aplicações web open ...

15

Entre os ataques mais populares do WASC Web Threat v2.0 podemos numerar os

seguintes (Calyptix Security, 2015) :

Brute Force (WASC-11)

Um ataque de Força Bruta é um método para determinar um valor desconhecido,

utilizando um processo automatizado para tentar um grande número de valores

possíveis. O ataque tira vantagem do facto de que a entropia dos valores é menor do que

a percebida.

Denial of Service (WASC-10)

Negação de Serviço é uma técnica de ataque com a intenção de impedir a atividade

normal de um website. Os ataques de negação de serviço são normalmente aplicados à

camada de rede, mais também são possíveis na camada de aplicação.

Cross-Site Scripting (WASC-8)

Cross-site Scripting (XSS) é uma técnica de ataque que envolve código fornecido pelo

atacante numa instância do navegador do utilizador. A instância do navegador pode ser

um cliente de navegador web standard ou um objeto incorporado no navegador, tais

como um leitor de RSS ou um cliente de e-mail.

2.2 Auditorias na Área de Segurança da Informação

O glossário da ITIL (Information technology Infrastructure Library) (AXELOS, 2011)

define a palavra auditoria, como uma inspeção formal realizada para verificar se uma

norma ou conjunto de orientações estão a ser seguidos, que os registros são precisos, ou

que os objetivos de eficiência e eficácia estão a ser cumpridos.

Segundo (Pearson & Yee, 2013) a auditoria na área de segurança da informação é

responsável por questões de segurança em toda a infraestrutura de tecnologias da

informação e pode ser definida como um processo de análise de risco e avaliação de

vulnerabilidades. As auditorias em segurança podem ser classificadas em diferentes

tipos:

Page 18: Identificação de vulnerabilidades em aplicações web open ...

16

Avaliação de segurança: realizada com o objetivo de expor os problemas de

segurança em toda a infraestrutura, através de análises automatizadas que

procuram aceder às debilidades da mesma;

Auditoria de vulnerabilidade: este tipo de auditoria é uma aproximação baseada

em risco, onde são simulados ataques externos através de testes de intrusão;

Auditoria de segurança de aplicações: é uma auditoria intensiva de segurança,

realizada a uma aplicação e aos seus componentes associados;

Gestão de vulnerabilidade: é uma auditoria automatizada, com múltiplas

análises, onde são documentadas as vulnerabilidades detetadas por ordem

cronológica.

2.3 Aplicações Web

Uma aplicação web é uma aplicação acedida através da Internet geralmente utilizando

um navegador web. É um tipo especial de aplicação cliente/servidor, onde a

comunicação é realizada através de um protocolo (HTTP). A aplicação web responde a

solicitações de um utilizador, os clientes realizam os pedidos a um servidor, que

posteriormente as processa e finalmente responde aos clientes com a informação

solicitada. O cliente não precisa instalar o atualizar um software para ter acesso à

aplicação e a atualização e administração são realizadas de forma centralizada, o que

tem como vantagem não ter de fazer distribuição e instalação em múltiplos clientes.

Esta facilidade de acesso às aplicações web poder causar problemas de segurança e

portanto causar riscos na informação que manipulam. A Figura 2 esquematiza como

funciona uma aplicação web.

Page 19: Identificação de vulnerabilidades em aplicações web open ...

17

Figura 2. Esquema de funcionamento de uma aplicação web

(Acunetix, s.d.)

2.4 Auditoria de Segurança a uma Aplicação Web

Segundo (Bylica & Ksiezopolski, 2011) a segurança de aplicações web é dificultada

principalmente por três aspetos principais: 1) os programadores são forçados a descer

os custos das aplicações o que faz que sejam omitidos aspetos de segurança, 2) a criação

de novas tecnologias traz consigo uma geração de novas vulnerabilidades e ameaças e

3) o acesso gratuito às aplicações web permite alargar os espectro de novos

atacantes potenciais.

As auditorias são realizadas para evitar que uma aplicação web seja alvo de intrusões

que possam colocar em risco os elementos de uma empresa como, por exemplo, os

servidores, a base de dados e os aspetos não tangíveis como a sua reputação.

Segundo o OWASP Testing Guide v4 (OWASP Foundation, 2016) existem quatro

técnicas básicas para analisar a segurança de uma aplicação web: revisão e inspeção

manual, modelação de ameaças, revisão de código e testes de intrusão.

Revisão e inspeção manual.

As inspeções manuais são avaliações humanas que fazem testes das implicações de

segurança em pessoas, políticas e processos. São geralmente realizadas analisando

documentação ou através de entrevistas com os criadores e proprietários do sistema.

Page 20: Identificação de vulnerabilidades em aplicações web open ...

18

As inspeções manuais e revisões são boas para testar se as pessoas percebem o processo

de segurança, se foram informadas da política, e têm as habilidades necessárias para

desenhar ou programar uma aplicação segura.

As inspeções manuais têm como vantagem o facto de não requererem tecnologia de

suporte, serem flexíveis e poderem ser realizadas desde as etapas iniciais do

desenvolvimento de uma aplicação. Como principal desvantagem é o facto de serem

consumidoras de tempo, de nem sempre existir disponibilidade de material de suporte e

de requererem maior experiência e pensamento humano.

Modelação de ameaças.

É considerada uma técnica popular para ajudar os arquitetos de um sistema a pensar

sobre as ameaças que o mesmo pode sofrer e a criar estratégias de mitigação para as

vulnerabilidades potenciais. A modelação de ameaças deve ser feita desde etapas

iniciais de uma aplicação e ser contínua durante o seu desenvolvimento. Esta técnica é

considerada como uma técnica de avaliação de risco e pode envolver diferentes etapas

como a inspeção manual da aplicação, a definição e classificação de ativos com o

objetivo de fazer uma lista de prioridades de acordo a importância, a exploração de

vulnerabilidades, a exploração de ameaças potenciais e finalmente a criação de

estratégias de mitigação.

O guião de revisão de código da OWASP (OWASP Foundation, 2010) contém uma

metodologia de modelação de ameaças que pode ser utilizada como referência, o que

torna possível seguir uma abordagem estruturada durante a execução da técnica.

Revisão de código

Através da auditoria manual do código de uma aplicação podem ser identificadas

vulnerabilidades que dificilmente seriam detetadas através de outros tipos de testes. A

revisão de código é realizada para verificar que os controlos de segurança estão

presentes, que trabalham adequadamente e que as pessoas que desenvolveram a

Page 21: Identificação de vulnerabilidades em aplicações web open ...

19

aplicação seguiram as técnicas corretas. A revisão de código é efetiva, precisa e pode

ser realizada de forma rápida quando é feita por pessoas com experiência, e é

aconselhável que seja realizado por pessoas ou equipas que não estejam relacionados

com os autores do código fonte.

Testes de intrusão ou penetração

São também conhecidos como testes de caixa negra ou ethical hacking. Comprovam

uma aplicação sem conhecer o funcionamento interno da mesma, procurando

vulnerabilidades de segurança. Os auditores atuam como um atacante e tentam explorar

vulnerabilidades. Podem-se realizar também testes a redes e a sistemas operativos. Têm-

se vindo a desenvolver algumas ferramentas que permitem automatizar o processo de

auditoria, no entanto a sua eficiência ainda é algo escassa.

2.5 Metodologias de Auditorias de Vulnerabilidades

As metodologias de análise de segurança funcionam como guias para a realização de

testes de uma forma organizada e de acordo com um conjunto de regras estabelecidas

entre diferentes profissionais. São utilizadas para evitar falhas humanas que possam

comprometer os resultados finais. Há diferentes metodologias de auditoria de aplicações

web, sendo que as mais utilizadas internacionalmente, uma vez que são abertas e de

livre uso, são as seguintes:

Information Systems Security Assessment Framework (ISSAF) (Open

Information Systems Security Group, 2006);

Open Source Security Testing Methodology Manual (OSSTMM) (Institute For

Security and Open Methodologies, 2010);

OWASP Testing Guide (OWASP Foundation, 2016).

Information Systems Security Assessment Framework (ISSAF)

ISSAF é um projeto do Open Information System Security Group (OISSG) e contém um

guia detalhado das práticas e conceitos relacionados com cada uma das etapas que se

devem realizar num teste de segurança. A metodologia definida pelo ISSAF

compreende todos os aspetos relacionados com avaliação de segurança, desde uma

Page 22: Identificação de vulnerabilidades em aplicações web open ...

20

perspetiva de alto nível, como por exemplo, o impacto no negócio e na organização, até

técnicas práticas, como os testes de segurança de palavras-passe, sistemas, entre outros.

A metodologia encontra-se dividida em quatro fases principais, estruturadas em vários

pacotes de trabalho: planeamento, avaliação, tratamento e acreditação. (Open

Information Systems Security Group, 2006)

Open Source Security Testing Methodology Manual (OSSTMM)

O OSSTMM é um manual de uma metodologia aberta para realizar testes de segurança.

Foi desenvolvido por Pete Herzog no ano 2000 e representa um padrão de referência

para quem deseja realizar um teste de segurança de forma profissional e organizada.

Este guia abarca temas da segurança da informação, qualificação do pessoal, segurança

nas comunicações, segurança em redes de comunicação sem fios e segurança física. A

metodologia OSSTMM pode ser adaptada a qualquer operação de auditoria. (Institute

For Security and Open Methodologies, 2010)

Open Web Application Security Project (OWASP) Testing Guide

É um documento que proporciona uma guia centrado em testes e listas de verificação de

segurança sobre aplicações web. Este guia está dividido em cinco fases diferentes: a

anterior ao desenvolvimento, a fase de definição e desenho da aplicação, a fase de

desenvolvimento, a fase de instalação e publicação e finalmente a fase de manutenção e

operação. A OWASP está em grande medida dedicada a segurança web pelo que é uma

referência para quando são realizadas auditorias de aplicações web. (OWASP

Foundation, 2016)

2.6 Sistemas Operativos de Ethical Hacking.

Segundo (Maurya, 2015) as melhores ferramentas de auditoria de segurança são as

seguintes:

Kali Linux

Anteriormente conhecido como BackTrack é uma distribuição baseada no sistema

operativo Debian, que contém uma coleção de ferramentas de segurança e auditoria

forense. Possui suporte para a arquitetura ARM, uma escolha para quatro ambientes de

Page 23: Identificação de vulnerabilidades em aplicações web open ...

21

desktop populares e atualizações constantes. O Kali Linux1 foi criado pela companhia

Offensive Security, traz pré-instalados mais de 600 programas, pode ser usado desde

um Live CD, Live USB ou instalado como sistema operativo principal.

BlackArch

O BlackArch Linux2 é uma distribuição baseada no sistema operativo Arch Linux para

auditores de segurança. O repositório contém uma enorme quantidade de ferramentas.

Tem a possibilidade de instalar ferramentas individualmente ou em grupos. O

BlackArch Linux é compatível com as instalações do SO Arch já existentes. Foi criado

e é mantido por um grupo de voluntários.

BackBox

O Backbox3 é uma distribuição Linux baseada no sistema operativo Ubuntu. Tem-se

desenvolvido para realizar testes de penetração e avaliações de segurança. Projetado

para ser rápido, fácil de usar e fornecer um ambiente de desktop completo. Foi criado

por Raffaele Forte no ano 2010.

The Samurai Web Testing Framework

O Samurai Web Testing Framework4 é uma distribuição Linux "LiveCD" que está pré-

configurada para auditorias web. A imagem contém as melhores ferramentas de código

aberto para experimentar. Os programadores desta distribuição basearam a escolha das

ferramentas na sua experiência em auditorias web. Esta distribuição está baseada no

sistema operativo Ubuntu e foi criada por Kevin Johnson e Justin Searle.

Computer Aided INvestigative Environment

É uma distribuição Linux baseada em Ubuntu, criada por Nanni Bassetti como um

Projeto de Tecnologia Forense Digital5, e tem uma interface gráfica amigável e

ferramentas de fácil utilização para o usuário. Atualmente é mantida por colaboradores.

1 https://www.kali.org/ 2 https://blackarch.org/ 3 https://backbox.org/ 4 https://sourceforge.net/projects/samurai/files/ 5 http://www.caine-live.net/page5/page5.html

Page 24: Identificação de vulnerabilidades em aplicações web open ...

22

2.7 Web Scanners

(Teodoro, 2011) define os web scanners como ferramentas que percorrem toda uma

aplicação, analisando os seus conteúdos através da aplicação de funções internas que

inspecionam o código e o seu comportamento de acordo com uma lista de

vulnerabilidades conhecidas. Esta inspeção pretende imitar ataques realizados por

agentes maliciosos que geram inputs específicos, enquanto a que as respostas e

comportamentos gerados são analisados. Segundo (Gómez, 2015) as oito melhores

ferramentas para realizar análises de vulnerabilidade são:

1. Grabber

O Grabber é uma ferramenta que deteta vários tipos de vulnerabilidades num website, é

simples, não é muito rápida mas é portátil e muito adaptável. Utiliza-se através da

interface de comandos e está programada em linguagem Python (Gaucher, 2006)

2. Subgraph Vega

O Subgraph Vega é um scanner automatizado que realiza testes rápidos para procurar

vulnerabilidades sendo também um proxy que pode realizar inspeções táticas. Foi

desenvolvido em Java e tem uma interfase gráfica de fácil utilização (Subgraph, 2014)

3. OWASP Zed Attack Proxy

O OWASP ZAP é uma ferramenta desenvolvida em Java pelo projeto OWASP para

realizar testes de penetração. Tem como características principais: o Proxy de interceção

de dados, a ferramenta de procura Spider, vários tipos de Scanner e a função de Fuzzer

(OWASP Foundation, 2016)

4. Wapiti

O Wapiti é um scanner de vulnerabilidades web que realiza testes de caixa negra, sendo

usada através da interface de linha de comandos. A ferramenta foi desenvolvida em

Python e suporta métodos de ataques com GET e POST HTTP (Surribas, 2014)

5. W3af

Page 25: Identificação de vulnerabilidades em aplicações web open ...

23

A W3af é uma estrutura extremamente popular, poderosa e flexível para encontrar e

explorar vulnerabilidades em aplicações web. É fácil de usar e apresenta dezenas de

plugins de avaliação e de exploração de aplicações. De certa forma, é como um

Metasploit focado na web (Riancho, 2013)

6. WebScarab

O WebScarab regista os pedidos e as respostas que observa (atuando como um proxy) e

permite que o operador as possa rever de várias maneiras. O WebScarab foi concebido

como uma ferramenta para quem precisa expor o funcionamento de um servidor

HTTP(S), para permitir ao programador depurar problemas que de outra forma seriam

difíceis, ou para permitir a um especialista em segurança identificar vulnerabilidades no

desenho ou implementação da aplicação (OWASP Foundation, 2014)

7. Skipfish

O Skipfish é uma ferramenta criada pela empresa Google de reconhecimento de

segurança de aplicações web ativas. Prepara um mapeamento interativo de um website

alvo de realização de um teste. O mapa resultante é anotado com a saída de um número

de controlos de segurança ativa. O relatório final gerado pela ferramenta destina-se a

servir de base para as avaliações de profissionais de segurança de aplicações web

(Google, s.d.)

8. RatProxy

O RatProxy é uma ferramenta semiautomática criada pela empresa Google, que permite

realizar auditorias em aplicações web, utilizando crawlers ativos assim como revisões

manuais dos dados através do Proxy (Google, s.d.)

2.8 Virtualização

A virtualização é a abstração dos recursos de um computador e o seu funcionamento

como máquina virtual noutra máquina física. O termo “máquina anfitriã” refere-se a

uma máquina física onde se leva a cabo a virtualização enquanto o termo “máquina

hospedeira” refere-se a máquina virtual o hypervisor (Martín, Marrero, Urbano, Barra,

& Moreiro, 2011).

Page 26: Identificação de vulnerabilidades em aplicações web open ...

24

O hypervisor é uma tecnologia composta por uma camada de software que permite

utilizar ao mesmo tempo, diferentes sistemas operativos o maquinas virtuais (sem

modificar o modificados no caso da paravirtualização) num mesmo computador central.

O seja é a parte principal de uma maquina virtual que encarga-se de controlar os

recursos do sistema principal exportando-lhos para a máquina virtual. (Velasco, 2004)

Na Figura 3 pode-se observar a arquitetura de um sistema de virtualização.

Segundo (Monginho, 2012) existem 4 categorias importantes de tecnologias de

virtualização, as quais são introduzidas de seguida.

Figura 3. Arquitetura de um sistema de virtualização

(National Instruments, 2016)

1. Virtualização de aplicações

A virtualização de aplicações é a capacidade de instalar e utilizar qualquer aplicação de

uma forma segura, enquanto protege o sistema operativo e outras aplicações de

possíveis alterações que poderiam afetar a estabilidade e a segurança do sistema.

2. Virtualização de meios de armazenamento

A virtualização nos meios de armazenamento de dados possibilita que a informação

gravada em diferentes meios de armazenamento de diferentes fabricantes possa ser

partilhada, replicada, movida e até gerida, de uma forma mais fiável e segura.

Page 27: Identificação de vulnerabilidades em aplicações web open ...

25

3. Virtualização de sistemas operativos

A virtualização de sistemas operativos rompe com o conceito que existe de instalação

de um único sistema operativo no servidor ou desktop para um único hardware. Apesar

de ser possível que numa máquina física exista um único hypervisor também é usual a

existência de mais do que um. Uma VM é, por norma, um ambiente criado por software,

dentro do sistema operativo hospedeiro (host).

3.1 Virtualização nativa ou total

A virtualização nativa ou total é, acima de tudo, uma camada de software que simula

todos os componentes existentes numa máquina real. Com esta técnica o hypervisor

controla todo o hardware simulando todos os dispositivos da máquina real

disponibilizando um ambiente completo às máquinas virtuais.

3.2 Paravirtualização

A paravirtualização surge como alternativa à virtualização total ou nativa. Neste modelo

de virtualização, o sistema operativo é alterado para chamar o hypervisor sempre que

executar uma instrução sensível que possa alterar o estado do sistema.

4. Virtualização de hardware

O principal conceito de virtualização de hardware é simples: utilizar software para criar

uma máquina virtual que simula um computador físico. Desta forma cria-se um

ambiente de sistema operativo separado do servidor host. Ao fornecer várias VM’s de

uma vez, permite que sejam executados em simultâneo vários sistemas operativos numa

única máquina virtual.

Benefícios da Virtualização:

Conhecidas as diferentes tecnologias de virtualização, examina-se a seguidamente os

benefícios da virtualização em diferentes tópicos como segurança, portabilidade,

eficiência e outros (Galiana, 2015):

Permite o isolamento, o qual pode evitar que uma aplicação impacte no

funcionamento de outra;

Page 28: Identificação de vulnerabilidades em aplicações web open ...

26

Diminui o número de servidores físicos que se precisam, podem instalar-se uma

alta quantidade de máquinas virtuais num só servidor, simulando assim vários

servidores físicos;

Uma imagem pode ser duplicada facilmente, permitindo poupar tempo em

processos como instalações de raiz e rápida recuperação de falhas através de

cópias de segurança;

Permite a eficiência de utilização do espaço utilizado nos discos rígidos;

As máquinas virtuais podem ser transportadas facilmente.

Melhores ferramentas de Virtualização

Segundo (Elvira, 2011) as melhores ferramentas para virtualização são as seguintes:

VMware Player

Criada pela empresa VMware Inc. (filial de EMC Corporation) é um programa gratuito

que permite a criação de máquinas virtuais com uma variedade de sistemas operativos

incríveis, desde Windows, passando pelo Mac até a ampla gama de sistemas Linux

(Ubuntu, Suse, Fedora, Debian, Oracle, entre outros).

VirtualBox

O VirtualBox é um programa gratuito open-source criado pela empresa Innotek GmbH

(comprada posteriormente pela Sun Microsystem, atualmente Oracle Corporation), que

permite a virtualização de muitos sistemas operativos (mas não tantos como VMware).

O VirtualBox pode ser usado em Windows, Linux e MacOSX, podemos instalar

sistemas operativos de 64 bits e partilhar pastas entre os diferentes sistemas.

VirtualPC

VirtualPC e um software de virtualização criado pela Connectix e comprado pela

empresa Microsoft. É o software de virtualização mais simples de todos, só permite

virtualizar sistemas operativos Windows, consegue virtualizar sistemas de 64 bits e não

permite conectar periféricos.

Page 29: Identificação de vulnerabilidades em aplicações web open ...

27

Capítulo 3. Metodologia e

Ambiente de Testes de Auditoria

Neste capítulo explica-se a metodologia utilizada para cumprir com os objetivos

propostos na investigação, serão explicados todos os processos, os testes automatizados

realizados, assim como os respetivas ferramentas a utilizar, desde o servidor até aos

clientes, os sistemas operativos e a revisão dos resultados obtidos com ferramentas

específicas de análises.

3.1 Identificação dos Processos da Metodologia

O processo tem início na identificação das principais categorias das aplicações web que

são utilizadas pelas empresas. De seguida, é importante selecionar as diferentes

ferramentas mais adequadas para estabelecer o ambiente de testes a usar neste trabalho.

Assim é importante selecionar o software de virtualização para a criação dos ambientes

virtuais, seguindo-se os sistemas operativos tanto do lado do cliente como do servidor, e

Page 30: Identificação de vulnerabilidades em aplicações web open ...

28

finalmente as aplicações web que serão testadas (as mesmas devem corresponder às

categorias selecionadas no processo anterior). Para finalizar e estabelecer todo o

ambiente de testes são igualmente instaladas todas as ferramentas automáticas de

auditoria com que serão realizados os respetivos testes. Para realizar os testes, as

aplicações web a testar selecionadas são instaladas em instâncias diferentes e

individualizadas das máquinas virtuais, tendo em considerações os respetivos requisitos

de cada uma (Ver Anexos, Tabela 30). Na fase seguinte são realizados os testes de

auditoria utilizando as ferramentas previamente selecionadas. Os resultados são

registados numa base de dados. Na fase posterior as vulnerabilidades são classificadas

de acordo ao nível de risco e mapeadas no modelo OWASP Top Ten. Seguidamente

será realizada uma inspeção manual das vulnerabilidades encontradas, para garantir que

se trata efetivamente de uma vulnerabilidade existente e não um falso positivo, e

posteriormente é conduzido um novo teste com uma ferramenta especializada no tipo de

vulnerabilidade encontrada. O próximo passo consistirá na realização de novos testes

com outra ferramenta geral (caso ainda não tenham sido usadas todas). Finalmente serão

comunicadas as vulnerabilidades encontradas. O processo continuará atá serem testadas

todas as respetivas aplicações. Todo o processo pode ser visualizado na figura 4.

3.2 Identificação das Categorias de Aplicações Web

São múltiplas as categorias de aplicações web open-source que são usadas pelas

organizações, sendo que as mais importantes são as seguintes (Rubens, 2013):

Sistema de Gestão de Conteúdo (Content Management System – CMS)

É um sistema usado para criar, editar, gerenciar e publicar conteúdo de forma

consistentemente organizada permitindo que o mesmo seja modificado, removido e

adicionado com facilidade.

De acordo com (Amudha, 2011) os CMS são importantes para as empresas já que criam

métodos mais avançados de digitalização de processos de negócios, contribuindo à

redução de custos através da eliminação da impressão, distribuição e atividades de

Page 31: Identificação de vulnerabilidades em aplicações web open ...

29

armazenamento físico. Os Sistema de Gestão de Conteúdo melhoram a produtividade

das empresas.

Planeamento de Recursos Empresariais (Enterprise Resource Planning - ERP)

São sistemas de informação que integram todos os dados e processos de uma

organização num único sistema. A integração pode ser vista sob uma perspetiva

funcional ou uma perspetiva sistêmica.

Page 32: Identificação de vulnerabilidades em aplicações web open ...

30

Figura 4. Processos da Metodologia.

Segundo (P. Sivakumar, 2014) os ERP ajudam na automatização dos processos de

negócios nas empresas através da personalização. Esta possibilidade de personalização

Page 33: Identificação de vulnerabilidades em aplicações web open ...

31

faz que uma organização seja diferente de outras, contribui à melhora da produtividade

e reduz o tempo de espera para o atendimento das necessidades dos clientes. Ademais

de isto, os ERP permitem a automatização de câmbios no processo de negócios através

da flexibilidade, independência da plataforma e permite a geração de conhecimento

interno com menores custos.

Gestão de Relacionamento com o Cliente (Customer Relationship Management -

CRM)

São uma classe de ferramentas e sistemas importantes para as empresas já que

automatizam as funções de contacto de uma empresa com o cliente, estas permitem que

sejam oferecidos produtos e serviços adaptados a suas necessidades, possibilitando

assim o marketing relacional, mantendo e consolidando as relações com o cliente,

fidelizando aos mesmos. (Serrano, 2014)

Comércio Eletrónico (e-commerce)

Ferramentas que permitem implementar algum tipo de transação comercial (com ou sem

fins lucrativos) feita especialmente através de um equipamento eletrônico, como, por

exemplo, computadores, tablets e smartphones.

Segundo a (Forbes, 2014) o comércio eletrónico tem uma alta importância nas empresas

motivado aos grandes benefícios:

Reduz custos, abrir una loja virtual e mais económico que uma física.

Gera lealdade com os clientes, oferendo uma boa experiencia através de um

amplio catalogo de produtos, facilidade no uso da plataforma, serviço de pagos.

Atenção via chat e garantia depois de receber os produtos.

Maior alcance ao público, mediante a possibilidade de poder comprar desde

qualquer parte do mundo, a qualquer hora, ademais da enorme quantidade de

usuários ativos na internet, o seja uma quantidade gigantesca de possíveis

compradores.

Segurança para o cliente e o vendedor através de cifrado e certificados de

segurança eletrónico.

Facilidade de entrega de produtos através das empresas de logística.

Page 34: Identificação de vulnerabilidades em aplicações web open ...

32

3.3 Escolha das Aplicações usadas

Nesta secção serão apresentadas todas as aplicações que foram utilizadas nos testes,

desde o servidor como os respetivos clientes, sistemas operativos, e diferentes tipos de

ferramentas automáticas de auditoria.

3.3.1 Seleção das Aplicações Web a serem testadas

Para a seleção das aplicações web a testar foram utilizados critérios baseados nos níveis

de popularidade e na quantidade de descargas dos principais repositórios de open-

source (SourceForge, 2016) e (GitHub, 2016) assim como as estatísticas sobre quota de

mercado de cada uma delas (Wappalyzer, 2016).

Para ser mas específico, e para reduzir o âmbito da tese e dos alvos a testar, foram

selecionadas apenas as aplicações web desenvolvidas na linguagem de programação

PHP, sendo esta, uma das linguagens de desenvolvimento mais utilizadas para o

desenvolvimento de aplicações web, tal como é representada na Figura 5.

Figura 5. Quota de mercado - Linguagem das aplicações web.

(Wappalyzer, 2016)

Para a categoria Sistema de Gestão de Conteúdo foram selecionadas as seguintes

aplicações, com base na sua quota de mercado (Figura 6):

WordPress – 69%

Page 35: Identificação de vulnerabilidades em aplicações web open ...

33

Joomla – 10%

Drupal – 6%

Figura 6. Quota de mercado - Sistemas de gestão de conteúdo.

(Wappalyzer, 2016)

Na categoria de Comércio Eletrónico foram selecionadas as seguintes aplicações, com

base na sua quota de mercado (Figura 7):

Figura 7. Quota de mercado - Comércio eletrónico.

(Wappalyzer, 2016)

Magento – 15%

Page 36: Identificação de vulnerabilidades em aplicações web open ...

34

OpenCart – 11%

PrestaShop – 8%

Apesar da aplicação WooCommerce apresentar a maior quota de mercado (cerca de

38%) a mesma não foi selecionada uma vez que se trata um plugin para o Sistema de

Gestão de Conteúdo WordPress.

Na categoria Gestão de Relacionamento com o Cliente foram selecionadas as seguintes

aplicações, baseadas na relevância uma vez que não existia informação relativa à quota

de mercado de cada uma (Figura 8):

Vtiger – 4.015 descargas semanais;

SugarCRM – 1.816 descargas semanais;

Zurmo – 130 descargas semanais.

Figura 8. Aplicações CRM com maior relevância - SourceForge

(SourceForge, 2016)

Mais uma vez, para a categoria Planeamento de Recursos das Empresas foram

selecionadas as seguintes aplicações, baseadas na relevância (Figura 9):

webERP – 1.017 descargas semanais;

FrontAccounting -335 descargas semanais;

inoERP – 33 descargas semanais.

Page 37: Identificação de vulnerabilidades em aplicações web open ...

35

Figura 9. Aplicações ERP com maior relevância - SourceForge

(SourceForge, 2016)

3.3.2 Seleção do Software para Virtualização

Depois de ter avaliado a Virtualização no capitulo de estado de arte foi tomada a

decisão da utilização desta tecnologia neste trabalho motivado pelos seus grandes

benefícios, através do isolamento permitiremos que cada aplicação seja protegida de

interferências por parte de outro tipo de aplicações, será preciso só um servidor físico

para realizar todos os testes, nele poderão ser instalados todos os servidores e clientes

virtuais, de igual forma será necessário menor quantidade de espaço em disco, a

imagem do servidor LAMP poderá ser replicada varias vezes e ser utilizada para instalar

aplicações individualmente em cada uma de elas, poderão ser realizadas copias de

segurança no transcurso da investigação e por ultimo as imagens podem ser

transportadas facilmente como por exemplo num disco rígido externo.

Para a seleção desta ferramenta foi tomado o estudo realizado pelo website Xmodulo

onde foram realizadas provas de desempenho no software Oracle VirtualBox e

VMWare Player com diferentes ferramentas que avaliavam o desempenho (Benchmark)

apresentando como resultado que o VMware Player apresentou um melhor desempenho,

principalmente a nível de velocidade de Disco, CPU e memória RAM (Nanni, 2013).

Page 38: Identificação de vulnerabilidades em aplicações web open ...

36

Comparação do Rendimento do Disco, mais é melhor

Figura 10. Seleção do software para Virtualização - BlogBench, Read Test

(Nanni, 2013)

Figura 11. Seleção do software para Virtualização - Dbench, MB/s

(Nanni, 2013)

Comparação do Rendimento da CPU, menos é melhor

Figura 12. Seleção do software para Virtualização - Gzip Compression: 2GB file

(Nanni, 2013)

Page 39: Identificação de vulnerabilidades em aplicações web open ...

37

Figura 13. Seleção do software para Virtualização - FFmpeg: H.264 HD to NTSC DV

(Nanni, 2013)

Comparação do Rendimento da Memoria RAM, mais é melhor

Figura 14. Seleção do software para Virtualização - RAMspeed (Integer)

(Nanni, 2013)

Figura 15. Seleção do software para Virtualização - RAMspeed (Floating Point)

(Nanni, 2013)

Page 40: Identificação de vulnerabilidades em aplicações web open ...

38

O Software VirtualPC foi descartado da seleção pelo facto que não suporta virtualização

de sistemas operativos open-source.

3.3.3 Seleção do Sistema Operativo do cliente Ethical Hacker

Foram realizados testes as diferentes distribuições Linux de Ethical Hacking (Kali,

BlackArch, BackBox, TSWTF e CAINE) descritas no capítulo anterior, chegando a

conclusão que a melhor distribuição que se adapta a este trabalho é o Kali Linux, devido

às seguintes características:

Maior quantidade de programas e ferramentas pré-instaladas;

Atualizações constantes através do modelo Rolling Release;

Interface gráfica de fácil utilização;

Grande quantidade de utilizadores, forums, blogs e wikis, o qual permite uma

maior comunidade de suporte.

3.3.4 Seleção do Sistema Operativo dos Servidores

Para a realização dos testes foi selecionado como o servidor onde se instalaram as

aplicações web o sistema operativo Ubuntu 14.04 LTS devido a apresentar os seguintes

benefícios:

Fácil configuração e uso;

Requerimentos físicos baixos;

Interface gráfica intuitiva;

Excelente segurança e estabilidade;

Suporte a longo prazo (Long Term Support);

Desenvolvido e suportado pela empresa Canonical.

3.3.5 Seleção das Ferramentas para a realização de Testes de Intrusão

As ferramentas de testes de intrusão para as aplicações web selecionadas foram

divididas em dos grupos: ferramentas gerais e ferramentas específicas.

Page 41: Identificação de vulnerabilidades em aplicações web open ...

39

Ferramentas Gerais

Estas ferramentas permitem verificar uma grande quantidade de vulnerabilidades de

forma automática. Para a seleção destas ferramentas foram realizados testes, sendo

selecionadas as seguintes ferramentas pelos critérios de nível de estabilidade, facilidade

de utilização e o número de vulnerabilidades que conseguem verificar.

OWASP Zed Attack Proxy (ZAP)

O OWASP ZAP é uma ferramenta integrada, de interface gráfica desenvolvida e

mantida pela organização OWASP. Esta ferramenta permite realizar testes de intrusão

com scanners automáticos assim como análises manuais através de um conjunto de

ferramentas.

Seguidamente são indicadas as vulnerabilidades específicas que o ZAP analisa assim

como os respetivos módulos (OWASP Foundation, 2015).

Active Scan:

Directory Browsing

Buffer Overflow

CRLF Injection

Cross Site Scripting

Format String Error

Parameter Tampering

Remote OS Command Injection

Server Side Code Injection

Server Side Include

SQL Injection

External Redirect

Script Active Scan Rules

Path Traversal

Remote File Inclusion

Passive Scan:

Application Error Disclosure

Page 42: Identificação de vulnerabilidades em aplicações web open ...

40

Content-Type Header Missing

Cookie No HttpOnly Flag

Cookie Without Secure Flag

Cross-Domain JavaScript Source File Inclusion

Incomplete or No Cache-control and Pragma HTTP Header Set

Password Autocomplete in Browser

Private IP Disclosure

Script passive scan rules

Secure Pages Include Mixed Content

Session ID in URL Rewrite

Stats Passive Scan Rule

Web Browser XSS Protection Not Enabled

X-Content-Type-Options Header Missing

X-Frame-Options Header Not Set

Subgraph Vega

Esta é uma plataforma que permite testar a segurança das aplicações web, recorrendo a

uma interface gráfica. Foi desenvolvida em Java e corre em Linux, OS X e Windows.

Seguidamente apresentam-se as vulnerabilidades específicas que analisa o programa

assim como os respetivos módulos (Subgraph, 2016).

Injection Module (Active Scan):

Cross Domain Policy Auditor

Shell Injection

HTTP Trace Probes

Remote File Include

Blind SQL Text Injection Differential

XSS Injection

Blind SQL Injection Arithmetic Evaluation Differential

Blind XPath Injection

Page 43: Identificação de vulnerabilidades em aplicações web open ...

41

Format String Injection

XML Injection

HTTP Header Injection

Blind OS Command Injection

Blind SQL Injection

Interger Overflow Injection

URL Injection

Local File Include

Eval Code Injection

Bash Environment Variable Blind OS Injection

Response Processing Module (Passive Scan):

RSS/Atom/OPL Feed Detector

Cleartext Password Over HTTP

Directory Listing Detection

Path Disclosure

Cookie Scope Detection

Version Control String Detection

Social Security/Social Insurance Number Detector

Unsafe Or Unrecognized Character Set

Interesting Meta Tag Detection

WSDL Detector

X-Frame Options Header Not Set

AJAX Detector

Form autocomplete

HTTP Authentication Over Unencrypted HTTP

Error Page Detection

Empty Response Body Module

Character Set Not Specified

Internal IP Addresses

File Upload Detection

Page 44: Identificação de vulnerabilidades em aplicações web open ...

42

E-Mail Finder

Insecure Cross-Domain Policy

Credit Card Identification

Insecure Script Include

Cookie Security Module

Oracle Application Server Fingerprint

HTTP Header

Source Code Disclosure

3.4 Execução dos Testes de Auditoria.

Um teste de intrusão é um método de avaliação da segurança de um sistema de

informação mediante a simulação de ataques. Grande parte do trabalho realizado nesta

tese será baseada especificamente em testes de intrusão realizados a aplicações web.

O processo foca-se na busca de qualquer debilidade, falhas técnicas ou vulnerabilidades

para posteriormente poderem ser identificadas e reportadas com uma respetiva avaliação

assim como uma proposta para sua mitigação ou solução técnica (Salazar, 2016).

O modelo de testes é composto por:

Auditor: indivíduo que realiza as atividades de teste e verificação;

Ferramentas e Metodologias: o núcleo do projeto de guia de testes;

Aplicação e ambiente: o alvo dos testes numa abordagem de caixa negra (black

box).

Os testes dividem-se normalmente em duas fases distintas:

Modo Passivo (Passive Scan): examina de maneira simples as respostas da

aplicação (saída) sem modificar as respostas obtidas – por exemplo, uma “flag”

não ativada;

Modo Ativo (Active Scan): a ferramenta realizará varias tentativas de modificar

a resposta obtida da aplicação web, serão modificados os valores de entrada

Page 45: Identificação de vulnerabilidades em aplicações web open ...

43

tentando procurar uma resposta “vulnerável” – por exemplo, através de injeção

SQL.

Adicionalmente, o conjunto de testes a realizar encontra-se dividido em 9 subcategorias

principais:

Testes de gestão da configuração;

Testes da lógica de negócio;

Testes de autenticação;

Testes de autorização;

Testes de gestão de sessões;

Testes de validação de dados;

Testes de negação de serviço;

Testes de serviços web;

Testes de AJAX.

Testes de Caixa Negra

Os testes de caixa negra (black box) pressupõem que o programa que está a ser testado

seja uma “caixa negra”, ou seja, é assumido que não há conhecimento sobre a forma

como o programa está implementado. Este tipo de teste é tipicamente utilizado para

isolar possíveis comportamentos erróneos do sistema, tais como resultados, interfaces e

desempenho. Uma das abordagens usadas no desenvolvimento de testes de caixa negra

é o teste baseado na especificação. Esta abordagem utiliza os requisitos como forma de

testar as funcionalidades, já que a especificação dos requisitos é convertida em casos de

teste, sendo que cada requisito resulta em pelo menos um caso de teste (Andrade, 2015).

3.5 Confirmação de Vulnerabilidades

Depois de terem sido realizados os testes gerais automatizados é preciso realizar novos

testes que permitam filtrar os chamados falsos positivos, os quais são alertas de

existência de vulnerabilidades que realmente não existem. Para solucionar este

problema serão utilizadas ferramentas que sejam especializadas nas diferentes

Page 46: Identificação de vulnerabilidades em aplicações web open ...

44

vulnerabilidades web encontradas (Offensive Security, 2016). Estas ferramentas

permitem testar as vulnerabilidades encontradas de forma a que a existência das mesmas

possa ser efetivamente comprovadas, e despistar os falsos positivos.

Sqlmap

Ferramenta para teste de penetração que automatiza o processo de deteção e exploração

de vulnerabilidades de injeção de SQL. Esta ferramenta possui suporte para as bases de

dados MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM

DB2, SQLite, Firebird, Sybase e SAP MaxDB.

A ferramenta Sqlmap permite avaliar seis técnicas diferentes de injeção SQL:

Boolean-based blind;

Time-based blind;

Error-based;

UNION query;

Stacked queries;

Out-of-band.

XSSer

Esta é uma framework que permite a automatização de processos de deteção, exploração

e publicação de ataques de Cross Site Scripting.

Tipos de injeção que são detetados por esta ferramenta são os seguintes:

XSS clássica;

Cookie Injection;

Cross Site “Agent” Scripting;

Cross Site “Refer” Scripting;

Injeções em “Data Control Protocol” e “Document Objetct Model”;

HTTP Response Splitting Induced.

DotDotPwn

Esta é uma ferramenta que verifica a existência da vulnerabilidade "Path Traversal" e

indica o “payload” que permite a exploração.

Page 47: Identificação de vulnerabilidades em aplicações web open ...

45

Realiza testes de “fuzzing”;

Suporte para serviços FTP, TFTP, HTTP, HTTPS;

Suporte dos seguintes métodos HTTP: GET, POST, HEAD, COPY, MOVE.

Fimap

Esta ferramenta permite explorar e atacar vulnerabilidades de tipo RFI (Remote File

Inclusion) o LIF (Local File Inclusion).

Permite identificar as seguintes vulnerabilidades:

Relative/Absolute Path Handling;

Tenta delimitar automaticamente sufixos com Nullbyte e outros métodos como

Dot-Truncation;

Remotefile Injection;

Logfile Injection.

Commix

Esta ferramenta permite testar aplicações web e procurar vulnerabilidades relacionadas

com ataques de injeção de comandos (forms, cookies, HTTP headers, entre outros).

Doona

É uma variação do BED (Bruteforce Exploit Detector Tool) utilizado para encontrar

vulnerabilidades de buffer overflows e format string bugs, entre outros.

Page 48: Identificação de vulnerabilidades em aplicações web open ...

46

Capitulo 4. Resultados da

Auditoria

Este capítulo representa o culminar do trabalho de investigação realizado ao longo da

tese. Este trabalho envolveu a realização de um conjunto de testes de auditoria,

baseados em testes de intrusão, que verificaram a existência de vulnerabilidades de

segurança em aplicações web open-source. Assim, ao longo do presente capítulo serão

apresentados os resultados dos testes que foram conduzidos às aplicações web

selecionadas. Serão igualmente apresentados os resultados obtidos diretamente através

da utilização de ferramentas automáticas de testes de vulnerabilidades, assim como a

confirmação manual das vulnerabilidades encontradas. Estas vulnerabilidades foram

contextualizadas e classificadas de acordo com o OWASP Top Ten e agrupadas de

acordo com a tipologia da aplicação web testada.

4.1 Sistema de Gestão de Conteúdo – WordPress

Ao longo desta parte vão ser apresentados os resultados dos testes que foram realizados

com a aplicação web WordPress (versão 4.5.3). Os resultados dos testes apresentados

foram divididos de acordo com as ferramentas que foram utilizadas para realizar os

testes.

OWASP Zed Attack Proxy

Page 49: Identificação de vulnerabilidades em aplicações web open ...

47

Esta ferramenta identificou de forma automática as seguintes vulnerabilidades (Tabela

2):

Tipo de Vulnerabilidade Quantidade

SQL Injection 1

X-Frame-Options Header Not Set 40

Directory Browsing 6

Web Browser XSS Protection Not Enabled 42

Password Autocomplete in browser 2

Private IP Disclosure 26

X-Content-Type-Options Header Missing 42

Cookie set without HttpOnly flag 2 Tabela 2. Resultados do teste do OWASP ZAP em WordPress

Subgraph Vega

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 3):

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 1

Possible Social Security Number Detected 1

Page Fingerprint Differential Detected - Possible Local File Include 3

Local Filesystem Paths Found 2

Possible Source Code Disclosure 2

Form Password Field with Autocomplete Enable 1

Directory Listing Detected 34

Email Addresses Found 3 Tabela 3. Resultados do teste do Subgraph Vega em WordPress

Na figura 16 é apresentado um gráfico, onde se indica a precisão das ferramentas na

auditoria da aplicação web.

0

16

0

16

0

2

4

6

8

10

12

14

16

18

Confirmado Falsos Positivos Sem Confirmar Total

Figura 66. Precisão das ferramentas na auditoria da aplicação WordPress

Figura 15. Precisão das ferramentas na auditoria da aplicação WordPress

Page 50: Identificação de vulnerabilidades em aplicações web open ...

48

4.2 Sistema de Gestão de Conteúdo – Joomla

Nesta parte vão ser apresentados os resultados dos testes que foram realizados com o

Joomla (versão 3.6.0). Os resultados dos testes apresentados estão divididos de acordo

com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar as seguintes vulnerabilidades (Tabela 4):

Tipo de Vulnerabilidade Quantidade

Application Error Disclosure 4031

X-Frame-Options Header Not Set 4187

Directory Browsing 596

Buffer Overflow 6

Format String Error 6

Web Browser XSS Protection Not Enabled 4189

Password Autocomplete in browser 11

Private IP Disclosure 4022

X-Content-Type-Options Header Missing 4189 Tabela 4. Resultados do teste do OWASP ZAP em Joomla

Subgraph Vega

Esta ferramenta permitiu identificar as seguintes vulnerabilidades (Tabela 5):

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 5

Possible Social Security Number Detected 1

Possible Social Insurance Number Detected 2193

Possible Credit Card Data Detected 2

Page Fingerprint Differential Detected - Possible Local File Include 10

SQL Injection 1

Page Fingerprint Differential Detected - Possible Xpath Injection 1

Local Filesystem Paths Found 281

Possible Source Code Disclosure 4

Form Password Field with Autocomplete Enable 5

Directory Listing Detected 666

Email Addresses Found 56 Tabela 5. Resultados do teste do Subgraph Vega em Joomla

Page 51: Identificação de vulnerabilidades em aplicações web open ...

49

Seguidamente é apresentado um gráfico, onde se indica a precisão das ferramentas na

auditoria da aplicação web (Figura 17).

4.3 Sistema de Gestão de Conteúdo – Drupal

Nesta parte vão ser apresentados os resultados dos testes que foram levados com o

Drupal (versão 8.1.7). Os resultados dos testes apresentados, estão divididos de acordo

com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 6).

Tipo de Vulnerabilidade Quantidade

X-Frame-Options Header Not Set 21

Web Browser XSS Protection Not Enabled 79

Password Autocomplete in browser 4

Private IP Disclosure 29

X-Content-Type-Options Header Missing 21 Tabela 6. Resultados do test de OWASP ZAP em Drupal

Subgraph Vega

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 7).

0

18

3

21

0

5

10

15

20

25

Confirmado Falsos Positivos Sem Confirmar Total

Figura 17. Precisão das ferramentas na auditoria da aplicação Joomla

Page 52: Identificação de vulnerabilidades em aplicações web open ...

50

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 2

Page Fingerprint Differential Detected - Possible Local File Include 4

Shell Injection 21

SQL Injection 2

Bash "ShellShock" Injection 38

Page Fingerprint Differential Detected - Possible Xpath Injection 1

Local Filesystem Paths Found 1

Form Password Field with Autocomplete Enable 2

Email Addresses Found 2 Tabela 7. Resultados do test de Subgraph Vega em Drupal

Seguidamente é apresentado um gráfico, onde se indica a precisão das ferramentas na

auditoria da aplicação web (Figura 18).

4.4 Planeamento de Recursos Corporativos – webERP

Nesta parte vão ser apresentados os resultados dos testes que foram levados com o

webERP (versão 4.13.0). Os resultados dos testes apresentados, estão divididos de

acordo com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 8).

0

13

1

14

0

2

4

6

8

10

12

14

16

Confirmado Falsos Positivos Sem Confirmar Total

Figura 18. Precisão das ferramentas na auditoria da aplicação Drupal

Page 53: Identificação de vulnerabilidades em aplicações web open ...

51

Tipo de Vulnerabilidade Quantidade

X-Frame-Options Header Not Set 5

Directory Browsing 2

Web Browser XSS Protection Not Enabled 5

Password Autocomplete in browser 2

Private IP Disclosure 2

X-Content-Type-Options Header Missing 5

Cookie set without HttpOnly flag 4 Tabela 8. Resultados do test de OWASP ZAP em webERP

Subgraph Vega

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 9).

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 2

Page Fingerprint Differential Detected - Possible Local File Include 4

Session Cookie Without Secure Flag 1

Session Cookie Without HttpOnly Flag 1

Form Password Field with Autocomplete Enable 2

Directory Listing Detected 20 Tabela 9. Resultados do test de Subgraph Vega em webERP

Na figura 19 é apresentado um gráfico, onde se indica a precisão das ferramentas na

auditoria da aplicação web.

0

13

0

13

0

2

4

6

8

10

12

14

Confirmado Falsos Positivos Sem Confirmar Total

Figura 19. Precisão das ferramentas na auditoria da aplicação webERP

Page 54: Identificação de vulnerabilidades em aplicações web open ...

52

4.5 Planeamento de Recursos Corporativos – inoERP

Nesta parte vão ser apresentados os resultados dos testes que foram levados com o

inoERP (versão 0.4.1). Os resultados dos testes apresentados, estão divididos de acordo

com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar os resultados presentados na tabela 10.

Tipo de Vulnerabilidade Quantidade

SQL Injection 2

Application Error Disclosure 1

X-Frame-Options Header Not Set 85

Buffer Overflow 10

Format String Error 10

Web Browser XSS Protection Not Enabled 85

Password Autocomplete in browser 157

Private IP Disclosure 61

X-Content-Type-Options Header Missing 85

Cookie set without HttpOnly flag 76 Tabela 10. Resultados do test de OWASP ZAP em inoERP

Subgraph Vega

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 11).

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 10

Page Fingerprint Differential Detected - Possible Local File Include 5

SQL Injection 1

Session Cookie Without Secure Flag 1

Session Cookie Without HttpOnly Flag 1

Page Fingerprint Differential Detected - Possible Xpath Injection 1

Possible Source Code Disclosure 1

Form Password Field with Autocomplete Enable 4

Email Addresses Found 4 Tabela 11. Resultados do test de Subgraph Vega em inoERP

Page 55: Identificação de vulnerabilidades em aplicações web open ...

53

Seguidamente serão apresentadas três gráficos, a primeira corresponde com a precisão

das ferramentas na auditoria da aplicação (Figura 20), a segunda corresponde com o

mapeamento das vulnerabilidades no OWASP Top Ten (Figura 21) e a última

corresponde com o nível de risco das vulnerabilidades encontradas (Figura 22).

Figura 21. Vulnerabilidades confirmadas representadas no OWASP Top Ten - inoERP

0 1 2 3

A1: Injection

A2: Broken Authentication and Session Management

A3: Cross-Site Scripting (XSS)

A4: Insecure Direct Object References

A5: Security Misconfiguration

A6: Sensitive Data Exposure

A7: Missing Function Level Access Control

A8: Cross-Site Request Forgery (CSRF)

A9: Using Components with Known Vulnerabilities

A10: Unvalidated Redirects and Forwards

2

14

3

19

0

2

4

6

8

10

12

14

16

18

20

Confirmado Falsos Positivos Sem Confirmar Total

Figura 20. Precisão das ferramentas na auditoria da aplicação inoERP

Page 56: Identificação de vulnerabilidades em aplicações web open ...

54

Figura 22. Nivel de Risco das vulnerabilidades confirmadas encontradas – inoERP.

4.6 Planeamento de Recursos Corporativos – FrontAccounting

Nesta parte vão ser apresentados os resultados dos testes que foram levados com o

FrontAccounting (versão 2.3.25). Os resultados dos testes apresentados, estão divididos

de acordo com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 12).

Tipo de Vulnerabilidade Quantidade

Path Traversal 1

X-Frame-Options Header Not Set 7

Directory Browsing 1

Web Browser XSS Protection Not Enabled 7

Password Autocomplete in browser 2

Private IP Disclosure 2

X-Content-Type-Options Header Missing 7 Tabela 12. Resultados do test de OWASP ZAP em FrontAccounting

Subgraph Vega

Esta ferramenta permitiu identificar os resultados apresentados na tabela 13.

Adicionalmente na figura 23 é apresentado um gráfico, onde se indica a precisão das

ferramentas na auditoria da aplicação web.

1 1

2

0

0,5

1

1,5

2

2,5

Baixa Media Alta Total

Page 57: Identificação de vulnerabilidades em aplicações web open ...

55

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 2

HTTP Authentication over Unencrypted HTTP 1

Form Password Field with Autocomplete Enable 2

Directory Listing Detected 2 Tabela 13. Resultados do test de Subgraph Vega em FrontAccounting

4.7 Gestão de Relacionamento com o Cliente – SugarCRM

Nesta parte vão ser apresentados os resultados dos testes que foram levados com o

SugarCRM (versão 6.5.23). Os resultados dos testes apresentados, estão divididos de

acordo com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar os resultados apresentados na tabela 14

Tipo de Vulnerabilidade Quantidade

SQL Injection 7

X-Frame-Options Header Not Set 21

Directory Browsing 14

Web Browser XSS Protection Not Enabled 21

Password Autocomplete in browser 5

Private IP Disclosure 1

X-Content-Type-Options Header Missing 21

Cookie set without HttpOnly flag 25 Tabela 14. Resultados do test de OWASP ZAP em SugarCRM

0

10

1

11

0

2

4

6

8

10

12

Confirmado Falsos Positivos Sem Confirmar Total

Figura 23. Precisão das ferramentas na auditoria da aplicação FrontAccounting

Page 58: Identificação de vulnerabilidades em aplicações web open ...

56

Subgraph Vega

Esta ferramenta permitiu identificar os resultados apresentados na tabela 15.

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 8

Possible Social Security Number Detected 1

Possible Social Insurance Number Detected 13

Shell Injection 3

SQL Injection 1

Bash "ShellShock" Injection 2

Session Cookie Without Secure Flag 1

Session Cookie Without HttpOnly Flag 1

Stored Cross Site Scripting 2

Local Filesystem Paths Found 7

Possible Source Code Disclosure 11

Form Password Field with Autocomplete Enable 8

Directory Listing Detected 1051

Email Addresses Found 494 Tabela 15. Resultados do test de Subgraph Vega em SugarCRM

Na figura 24 é apresentado um gráfico, onde se indica a precisão das ferramentas na

auditoria da aplicação web.

0

22

0

22

0

5

10

15

20

25

Confirmado Falsos Positivos Sem Confirmar Total

Figura 24. Precisão das ferramentas na auditoria da aplicação SugarCRM

Page 59: Identificação de vulnerabilidades em aplicações web open ...

57

4.8 Gestão de Relacionamento com o Cliente – Zurmo

Nesta parte vão ser apresentados os resultados dos testes que foram levados com o

Zurmo (versão 3.1.5). Os resultados dos testes apresentados, estão divididos de acordo

com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 16).

Tipo de Vulnerabilidade Quantidade

X-Frame-Options Header Not Set 8

Directory Browsing 5

Web Browser XSS Protection Not Enabled 9

Password Autocomplete in browser 2

Private IP Disclosure 2

X-Content-Type-Options Header Missing 9

Cookie set without HttpOnly flag 9 Tabela 16. Resultados do test de OWASP ZAP em Zurmo

Subgraph Vega

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 17).

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 1

Possible Social Security Number Detected 1

Possible Social Insurance Number Detected 3

Session Cookie Without Secure Flag 1

Session Cookie Without HttpOnly Flag 1

Cross-Site Script Include 2

Possible Source Code Disclosure 17

Form Password Field with Autocomplete Enable 1

Directory Listing Detected 121

Email Addresses Found 78 Tabela 17. Resultados do test de Subgraph Vega em Zurmo

Seguidamente é apresentado um gráfico, onde se indica a precisão das ferramentas na

auditoria da aplicação web (Figura 25).

Page 60: Identificação de vulnerabilidades em aplicações web open ...

58

4.9 Gestão de Relacionamento com o Cliente – Vtiger

Nesta parte vão ser apresentados os resultados dos testes que foram levados com o

Vtiger (versão 6.4.0). Os resultados dos testes apresentados, estão divididos de acordo

com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 18).

Tipo de Vulnerabilidade Quantidade

X-Frame-Options Header Not Set 57

Directory Browsing 29

Web Browser XSS Protection Not Enabled 57

Password Autocomplete in browser 4

Private IP Disclosure 2

X-Content-Type-Options Header Missing 57

Cookie set without HttpOnly flag 9 Tabela 18. Resultados do test de OWASP ZAP em Vtiger

Subgraph Vega

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 19).

Adicionalmente é apresentado um gráfico, onde se indica a precisão das ferramentas na

auditoria da aplicação web (Figura 26).

0

17

0

17

0

2

4

6

8

10

12

14

16

18

Confirmado Falsos Positivos Sem Confirmar Total

Figura 25. Precisão das ferramentas na auditoria da aplicação Zurmo

Page 61: Identificação de vulnerabilidades em aplicações web open ...

59

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 1

Session Cookie Without Secure Flag 1

Session Cookie Without HttpOnly Flag 1

Form Password Field with Autocomplete Enable 1 Tabela 19. Resultados do test de Subgraph Vega em Vtiger

4.10 Comércio Eletrónico – Magento

Nesta parte vão ser apresentados os resultados dos testes que foram levados com o

Magento (versão 2.1.0). Os resultados dos testes apresentados, estão divididos de

acordo com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 20).

Tipo de Vulnerabilidade Quantidade

Remote OS Command Injection 1

X-Frame-Options Header Not Set 7

Web Browser XSS Protection Not Enabled 7

Private IP Disclosure 17

X-Content-Type-Options Header Missing 7

0

11

0

11

0

2

4

6

8

10

12

Confirmado Falsos Positivos Sem Confirmar Total

Figura 26. Precisão das ferramentas na auditoria da aplicação Vtiger

Page 62: Identificação de vulnerabilidades em aplicações web open ...

60

Cookie set without HttpOnly flag 22 Tabela 20. Resultados do test de OWASP ZAP em Magento

Subgraph Vega

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 21).

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 2

Shell Injection 61

SQL Injection 23

Bash "ShellShock" Injection 172

Session Cookie Without Secure Flag 2

Cross-Site Script Include 23

Local Filesystem Paths Found 1 Tabela 21. Resultados do test de Subgraph Vega em Magento

Seguidamente é apresentado um gráfico, onde se indica a precisão das ferramentas na

auditoria da aplicação web (Figura 27).

0

13

0

13

0

2

4

6

8

10

12

14

Confirmado Falsos Positivos Sem Confirmar Total

Figura 27. Precisão das ferramentas na auditoria da aplicação Magento

Page 63: Identificação de vulnerabilidades em aplicações web open ...

61

4.11 Comércio Eletrónico – OpenCart

Nesta parte vão ser apresentados os resultados dos testes que foram levados com o

OpenCart (versão 2.2.0). Os resultados dos testes apresentados, estão divididos de

acordo com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 22).

Tipo de Vulnerabilidade Quantidade

Cross Site Scripting (Reflected) 2

Path Traversal 1

Remote File Inclusion 1

External Redirect 1

X-Frame-Options Header Not Set 91

Directory Browsing 15

Parameter Tampering 37

Web Browser XSS Protection Not Enabled 91

Password Autocomplete in browser 12

Private IP Disclosure 76

X-Content-Type-Options Header Missing 91

Cookie set without HttpOnly flag 100

Cross-Domain JScript Source File Inclusion 1 Tabela 22. Resultados do test de OWASP ZAP em OpenCart

Subgraph Vega

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 23).

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 7

Possible Social Security Number Detected 1

Possible Social Insurance Number Detected 1

Page Fingerprint Differential Detected - Possible Local File Include 1

Session Cookie Without Secure Flag 1

Page 64: Identificação de vulnerabilidades em aplicações web open ...

62

Cross-Site Script Include 2

Possible Source Code Disclosure 153

Form Password Field with Autocomplete Enable 7

Directory Listing Detected 102

Email Addresses Found 3 Tabela 23. Resultados do test de Subgraph Vega em OpenCart

Seguidamente é apresentado um gráfico, onde se indica a precisão das ferramentas na

auditoria da aplicação web (Figura 28).

4.12 Comércio Eletrónico – PrestaShop

Nesta parte vão ser apresentados os resultados dos testes que foram levados com o

PrestaShop (versão 1.6.1). Os resultados dos testes apresentados, estão divididos de

acordo com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 24).

Tipo de Vulnerabilidade Quantidade

SQL Injection 18

Path Traversal 10

X-Frame-Options Header Not Set 95

0

22

1

23

0

5

10

15

20

25

Confirmado Falsos Positivos Sem Confirmar Total

Figura 28. Nivel de Risco das vulnerabilidades encontradas – OpenCart

Page 65: Identificação de vulnerabilidades em aplicações web open ...

63

Directory Browsing 3

Buffer Overflow 1

Format String Error 1

Web Browser XSS Protection Not Enabled 95

Password Autocomplete in browser 2

Private IP Disclosure 27

X-Content-Type-Options Header Missing 95

Cross-Domain JScript Source File Inclusion 1 Tabela 24. Resultados do test de OWASP ZAP em PrestaShop

Subgraph Vega

Esta ferramenta permitiu identificar os seguintes resultados (Tabela 25).

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 1

Page Fingerprint Differential Detected - Possible Local File Include 6

Shell Injection 6

SQL Injection 1

Page Fingerprint Differential Detected - Possible Xpath Injection 15

Integer Overflow 1

Possible XML Injection 2

Form Password Field with Autocomplete Enable 1

Directory Listing Detected 7

Email Addresses Found 27 Tabela 25. Resultados do test de Subgraph Vega em PrestaShop

Seguidamente é apresentado um gráfico, onde se indica a precisão das ferramentas na

auditoria da aplicação web (Figura 29).

Page 66: Identificação de vulnerabilidades em aplicações web open ...

64

4.13 Resultados Gerais

Nesta parte vão ser apresentados os resultados gerais dos testes que foram realizados

com as respetivas ferramentas. Os resultados dos testes apresentados, estão divididos de

acordo com as ferramentas que foram utilizadas nos testes.

OWASP Zed Attack Proxy

Esta ferramenta permitiu identificar as seguintes vulnerabilidades (Tabela 26):

Tipo de Vulnerabilidade Quantidade

Cross Site Scripting (Reflected) 2

SQL Injection 28

Path Traversal 12

Remote File Inclusion 1

External Redirect 1

Remote OS Command Injection 1

Application Error Disclosure 4032

X-Frame-Options Header Not Set 4624

Directory Browsing 671

Buffer Overflow 17

Format String Error 17

Parameter Tampering 37

Web Browser XSS Protection Not Enabled 4687

Password Autocomplete in browser 203

0

15

6

21

0

5

10

15

20

25

Confirmado Falsos Positivos Sem Confirmar Total

Figura 27. Nivel de Risco das vulnerabilidades encontradas – PrestaShop

Page 67: Identificação de vulnerabilidades em aplicações web open ...

65

Private IP Disclosure 4267

X-Content-Type-Options Header Missing 4629

Cookie set without HttpOnly flag 247

Cross-Domain JScript Source File Inclusion 2 Tabela 26. Resultados do test de OWASP ZAP em todas as aplicacoes

Subgraph Vega

Esta ferramenta permitiu identificar as vulnerabilidades apresentadas na tabela 27. Na

figura 30 indica a precisão das ferramentas na auditoria das aplicações web.

Tipo de Vulnerabilidade Quantidade

Cleartext Password over HTTP 42

Possible Social Security Number Detected 5

Possible Social Insurance Number Detected 2210

Possible Credit Card Data Detected 2

Page Fingerprint Differential Detected - Possible Local File Include 33

Shell Injection 91

SQL Injection 29

Bash "ShellShock" Injection 212

Session Cookie Without Secure Flag 8

Session Cookie Without HttpOnly Flag 5

Page Fingerprint Differential Detected - Possible Xpath Injection 18

Cross-Site Script Include 27

HTTP Authentication over Unencrypted HTTP 1

Integer Overflow 1

Stored Cross Site Scripting 2

Local Filesystem Paths Found 292

2

87

9

98

0

20

40

60

80

100

120

Confirmado Falsos Positivos Sem Confirmar Total

Figura 30. Nivel de Risco das vulnerabilidades encontradas – Geral

Page 68: Identificação de vulnerabilidades em aplicações web open ...

66

Possible Source Code Disclosure 188

Possible XML Injection 2

Form Password Field with Autocomplete Enable 34

Directory Listing Detected 2003

Email Addresses Found 667 Tabela 27. Resultados do test de Subgraph Vega em todas as aplicações.

4.14 Análise dos Resultados

Neste ponto serão expostas algumas das vulnerabilidades encontradas nas auditorias

realizadas, que se encontram divididas em vulnerabilidades confirmadas,

vulnerabilidades sem confirmação e falsos positivos confirmados.

4.14.1 Vulnerabilidades Confirmadas

Nos testes realizados, foram encontradas duas vulnerabilidades confirmadas na

aplicação web inoERP. Estas vulnerabilidades encontram-se descritas seguidamente

(Tabela 28 e Tabela 29).

SQL Injection

Risco Alto SQL Injection

Descrição Injeção de SQL, manipulação através de condicionais booleanos.

URL http://192.168.179.138/extensions/user/user_login.php

Parâmetro username[]

Ataque ZAP' AND '1'='1

Instâncias 1

Solução A melhor forma para proteger o código contra injeções SQL é

utilizando consultas parametrizadas (prepared statements), existem

muitas bibliotecas que oferecem esta funcionalidade. Sempre que for

possível não criar consultas dinâmicas SQL nem consultas SQL

recorrendo diretamente à entrada de dados do utilizador nem usar

concatenação de cadeias de caracteres.

OWASP ID A1

Page 69: Identificação de vulnerabilidades em aplicações web open ...

67

CWE ID 89

WASC ID 19

Tabela 28. Vulnerabilidade SQL Injection – inoERP

Depois de obter o anterior resultado com a ferramenta OWASP ZAP (Tabela 28), foi

realizada uma nova verificação através da ferramenta especializada em SQL Injection, a

ferramenta Sqlmap, resultando na confirmação da vulnerabilidade. Seguidamente serão

expostas algumas imagens onde podem ver-se as respetivas mensagens de confirmação.

(Figura 31 e Figura 32).

Figura 31. Confirmação da vulnerabilidade na aplicação inoERP – sqlmap.

Figura 32. Confirmação da vulnerabilidade na aplicação inoERP – sqlmap.

Page 70: Identificação de vulnerabilidades em aplicações web open ...

68

Application Error Disclosure

Risco Médio Application Error Disclosure

Descrição Esta página contém uma mensagem de erro que pode transmitir

informação confidencial ao utilizador. Esta informação pode ser

utilizada para realizar ataques à aplicação web.

URL http://192.168.179.138/extensions/comment/post_comment.php

Evidencia HTTP 500 Internal server error

Instancias 1

Solução Rever o código fonte desta página e corrigir o erro. Implementar

páginas de erros predeterminadas que não indiquem nenhum tipo de

dados internos ao utilizador.

OWASP ID A6

CWE ID 200

WASC ID 13

Tabela 29. Vulnerabilidade Application Error Disclosure – inoERP

4.14.2 Falsos Positivos

Seguidamente serão descritos os falsos positivos encontrados através de ferramentas

especializadas o através de verificação manual.

SQL Injection

Foram realizados testes com a ferramenta “Sqlmap” tendo como resultado a verificação

de falsos positivos, com exceção da vulnerabilidade encontrada na aplicação inoERP

explicada no ponto anterior.

Cross Site Scripting

Foram realizados testes com a ferramenta “XSSER” tendo como resultado a verificação

de falsos positivos.

Remote File Inclusion

Foram realizados testes com a ferramenta “Fimap” tendo como resultado a verificação

de falsos positivos.

Page 71: Identificação de vulnerabilidades em aplicações web open ...

69

Remote OS Command Injection

Foram realizados testes com a ferramenta “Commix” tendo como resultado a

verificação de falsos positivos.

Private IP Disclosure

A vulnerabilidade Private IP Disclosure é um falso positivos já que o sistema deteta

endereços IP públicos já que os testes foram realizados numa rede interna.

Possible Social Security Number Detected

Foram realizadas revisões manuais e os dados não correspondem a possíveis números

de segurança social.

Possible Social Insurance Number Detected

Foram realizadas revisões manuais e os dados não correspondem a possíveis números

de seguros.

Possible Credit Card Data Detected

Foram realizadas revisões manuais e os dados não correspondem a possíveis números

de cartões de crédito.

Possible Source Code Disclosure

Foram realizadas revisões manuais e os dados não correspondem a dados sensíveis que

posam comprometer a segurança da aplicação.

Email Addresses Found

Foram realizadas revisões manuais e os dados não correspondem a possíveis endereços

de email.

A seguinte lista de vulnerabilidades são falsos positivos já que as configurações

indicadas devem ser realizadas no servidor e no navegador web e não na própria

aplicação web. É importante que depois de serem ativadas seja avaliado o impacto já

que podem dificultar ou interromper o correto funcionamento da aplicação.

Page 72: Identificação de vulnerabilidades em aplicações web open ...

70

X-Frame-Options Header Not Set

Directory Browsing

Web Browser XSS Protection Not Enabled

Password Autocomplete in browser

X-Content-Type-Options Header Missing

Cookie set without HttpOnly flag

Cleartext Password over http

Session Cookie Without Secure Flag

Local Filesystem Paths Found

HTTP Authentication over Unencrypted http

Page 73: Identificação de vulnerabilidades em aplicações web open ...

71

Capitulo 5. Conclusões

O software open-source apresenta-se cada vez mais como uma alternativa viável para as

organizações, que tiram partido do mesmo, definindo os seus próprios sistemas de

informação e implementando os seus próprios processos de negócio. Um caso muito

particular deste caso de sucesso da utilização do open-source nas organizações são as

aplicações web, que permitem a implementação de aplicações empresariais, como é o

caso de sistemas de gestão e conteúdos (CMS), sistemas de relacionamento com os

clientes (CRM), sistemas de gestão de recursos das organizações (ERP) e até mesmo

comércio eletrónico.

Ao contrário do software comercial, estas aplicações são normalmente desenvolvidas e

mantidas por um conjunto de programadores, que podem ter o suporte de uma empresa,

mas cujo desenvolvimento é bastante distribuído. No caso de software comercial, os

programadores e as empresas que desenvolvem este tipo de software, normalmente,

aderem a boas práticas de qualidade, que levam a que os produtos finais sejam estáveis

e seguros. Este é precisamente a questão central de investigação deste trabalho, isto é,

perceber até que ponto as aplicações web open-source, são ou não seguras para

utilização por parte das organizações.

Assim, e para procurar dar resposta a esta questão, este trabalho recorreu a uma

metodologia baseada em testes de intrusão/penetração realizados num ambiente de caixa

negra, para determinar a existência ou não de vulnerabilidades de segurança num

conjunto de aplicações web open-source, devidamente selecionadas de acordo com a

sua tipologia e com a sua relevância no mercado. Estes testes foram realizados em

laboratório, através da virtualização das diversas aplicações, devidamente isoladas,

recorrendo-se a ferramentas automáticas de deteção de vulnerabilidades de segurança

em aplicações web. Foram analisados os resultados dos cerca de 63 testes realizados, 24

dos quais correspondentes a testes realizados com ferramentas de auditoria automática

geral e 39 correspondentes a testes realizados com ferramentas especializas em certas

vulnerabilidades.

Page 74: Identificação de vulnerabilidades em aplicações web open ...

72

Uma das conclusões mais interessantes deste trabalho é de que a maioria das aplicações

web que foram selecionadas para teste são efetivamente seguras, o que nos permite

responder à nossa questão de investigação de que as aplicações web open-source

apresentam um nível de segurança bastante elevado, como comprovam os resultados de

quase zero porcento de vulnerabilidades detetadas e confirmadas. Importa salientar que

a maioria das aplicações avaliadas contam com o suporte de grandes empresas,

patrocinadores e/ou de uma comunidade de colaboradores muito experientes, que tem

como por exemplo os seguintes clientes: Citibank, CNN, UPS, Time, Harvard

University, Government of Georgia, entre outras.

Uma outra conclusão interessante deste trabalho tem a ver com o facto de que as

ferramentas automáticas de auditoria que foram usadas neste trabalho (open-source)

geram como resultado uma elevada quantidade de falsos positivos. Isto acaba por ser

penoso para o auditor que tem que confirmar manualmente todas as vulnerabilidades

que foram identificadas posteriormente, para verificar se as mesmas se confirmam ou

não.

Uma contribuição interessante do presente trabalho, prende-se com o facto de que foi

possível identificar e corrigir duas vulnerabilidades “zero-day”, uma delas de alto risco

(SQL Injection) no software “inoERP”. Ambas as vulnerabilidade foram devidamente

comunicadas e confirmadas pelo administrador do software e serão corregidas numa

próxima versão da aplicação. No entanto, gostaríamos ainda de realçar, que continua a

existir um problema de comunicação entre a comunidade que efetua auditorias de

segurança e a comunidade de desenvolvimento de aplicações – durante o trabalho

realizado existiu alguma dificuldade em notificar possíveis vulnerabilidades aos

administradores das aplicações web, especificamente nos meios de contacto e nos

tempos de resposta dos mesmos.

Para finalizar esta conclusão, é igualmente importante reconhecer uma limitação

importante do trabalho realizado. O recurso a ferramentas automáticas de auditoria,

apesar de facilitar o trabalho do auditor, para além de gerar um conjunto elevado de

falsos positivos, não elimina por completo o facto da existência ou não de uma

vulnerabilidade. Ou seja, o facto de uma ferramenta automática não detetar nenhuma

vulnerabilidade, não significa diretamente que não exista, de facto, nenhuma

Page 75: Identificação de vulnerabilidades em aplicações web open ...

73

vulnerabilidade – pode apenas significar que a ferramenta em causa não a consegui

detetar. Por isso, e para minimizar este risco, este trabalho recorreu a diversas

ferramentas de auditoria, que foram usadas sequencialmente para testar as aplicações

web, reduzindo por isso mesmo o risco de vulnerabilidades não serem corretamente

identificadas.

5.1 Trabalho Futuro

Este trabalho, apesar de ser muito interessante e os resultados obtidos terem igualmente

sido relevantes, existe sempre a possibilidade de melhoria do mesmo assim como a

realização de trabalhos que se podem basear nos resultados deste.

Assim e como proposta de continuidade deste trabalho, seria interessante efetuar o

mesmo tipo de avaliação que foi realizado neste trabalho, em que o alvo seriam

aplicações web comerciais, num modelo de código fechado. Seria possível efetuar um

estudo comparativo ao nível de segurança e das vulnerabilidades das aplicações web

open-source e comerciais.

Por outro lado, outra proposta interessante de continuidade para o trabalho realizado

seria a adoção de outras técnicas de auditoria mais profunda para realizar estas

auditorias de segurança, como por exemplo, recorrendo à inspeção manual do código

fonte de cada uma delas. Apesar de ser uma técnica bastante mais morosa, os resultados

que poderiam ser produzidos seriam mais interessantes.

Adicionalmente, e visto que o atual trabalho se centrou em exclusivo em aplicações web

open-source desenvolvidas na linguagem de programação PHP, poderia ser interessante

e relevante extender o mesmo modelo de análise a aplicações web que tivessem sido

concebidas recorrendo a outras linguagens de desenvolvimento.