Identificação de vulnerabilidades em aplicações web open ...
Transcript of 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
“El arte de vencer se aprende en las derrotas.”
Simon Bolivar
Prócer Latino-americano (1783-1830)
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.
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.
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
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.
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
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.
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.
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.
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:
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.
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
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.
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.
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)
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:
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.
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.
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
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
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
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
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
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).
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.
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;
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.
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
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
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.
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
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.
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%
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%
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.
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).
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)
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)
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.
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
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
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
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
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
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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).
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
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
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
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
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
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).
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
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
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
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.
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.
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.
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
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.
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
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.