• Nenhum resultado encontrado

Metodologia para aplicação de Testes de Intrusão em Aplicações Web - OWASP

N/A
N/A
Protected

Academic year: 2021

Share "Metodologia para aplicação de Testes de Intrusão em Aplicações Web - OWASP"

Copied!
59
0
0

Texto

(1)

Projeto do LabSEC

Metodologia para aplicac¸ ˜ao de Testes de Intrus ˜ao

em Aplicac¸ ˜

oes Web - OWASP

Armindo Guerra

F ´abio Resner

Lucas Vin´ıcius da Rosa

Classificac¸ ˜ao: externo Data: 7 de maio de 2012

(2)

Hist ´

orico

Data Vers ˜ao Descric¸ ˜ao Autor Revisor Aprovado por

1.0

Versao inicial

Jean

Martina

Jean

Martina

(3)

Sum ´ario

Sum ´ario

Sum ´ario 3

1 Introduc¸ ˜ao 6

1.1 Objetivos . . . 6

2 Testing for credentials transport (OWASP-AT-001) 7 2.1 Objetivos . . . 7

2.2 Pr ´e-requisitos . . . 7

2.3 Metodologia . . . 7

2.3.1 Configurac¸ ˜ao e uso do WebScarab para realizar o teste . . . 7

2.4 Execuc¸ ˜ao . . . 9

3 Testing for user enumeration (OWASP-AT-002) 10 3.1 Objetivos . . . 10

3.2 Pr ´e-requisitos . . . 10

3.3 Metodologia . . . 10

3.4 Execuc¸ ˜ao . . . 10

4 Testing for Brute Force (OWASP-AT-004) 12 4.1 Objetivos . . . 12

4.2 Pr ´e-requisitos . . . 12

4.3 Metodologia . . . 12

4.4 Execuc¸ ˜ao . . . 12

5 Testing for Bypassing Authentication Schema (OWASP-AT-005) 14 5.1 Objetivos . . . 14

5.2 Pr ´e-requisitos . . . 14

5.3 Metodologia . . . 14

5.4 Execuc¸ ˜ao . . . 14

6 Testing for Vulnerable Remember Password and Pwd Reset (OWASP-AT-006) 16 6.1 Objetivos . . . 16

6.2 Pr ´e-requisitos . . . 16

6.3 Metodologia . . . 16

(4)

Sum ´ario

7 Testing for Logout and Browser Cache Management (OWASP-AT-007) 19

7.1 Objetivos . . . 19

7.2 Pr ´e-requisitos . . . 19

7.3 Metodologia . . . 19

7.4 Execuc¸ ˜ao . . . 19

8 Testing for Reflected Cross Site Scripting (OWASP-DV-001) 21 8.1 Objetivos . . . 21

8.2 Pr ´e-requisitos . . . 21

8.3 Metodologia . . . 21

8.4 Execuc¸ ˜ao . . . 22

9 Testing for Stored Cross Site Scripting (OWASP-DV-002) 26 9.1 Pr ´e-requisitos . . . 26

9.2 Metodologia . . . 26

9.3 Execuc¸ ˜ao . . . 27

10 Testing for DOM-based Cross Site Scripting (OWASP-DV-003) 29 10.1 Pr ´e-requisitos . . . 29

10.2 Metodologia . . . 29

10.3 Execuc¸ ˜ao . . . 29

11 Testing for Cross Site Flashing (OWASP-DV-004) 32 11.1 Objetivos . . . 32

11.2 Pr ´e-requisitos . . . 32

11.3 Metodologia . . . 32

11.4 Execuc¸ ˜ao . . . 32

12 Testing for Session Management Schema (OWASP-SM-001) 34 12.1 Objetivos . . . 34

12.2 Pr ´e-requisitos . . . 34

12.3 Metodologia . . . 34

12.4 Execuc¸ ˜ao . . . 35

13 Testing for Cookies Attributes (OWASP-SM-002) 38 13.1 Objetivos . . . 38

13.2 Pr ´e-requisitos . . . 38

13.3 Metodologia . . . 38

13.4 Execuc¸ ˜ao . . . 39

14 Testing for Exposed Session Variables (OWASP-SM-004) 42 14.1 Objetivos . . . 42

14.2 Pr ´e-requisitos . . . 42

14.3 Metodologia . . . 42

14.4 Execuc¸ ˜ao . . . 43

(5)

Sum ´ario

14.4.2 Proxies e func¸ ˜oes de caching . . . 43

14.4.3 M ´etodo HTTP sendo utilizado . . . 43

14.4.4 Procedimentos de transporte . . . 44

15 Testing for Path Traversal (OWASP-AZ-001) 48 15.1 Objetivos . . . 48

15.2 Pr ´e-requisitos . . . 48

15.3 Metodologia . . . 48

15.4 Execuc¸ ˜ao . . . 48

16 Testing for Bypassing Authorization Schema (OWASP-AZ-002) 50 16.1 Objetivos . . . 50

16.2 Pr ´e-requisitos . . . 50

16.3 Metodologia . . . 50

16.4 Execuc¸ ˜ao . . . 50

17 Testing for Privilege escalation (OWASP-AZ-003) 52 17.1 Objetivos . . . 52

17.2 Objetivos . . . 52

17.3 Pr ´e-requisitos . . . 52

17.4 Metodologia . . . 52

17.5 Execuc¸ ˜ao . . . 52

18 Testing for SQL Injection (OWASP-DV-005) 54 18.1 Objetivos . . . 54

18.2 Pr ´e-requisitos . . . 54

18.3 Metodologia . . . 54

18.4 Execuc¸ ˜ao . . . 55

19 Testing for Buffer Overflow (OWASP-DV-014) 58 19.1 Objetivos . . . 58

19.2 Pr ´e-requisitos . . . 58

19.3 Metodologia . . . 58

(6)

Cap´ıtulo 1. Introduc¸ ˜ao

1 Introduc¸ ˜ao

O projeto OWASP (The Open Web Application Security Project), sendo uma organizac¸ ˜ao sem fins lucrativos, atende a responsabilidade de tornar as aplicac¸ ˜oes Web mais seguras. Para isso, oferece, dentre in ´umeros projetos, o OWASP Testing Guide, utilizado como refer ˆencia para composic¸ ˜ao deste documento. O roteiro de testes, assim sendo, compreende um subconjunto de 18 testes do OWASP Testing Guide, classificados nas categorias AT (Authentication Testing), SM (Session Management), AZ (Authorization Testing) e DV (Data Validation). Cada teste possui as-sociado a ele um cap´ıtulo, dividido em Pr ´e-requisitos – artefatos ´uteis, nem sempre obrigat ´orios, para o desenvolvimento do teste –, Metodologia – conceituac¸ ˜ao e explicac¸ ˜ao do procedimento de ataque/teste e Execuc¸ ˜ao, que abrange a aplicac¸ ˜ao pr ´atica das diretrizes expostas pela sec¸ ˜ao de Metodologia.

1.1

Objetivos

Descrever a teoria, pr ´atica e ferramental necess ´arios a realizac¸ ˜ao de uma s ´erie de testes definidos pela metodologia OWASP para seguranc¸a de aplicac¸ ˜oes Web. A exemplificac¸ ˜ao dos testes, quando poss´ıvel, toma por base o sistema e-SAJ, desenvolvido pela empresa Softplan/Poligraph.

(7)

Cap´ıtulo 2. Testing for credentials transport (OWASP-AT-001)

2 Testing for credentials transport

(OWASP-AT-001)

2.1

Objetivos

• Verificar o transporte seguro (cifrado) de credenciais de acesso

– Aplicac¸ ˜ao de protocolo de transporte seguro (SSL/TLS) – Forma de implementac¸ ˜ao da transac¸ ˜ao HTTP/HTTPS

2.2

Pr ´e-requisitos

• Sistema WebScarab

2.3

Metodologia

A abordagem ser ´a utilizar o proxy do sistema WebScarab para interceptar requisic¸ ˜oes e analisar seus respectivos cabec¸alhos. Desta forma podemos confirmar ou n ˜ao a utilizac¸ ˜ao de SSL/TLS nos pacotes de autenticac¸ ˜ao. De acordo com a metodologia OWASP ser ˜ao analisados os seguintes cen ´arios:

• Envio de dados com o m ´etodo POST atrav ´es do protocolo HTTP • Envio de dados com o m ´etodo POST atrav ´es do protocolo HTTPS

• Envio de dados com o m ´etodo POST atrav ´es do protocolo HTTPS em uma p ´agina acess´ıvel via protocolo HTTP

• Envio de dados com o m ´etodo GET atrav ´es do protocolo HTTPS

2.3.1

Configurac¸ ˜ao e uso do WebScarab para realizar o teste

O testador dever ´a, utilizando o proxy do sistema WebScarab, interceptar as requisic¸ ˜oes para ent ˜ao, analisar a tr ˆansito das informac¸ ˜oes. Para isso, antes precisamos instalar e configurar o sistema WebScarab, que ser ´a bastante ´util em boa parte dos testes a serem aplicados. Pode-se proceder da seguinta maneira:

(8)

Cap´ıtulo 2. Testing for credentials transport (OWASP-AT-001)

Figura 2.1: utilizando o WebScarab

2. inicializar o sistema Webscarab, clicar na aba proxy e habilitar a opc¸ ˜ao Intercept requests: como mostra a figura 2.1

3. Analisar as requisic¸ ˜oes interceptadas. Como exemplificado em 2.2

(9)

Cap´ıtulo 2. Testing for credentials transport (OWASP-AT-001)

2.4

Execuc¸ ˜ao

Com o procedimento acima descrito, ´e poss´ıvel analisar as requisic¸ ˜oes de todas as p ´aginas do sistema para verificar as poss´ıveis vulnerabilidades descritas no cen ´ario deste teste 2.3. A an ´alise ´e visual, basta observar na primeira linha do cabec¸alho da requisic¸ ˜ao, logo ap ´os o m ´etodo utilizado (POST ou GET). ´E trivial perceber se foi ou n ˜ao utilizado o protocolo https. No exem-plo utilizado (figura 2.2), constatou-se a n ˜ao utilizac¸ ˜ao do protocolo de seguranc¸a, como con-sequ ˆencia disso, os dados da credencial do usu ´ario transitam na rede em texto plano.

(10)

Cap´ıtulo 3. Testing for user enumeration (OWASP-AT-002)

3 Testing for user enumeration

(OWASP-AT-002)

3.1

Objetivos

• Enumerar os usu ´arios v ´alidos da aplicac¸ ˜ao

• Auditoria do esquema de mensagens de erro e URL

3.2

Pr ´e-requisitos

• Credinciais v ´alidas (usu ´arios e senhas) do sistema a ser testado

3.3

Metodologia

O escopo deste teste ´e verificar a possibilidade de coletar e enumerar usu ´arios v ´alidos, para que, posteriormente por interm ´edio de um ataque de forc¸a bruta, possamos descobrir as respec-tivas senhas, e ent ˜ao ter acesso a funcionalidades restritas dos sitema. Basicamente a metodolo-gia ´e testar combinac¸ ˜oes de credencias v ´alidas e inv ´alidas e analisar a partir das mensagens de erro e URLs se o usu ´ario ´e v ´alido ou n ˜ao.

3.4

Execuc¸ ˜ao

Para executar o teste como recomendado pelo projeto OWASP, o testador dever ´a seguir as seguintes etapas:

1. Realizar o teste somente com o usu ´ario incorreto, sem inserir a senha e registrar os resul-tados

2. Realizar o teste com um usu ´ario incorreto e com uma senha qualquer e registrar os resul-tados

3. Realizar o teste com um usu ´ario v ´alido e com uma senha incorreta e registrar os resultados Ao executar as etapas enumeradas acima, ´e poss´ıvel, atrav ´es das respostas devolvidas pelo sistema testado, chegar em algumas conclus ˜oes quanto a validade ou n ˜ao do usu ´ario testado. Por exmemplo, se testarmos um usu ´ario qualquer e o sistema respoder referindo-se somente ao status do usu ´ario, ´e poss´ıvel saber se o usu ´ario inserido ´e v ´alido ou n ˜ao.

(11)

Cap´ıtulo 3. Testing for user enumeration (OWASP-AT-002)

´

E poss´ıvel tamb ´em analisar as URLs, como por exemplo, se as respostas do servidor forem semelhantes a estas:

http://www.foo.com/err.jsp?User=baduser\&Error=0 http://www.foo.com/err.jsp?User=gooduser\&Error=2

(12)

Cap´ıtulo 4. Testing for Brute Force (OWASP-AT-004)

4 Testing for Brute Force

(OWASP-AT-004)

4.1

Objetivos

• Classificar tipo de mecanismo de autenticac¸ ˜ao

• Realizar teste de exaust ˜ao (ou forc¸a-bruta) por dicion ´ario

4.2

Pr ´e-requisitos

• Uma ferramenta de Brute Force, por exemplo o Hydra ou o FireForce

4.3

Metodologia

A abordagem a ser utilizada neste ataque ´e capturar, com aux´ılio do software WebScarab, as requisic¸ ˜oes no momento da comunicac¸ ˜ao cliente/servidor e identificar o tipo de mecanismo de autenticac¸ ˜ao que est ´a sendo utilizado:

• HTTP Authentication

– Basic Access Authentication – Digest Access Authentication

• HTML Form-based Authentication

Uma vez identificado o mecanismo, o testador dever ´a utilizar uma ferramenta de bruteforce apropriada (ou a mesma ferramenta com os parametros apropriados) para descobrir senhas de acesso ao sistema. A ferramenta utilizada neste caso foi o software hydra. Informac¸ ˜oes sobre instalac¸ ˜ao, configurac¸ ˜ao e uso podem ser encontrado em http://www.thc.org/thc-hydra/.

Outra ferramenta que pode ser utilizado ´e o plugin do Firefox FireForce. A instalac¸ ˜ao ´e simples e ´e realizada como qualquer outro plugin do navegador.

4.4

Execuc¸ ˜ao

No caso do testa aplicado no sistema e-SAJ, para autenticac¸ ˜ao n ˜ao existe nenhum sistema de captcha e as ferramentas conseguem fazer v ´arias requisic¸ ˜oes testando as senhas geradas ou

(13)

Cap´ıtulo 4. Testing for Brute Force (OWASP-AT-004)

senhas de dicion ´arios. A sa´ıda do FireForce ´e o n ´umero de tentativas e o password supostamente correto. Um exemplo de sa´ıda do hydra pode ser observada a seguir:

Hydra (http://www.thc.org/thc-hydra) starting at 2012-01-31 13:19:34 [DATA] 16 tasks, 1 server, 100000000 login tries (l:1/p:100000000),

˜6250000 tries per task

[DATA] attacking service http-post-form on port 80

[80][www-form] host: 172.23.1.55 login: 098.765.432-29 password: 00000013 [80][www-form] host: 172.23.1.55 login: 098.765.432-29 password: 00000009 [80][www-form] host: 172.23.1.55 login: 098.765.432-29 password: 00000011 [80][www-form] host: 172.23.1.55 login: 098.765.432-29 password: 00000012 [80][www-form] host: 172.23.1.55 login: 098.765.432-29 password: 00000015 [80][www-form] host: 172.23.1.55 login: 098.765.432-29 password: 00000007 .

. .

Ap ´os as saidas de dados fornecidas pelo bruteforce ´e necess ´ario testar o casos onde o a ferramenta obteve sucesso, pois existe a possibilidade do resultado fornecido ser falso positivo.

(14)

Cap´ıtulo 5. Testing for Bypassing Authentication Schema (OWASP-AT-005)

5 Testing for Bypassing

Authentication Schema

(OWASP-AT-005)

5.1

Objetivos

• Contornar esquema de autenticac¸ ˜ao

– Direct page request (forced browsing) – Parameter Modification

– Session ID Prediction

– SQL Injection - Realizar testes de SQL Injection nos formul ´arios de autenticac¸ ˜ao

5.2

Pr ´e-requisitos

5.3

Metodologia

Segundo o projeto OWASP existem diversas metodologias que podem ser utilizadas para fazer o bypassing do mecanismo de autenticac¸ ˜ao. Neste caso iremos testar quatro mecanismos:

• Direct page request (forced browsing) • Parameter Modification

• Session ID Prediction

• SQL Injection - Realizar testes de SQL Injection nos formul ´arios de autenticac¸ ˜ao

5.4

Execuc¸ ˜ao

• Direct page request (forced browsing) - O Testador dever ´a tentar acessar uma p ´agina que poderia ser acessada somente ap ´os o processo de login. Para fazer isso pode-se utilizar a ferramenta w3bfkk0r 1, que atrav ´es de um dicion ´ario de palavras tenta acessar

p ´aginas restritas sem autenticar e exibe os resultados ao final.

1Informac¸ ˜oes sobre configurac¸ ˜ao e utilizac¸ ˜ao da ferramenta podem ser encontradas em http://www.ngolde.de/w3bfukk0r.html

(15)

Cap´ıtulo 5. Testing for Bypassing Authentication Schema (OWASP-AT-005)

• Parameter Modification - Se a verificac¸ ˜ao de autenticac¸ ˜ao for realizada em cima de al-guma parametro, o testador deve modificar este parametro para tentar conseguir se aut-enticar. S ˜ao poss´ıveis duas formas, o parametro sendo passado via URL, onde o testador pode modific ´a-lo no pr ´oprio navegador, ou atrav ´es de requisic¸ ˜oes http onde pode ser usado o WebScarab para capturar a comunicac¸ ˜ao e alterar o par ˆametro.

• Session ID Prediction - Em sistemas que se baseiam em SESSION ID para controlar a autenticac¸ ˜ao, o testador dever ´a tentar descobrir um padr ˜ao na formac¸ ˜ao desse SID para conseguir se autenticar. Primeiro ´e preciso ver se o sistema utiliza o SID para autenticac¸ ˜ao e depois tentar descobrir uma forma de descobrir como se esse SID esta sendo gerado. • SQL Injection - Realizar testes de SQL Injection nos formul ´arios de autenticac¸ ˜ao..

Ver 18

Fazendo um teste no sistema e-SAJ utilizando a ferramenta w3bfukk0r, obteve-se a seguinte sa´ıda:

Starting w3bfukk0r 0.2

Scanning http://172.23.1.55/ with 101 words from words.txt Found http://172.23.1.55/cgi-bin/ (not public; HTTP 403) Found 1 directories.

Server runs: Apache/2.2.21 (Win32) mod\_jk/1.2.28 Scan finished (8 seconds).

O que n ˜ao apresenta nenhuma sa´ıda preocupante visto que o ´unico diret ´orio encontrado n ˜ao ´e p ´ublico. Um wget recursivo tamb ´em foi utilizado para verificar se alguma p ´agina que necessitasse de autenticac¸ ˜ao poderia ser acessada, por ´em tamb ´em nada foi encontrado. Foram utilizados tamb ´em testes com o sistema de autenticac¸ ˜ao (tentando substituir dados ou colar um ticket v ´alido ap ´os o logoff de um usu ´ario v ´alido) por ´em o sistema se apresentou est ´avel tamb ´em sob este aspecto.

Testes manuais de modificac¸ ˜ao de param ˆetros e tamb ´em via interceptac¸ ˜ao de cabec¸alhos com o WebScarab foram realizados por ´em nada foi encontrado. Para o session ID prediction foi realizada uma pesquisa na Internet sobre ataques baseados na gerac¸ ˜ao de tickets do CAS2e novamente n ˜ao foi encontrado nenhum problema grave.

2

(16)

Cap´ıtulo 6. Testing for Vulnerable Remember Password and Pwd Reset

(OWASP-AT-006)

6 Testing for Vulnerable Remember

Password and Pwd Reset

(OWASP-AT-006)

6.1

Objetivos

• Testar func¸ ˜ao de lembrete de senha • Explorar funcionalidade de reset de senha

6.2

Pr ´e-requisitos

• Credinciais v ´alidas (usu ´arios e senhas) do sistema a ser testado • Sistema WebScarab

6.3

Metodologia

Este ataque consiste em verificar se a aplicac¸ ˜ao web implementa o mecanismo de lembrar senha para tornar o acesso autom ´atico em visitas futuras e se tem dispon´ıvel um meio de reset de senha para explorar vulnerabilidades. Este teste pressup ˜oe o conhecimento de usernames v ´alidos para experimentar o reset.

O cen ´ario deste teste contextualiza-se no momento em que o usu ´ario tem a necessidade de redefinir sua senha por in ´umeros motivos. Falhas na implementac¸ ˜ao do tr ˆansito das informac¸ ˜oes, na maneira como s ˜ao recuperadas, suas facilidades de manipulac¸ ˜ao, etc, podem ser aproveitadas por poss´ıveis atacantes.

6.4

Execuc¸ ˜ao

O mecanismo de recuperac¸ ˜ao de senhas ´e simples, basta clicar no link “Esqueci minha senha“, como mostra a figura 6.1, inserir o login e ser ´a enviado automaticamente um e-mail para o respectivo usu ´ario. No corpo do e-mail teremos tamb ´em um link que redireciona o usu ´ario para o sistema onde poder ´a criar uma nova senha.

O mecanismo de redefinic¸ ˜ao de senhas do sistema e-SAJ, por sua vez, ´e implementado de maneira que o usu ´ario possa alter ´a-la sem nenhum aux´ılio externo, como o e-mail, por exemplo.

(17)

Cap´ıtulo 6. Testing for Vulnerable Remember Password and Pwd Reset

(OWASP-AT-006)

Figura 6.1: Elemento DOM location.href vulner ´avel a injec¸ ˜ao de c ´odigo

A metodologia utilizada ´e simples, sem outras etapas nem perguntas de confirmac¸ ˜ao. Para alterar a respectiva senha ´e necess ´ario apenas incluir a senha atual e escolher uma nova.

Interessante realizar interceptc¸ ˜oes das requisic¸ ˜oes no decorrer de todo o transporte das informac¸ ˜ao, para isso basta utilizar o sistema WebScarab. Ent ˜ao, ´e necess ´ario realizar uma an ´alise com intuito de identificar se existe alguma informac¸ ˜ao sens´ıvel transitando em texto plano. A execuc¸ ˜ao do teste segue-se de maneira bem manual, ent ˜ao o testador deve realizar a inserc¸ ˜ao e/ou redefinic¸ ˜ao de senhas e interceptando requisic¸ ˜oes com intuito de aproveitar-se de poss´ıveis vulnerabilidades. No caso do e-SAJ, n ˜ao encontramos nenhuma vulnerabilidade cr´ıtica. Por ´em, um fato que deve ser considerado ´e que no momento da redefinic¸ ˜ao das senhas (atual e nova), as mesmas transitam ao servidor em texto plano, como ´e poss´ıvel verificar na requisic¸ ˜ao abaixo, que foi interceptada com aux´ılio do software WebScarab. Isso ocorre porque o protocolo de comunicac¸ ˜ao utilizado ´e HTTP e n ˜ao HTTPS. Como exemplo podemos analisar uma requisic¸ ˜ao interceptada com o WebScarab:

POST http://172.23.1.55:80/esajperfil/efetivarAlteracaoSenhaPeloPerfil.do HTTP/1.1

Host: 172.23.1.55

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101206 Ubuntu/10.10 (maverick) Firefox/3.6.13

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

(18)

Cap´ıtulo 6. Testing for Vulnerable Remember Password and Pwd Reset

(OWASP-AT-006)

Keep-Alive: 115 Proxy-Connection: keep-alive Referer: http://172.23.1.55/esajperfil/alteraSenhaLoginPeloPerfil.do Cookie: JSESSIONID=B5CCA78B97CA9D9B286BAAEC5AA0333F.CEpt Content-Type: application/x-www-form-urlencoded Content-length: 65} senhaAtual=123456789&senhaNova=novaSENHA&senhaConfirmar =novaSENHA

*Obs.: No payload da requisic¸ ˜ao est ˜ao as senhas atual: 123456789 e nova: novaSENHA,

sendo transmitidas em texto plano.

O e-SAJ n ˜ao implementa nenhum mecanisco para lembrar senha de modo que possa ser aproveitada no futuro. Caso o navegar seja fechado, para acessar o sistema ´e necess ´ario logar-se novamente. Portanto ataques desta natureza s ˜ao dificultados.

(19)

Cap´ıtulo 7. Testing for Logout and Browser Cache Management (OWASP-AT-007)

7 Testing for Logout and Browser

Cache Management

(OWASP-AT-007)

7.1

Objetivos

• Acessar informac¸ ˜oes sens´ıveis ap ´os logout • Reproduzir, no sistema, ac¸ ˜ao pr ´evia ap ´os logout • Analisar tempo de expirac¸ ˜ao de sess ˜ao de usu ´ario

7.2

Pr ´e-requisitos

• Sistema WebScarab

7.3

Metodologia

A abordagem deste teste ´e realizar algumas an ´alises, como por exemplo, se a func¸ ˜ao de logout apaga todas as informac¸ ˜oes cr´ıticas ap ´os a sess ˜ao ser encerrada. Tamb ´em pode-se anal-isar se o servidor faz as devidas verificac¸ ˜oes sobre o estado da sess ˜ao, n ˜ao permitindo ao invasor reproduzir alguma ac¸ ˜ao previamente realizada, quando o usu ´ario ainda estava autenticado. Por fim, observa-se se existe algum tempo limite para expirar a sess ˜ao automaticamente. Tempo esse que deve tamb ´em ser verificado se ´e pr ´e-configurado no servidor.

7.4

Execuc¸ ˜ao

Em primeiro lugar, como recomendado pelo projeto OWASP, o testador deve verificar se todas as p ´aginas dos sistema a ser testado possuem a opc¸ ˜ao de logout e se a mesma era encontrado facilmente pelo usu ´ario. Foram feitas estas verificac¸ ˜oes no sistema e-SAJ (com um usu ´ario que possui privil ´egios de advogado) e constatado que todas as p ´aginas possuem a respectiva opc¸ ˜ao. Em todas as p ´aginas pode-se encontrar no canto superior direito a opc¸ ˜ao de logout do sistema, como exemplificado na figura 7.1.

O testador tamb ´em deve analisar o comportamento do sistema ap ´os aplicar a func¸ ˜ao de logout. Para isso, pode-se interceptar as requisic¸ ˜oes e observar atentamente os seus respectivos

(20)

Cap´ıtulo 7. Testing for Logout and Browser Cache Management (OWASP-AT-007)

Figura 7.1: Func¸ ˜ao de logout do sistema e-SAJ

campos, com intuito de entrontrar alguma informac¸ ˜ao relevante. Como, por exemplo, alterar alguns campos como a data, hor ´ario, Cache-Control, Pragma, entre outros, e observar se existe alguma falha na autenticac¸ ˜ao por parte do servidor.

Outra verificac¸ ˜ao recomentada pelo projeto OWASP ´e se existe no sistema testado a fun-cionalidade de Timeout Logout. Caso n ˜ao exista, isso apresenta-se como uma falha de seguranc¸a.

(21)

Cap´ıtulo 8. Testing for Reflected Cross Site Scripting (OWASP-DV-001)

8 Testing for Reflected Cross Site

Scripting (OWASP-DV-001)

8.1

Objetivos

• Enumerar pontos de entrada de dados do usu ´ario n ˜ao filtrados • Executar c ´odigo-cliente malicioso no contexto da enumerac¸ ˜ao

8.2

Pr ´e-requisitos

• Ferrementa de varredura de aplicac¸ ˜ao Web, Spider/Crawler • Ferramenta de proxy (WebScarab, BurpSuite, etc)

• Codificador/decodificador de conjunto de caracteres

8.3

Metodologia

Ataques do tipo Reflected Cross Site Scripting exploram a n ˜ao filtragem, cuja responsabili-dade geralmente reca´ı ao lado servidor da aplicac¸ ˜ao, de entradas fornecidas pelo usu ´ario, con-vencionalmente, a partir de formul ´arios. Um c ´odigo cliente, Javascript, por exemplo, fornecido como valor de alguma vari ´avel contida numa requisic¸ ˜ao HTTP pode ser retornado, pelo servidor de aplicac¸ ˜ao, em uma resposta HTTP de car ´ater malicioso.

O procedimento de verificac¸ ˜ao para esse tipo de XSS consiste em se testar entradas Javascript nos formul ´arios de consulta da aplicac¸ ˜ao, assim como o envenenamento de vari ´aveis na pr ´opria URL associada a uma solicitac¸ ˜ao HTTP - a alterac¸ ˜ao dos par ˆametros de composic¸ ˜ao da requisic¸ ˜ao pode ser realizado, quando assim for necess ´ario, atrav ´es de uma ferramenta de proxy.Caso o c ´odigo seja efetivamente executado pelo navegador, significa que a resposta HTTP retornada pelo servidor refletiu o c ´odigo malicioso. Ou seja, a aplicac¸ ˜ao est ´a vulner ´avel.

A constatac¸ ˜ao da condic¸ ˜ao de XSS n ˜ao-persistente, como tamb ´em ´e conhecido o Reflected XSS, pode ser automatizada por ferramentas. Estas tem como heur´ıstica a an ´alise da resposta HTTP correspondente a requisic¸ ˜ao constitu´ıda por dados n ˜ao confi ´aveis. Analisa-se, portanto, numa abordagem automatizada, o conte ´udo da resposta HTTP, e n ˜ao sua execuc¸ ˜ao propriamente dita.

(22)

Cap´ıtulo 8. Testing for Reflected Cross Site Scripting (OWASP-DV-001)

8.4

Execuc¸ ˜ao

Antes de fornecer entradas Javascript aos formul ´arios de consulta da aplicac¸ ˜ao, faz-se necess ´ario realizar um mapeamento dos eventuais pontos vulner ´aveis. Esse tipo de mapeamento, ou enumerac¸ ˜ao, pode ser realizado manualmente ou, como figura ser o caso de aplicac¸ ˜oes de maior porte, de modo automatizado. A automatizac¸ ˜ao desse processo tem como base ferramentas de crawling, ou spidering. Elas percorrem os links da aplicac¸ ˜ao Web, buscando novas ligac¸ ˜oes que sejam relevantes ao contexto da estrutura que se deseja montar: a hierarquia da aplicac¸ ˜ao.

Logo abaixo, pode-se observar a estrutura hier ´arquica do sistema e-SAJ revelada pela ferra-menta ZAP (Zed Attack Proxy):

Figura 8.1: Crawling utilizando a ferramenta ZAP no sistema e-SAJ

Uma vez tendo sido estipulada a estrutura da aplicac¸ ˜ao, percorrem-se individualmente as p ´aginas enumeradas, selecionando aquelas que possuem formul ´arios ou campos de entrada de dados. Para o ataque de XSS n ˜ao-persistente, a atenc¸ ˜ao do testador deve ser voltada `a reflex ˜ao dos dados de entrada inseridos nestes formul ´arios, estes destacados no processo de enumerac¸ ˜ao anterior. A figura 8.2 ilustra um poss´ıvel vetor para o Reflected XSS.

Durante um teste caixa-preta, como o que aqui se aplica, h ´a duas opc¸ ˜oes de fornecimento de dados de entrada para a aplicac¸ ˜ao. A primeira delas, mais convencional, implica em inserir c ´odigo JavaScript no formul ´ario - ou, caso o met ´odo HTTP utilizado seja GET, atrav ´es da URL -, submet ˆe-lo ao servidor e, ent ˜ao, observar se p ´agina de resposta cont ´em o excerto de c ´odigo antes oferecido. A segunda abordagem, amparada normalmente por uma ferramenta de proxy, baseia-se na intercepc¸ ˜ao da requisic¸ ˜ao HTTP e inserc¸ ˜ao do c ´odigo JavaScript on-the-fly, ou seja, durante a passagem da requisic¸ ˜ao para o servidor. A verificac¸ ˜ao da condic¸ ˜ao de XSS, neste caso, pode ser averiguada pela constatac¸ ˜ao da exist ˆencia do c ´odigo, infiltrado na requisic¸ ˜ao, na resposta HTTP. As figuras de 8.3 `a 8.6 ilustram uma sequ ˆencia de capturas de tela que exibe a segunda abordagem.

(23)

Cap´ıtulo 8. Testing for Reflected Cross Site Scripting (OWASP-DV-001)

Figura 8.2: Exemplo de eventual vetor para ataque de Reflected XSS

(24)

Cap´ıtulo 8. Testing for Reflected Cross Site Scripting (OWASP-DV-001)

Figura 8.4: Captura da requisic¸ ˜ao HTTP atrav ´es do WebScarab - passo 2

Figura 8.5: Confirmac¸ ˜ao, na resposta HTTP, da exist ˆencia do c ´odigo malicioso fornecido pela requisic¸ ˜ao HTTP - passo 3

(25)

Cap´ıtulo 8. Testing for Reflected Cross Site Scripting (OWASP-DV-001)

Figura 8.6: Execuc¸ ˜ao efetiva do c ´odigo JavaScript que alimentou a entrada do formul ´ario - passo 4

(26)

Cap´ıtulo 9. Testing for Stored Cross Site Scripting (OWASP-DV-002)

9 Testing for Stored Cross Site

Scripting (OWASP-DV-002)

• Enumerar pontos de entrada de dados do usu ´ario n ˜ao filtrados

• Armazenar e executar c ´odigo-cliente malicioso no contexto da enumerac¸ ˜ao

9.1

Pr ´e-requisitos

• Ferrementa de varredura de aplicac¸ ˜ao Web, Spider/Crawler • Ferramenta de proxy (WebScarab, BurpSuite, etc)

• Codificador/decodificador de conjunto de caracteres

9.2

Metodologia

Ataques da classe Stored XSS, ou ataques de Cross Site Scripting persistente, s ˜ao caracter-izados pelo armezenamento do c ´odigo malicioso na base de dados da aplicac¸ ˜ao. Assim sendo, o raio de ataque, em relac¸ ˜ao ao Reflected XSS, ´e aumentado. Isso acontece porque as vit´ımas potenciais passam a ser todos os usu ´arios que acessam a p ´agina que faz refer ˆencia ao conte ´udo malicioso. O servidor de aplicac¸ ˜oes, quando da recuperac¸ ˜ao e exibic¸ ˜ao dos dados para o usu ´ario, representa para o navegador uma fonte confi ´avel de dados. Dessa forma, o c ´odigo inescrupuloso trazido da base de dados pelo servidor de aplicac¸ ˜oes ´e efetivamente executado pelo navegador no contexto do usu ´ario.

A detecc¸ ˜ao dessa categoria de vulnerabilidade de injec¸ ˜ao de c ´odigo se d ´a de maneira ligeira-mente similar ao Reflected XSS. Testes caixa-preta envolvendo os par ˆametros utilizados em requisic¸ ˜oes HTTP permitem que seja avaliado, uma vez tendo sido emitida uma requisic¸ ˜ao HTTP com conte ´udo malicioso, o armazenamento conclusivo desse c ´odigo de entrada na base de dados da aplicac¸ ˜ao. A confirmac¸ ˜ao da falha, por sua vez, ocorre pela consulta ao dado suposta-mente armazenado. Se, ao acessar a p ´agina que recupera o c ´odigo malicioso, este for executado pelo navegador, consagra-se o XSS persistente.

Ressalta-se, entretanto, que, diferentemente do ataque de Reflected XSS, este que aqui se descreve concede maior atenc¸ ˜ao aos formul ´arios de entrada de dados que ser ˜ao armazenados na estrutura de persist ˆencia da aplicac¸ ˜ao.

(27)

Cap´ıtulo 9. Testing for Stored Cross Site Scripting (OWASP-DV-002)

9.3

Execuc¸ ˜ao

Conforme mecionado na metodologia do teste de XSS, a averiguac¸ ˜ao de ataques de Cross Site Scripting persistentes compartilha procedimentos da sua contraparte, os XSS persistentes. Assim sendo, a execuc¸ ˜ao do teste obedece a essa semalhanc¸a, resguardando uma diferenc¸a: verificac¸ ˜ao do c ´odigo-cliente previamente armazenado. Para o caso do sistema e-SAJ, a t´ıtulo de exemplo, uma eventual falha de Stored XSS, que no final das contas mostrou-se como sendo Reflected XSS, teria sua condic¸ ˜ao verifica pela consulta de petic¸ ˜oes de primeiro grau. As figuras 9.1 e 9.2 demonstram essa situac¸ ˜ao. Observe que a instruc¸ ˜ao inserida no campo nome ´e tratada, pelo navegador, como um conjunto de caracteres, e n ˜ao como c ´odigo Javascript. Em outras palavras, n ˜ao se confirma, embora o c ´odigo seja corretamente persistido, a condic¸ ˜ao de Stored XSS.

(28)

Cap´ıtulo 9. Testing for Stored Cross Site Scripting (OWASP-DV-002)

(29)

Cap´ıtulo 10. Testing for DOM-based Cross Site Scripting (OWASP-DV-003)

10 Testing for DOM-based Cross

Site Scripting (OWASP-DV-003)

• Enumerar pontos de entrada de dados do usu ´ario n ˜ao filtrados

– An ´alise est ´atica de c ´odigo-cliente

• Executar c ´odigo-cliente malicioso no contexto da enumerac¸ ˜ao

10.1

Pr ´e-requisitos

• DOMinator (ferramenta baseada no Firefox para inspec¸ ˜ao de c ´odigo Javascript) • Codificador/decodificador de conjunto de caracteres

10.2

Metodologia

Vulnerabilidades de Cross Site Scripting s ˜ao comumente classificadas em persistentes e n ˜ao-persistentes. Por ´em, existe uma terceira categoria para essa modalidade de ataque de injec¸ ˜ao: DOM-based XSS. Esse ataque se vale da utilizac¸ ˜ao ing ˆenua de elementos da ´arvores DOM (Document Object Model) para execuc¸ ˜ao de c ´odigo cliente. Por vezes, em aplicac¸ ˜oes Web, nota-se o uso de informac¸ ˜oes fornecidas pelo usu ´ario, de maneira indireta ou direta, na composic¸ ˜ao de express ˜oes presentes no c ´odigo executado pelo navegador.

O processo de investigac¸ ˜ao desta vulnerabilidade toma, tradicionalmente, corpo atrav ´es da an ´alise manual do c ´odigo vulner ´avel, que est ´a geralmente dispon´ıvel ao atacante, uma vez que ´e c ´odigo cliente. Entretanto, ainda que escassas, h ´a algumas ferramentas que amparam esse procedimento de investigac¸ ˜ao. Para o sistema e-SAJ, foi utilizado o DOMinator, dispon´ıvel em [1]. Sendo uma extens ˜ao do navegador Firefox, ele permite que, `a medida que a navegac¸ ˜ao pela aplicac¸ ˜ao ´e realizada, sejam analisados os trechos de c ´odigo potencialmente vulner ´aveis; recon-hecidamente aqueles manipuladores de elementos DOM, como windows.location, location.href, etc.

10.3

Execuc¸ ˜ao

Para a execuc¸ ˜ao deste teste, ser ´a descrito o procedimento que envolve o uso da ferramenta DOMinator. Baseada no Firefox 3.6.13, ele vem embarcado no bin ´ario dispon´ıvel no site do projeto. Como ele atua conjuntamente ao Firebug v1.6.2, pode ser necess ´ario procurar por esta

(30)

Cap´ıtulo 10. Testing for DOM-based Cross Site Scripting (OWASP-DV-003)

vers ˜ao exata deste ´ultimo para que o DOMinator possa operar satisfatoriamente. A figura 10.1 ilustra o DOMinator em ac¸ ˜ao na p ´agina do eSAJ.

Figura 10.1: Firebug em conjunto com o DOMinator

A tarefa do testador, sob posse da ferramenta de apoio para investigac¸ ˜ao do c ´odigo cliente, torna-se percorrer as p ´aginas da aplicac¸ ˜ao, analisando, `a medida que a navegac¸ ˜ao acontece, os avisos emitidos no porc¸ ˜ao inferior da janela do navegador. O DOMinator pode ser acessado na aba mais `a direita do Firebug.

Pretendendo-se demonstrar as condic¸ ˜oes de injec¸ ˜ao de c ´odigo em elementos DOM, a figura 10.3 demonstra a identificac¸ ˜ao da vulnerabilidade pelo DOMinator. Em seguida, ilustrada pela figura 10.4, realiza-se, pelo fornecimento de c ´odigo Javascript ao par ˆametro classificado como n ˜ao filtrado, a confirmac¸ ˜ao da brecha diagnosticada.

A URL contida na barra de enderec¸o do navegador ´e apresentada na figura 10.2.

Figura 10.2: URL com Javascript para explorac¸ ˜ao de DOM-based XSS

A parte inserida pelo testador corresponde a subexpress ˜ao ap ´os a cerquilha (#), que indica ao navegador que o que a sucede n ˜ao deve ser enviado ao servidor de aplicac¸ ˜ao. Dessa forma, tem-se uma evas ˜ao no ataque DOM-based, uma vez que o servidor jamais toma conhecimento do c ´odigo malicioso sendo executado pelo navegador. O mesmo n ˜ao ocorre com outros tipos de XSS, uma vez que o c ´odigo ´e refletido, ou armazenado na base de dados, permitindo, com isso, que o servidor aplique regras de detecc¸ ˜ao de trechos de c ´odigo maliciosos.

A express ˜ao destacada, da cerquilha at ´e o ´ultimo caracter da URL, atinge, em algum mo-mento, uma vari ´avel pertencente `a estrutura DOM da p ´agina. Quando isso acontece, o c ´odigo Javascript ´e efetivamente executado no contexto do usu ´ario.

(31)

Cap´ıtulo 10. Testing for DOM-based Cross Site Scripting (OWASP-DV-003)

Figura 10.3: Elemento DOM location.href vulner ´avel a injec¸ ˜ao de c ´odigo

(32)

Cap´ıtulo 11. Testing for Cross Site Flashing (OWASP-DV-004)

11 Testing for Cross Site Flashing

(OWASP-DV-004)

11.1

Objetivos

• Enumerar pontos de entrada de dados do usu ´ario (FlashVars) n ˜ao filtrados • Executar c ´odigo-cliente malicioso no contexto da enumerac¸ ˜ao

• Decompilar aplicac¸ ˜ao existente em arquivo SWF

• Garimpar informac¸ ˜oes sens´ıveis no c ´odigo decompilado

11.2

Pr ´e-requisitos

• Decompiladores para ActionScript 2.0 e/ou ActionScript 3.0 (SWFScan, etc)

11.3

Metodologia

Sistemas Web, frequentemente, contam com aplicac¸ ˜oes constru´ıdas em ActionScript, lin-guagem pertencente `a plataforma Flash. Identificadas pela extens ˜ao .swf, essas aplicac¸ ˜oes tem seu c ´odigo executado no lado cliente atrav ´es de uma m ´aquina virtual embarcada no pr ´oprio Flash Player. Por conseguinte, a passagem de par ˆametros pelo usu ´ario para o SWF (Sockwave Flash) ocorre ou pela URL ou, ent ˜ao, por tags HTML. Sobre dados oriundos de fontes externas, desse modo, destacam-se, do ponto de vista de seguranc¸a de aplicac¸ ˜oes, dois aspectos: passagem de par ˆametros e usu ´ario.

Vari ´aveis Flash, ou FlashVars, e determinadas func¸ ˜oes cuja operac¸ ˜ao depende de argumen-tos provenientes de entrada do usu ´ario, podem, por viabilidade de caracter´ısticas do ActionScript conjuntamente a uma m ´a codificac¸ ˜ao, permitir a execuc¸ ˜ao de c ´odigo malicioso atrav ´es do SWF.

Verificac¸ ˜oes de condic¸ ˜ao de XSS em aplicac¸ ˜oes Flash ocorrem por testes caixa-preta, avaliando-se a exist ˆencia de filtragem dos valores passados `as FlashVars, ou, alternativamente, por testes caixa-branca, cuja realizac¸ ˜ao procede a partir da decompilac¸ ˜ao do arquivo .swf. Analisa-se tamb ´em a possibilidade de injec¸ ˜ao de HTML em objetos TextField.

11.4

Execuc¸ ˜ao

Como o sistema e-SAJ, aplicac¸ ˜ao Web exemplificadora dos testes relatados neste docu-mento, n ˜ao possui aplicac¸ ˜oes Flash/ActionScript, recomenda-se, para detalhes de execuc¸ ˜ao de

(33)

Cap´ıtulo 11. Testing for Cross Site Flashing (OWASP-DV-004)

(34)

Cap´ıtulo 12. Testing for Session Management Schema (OWASP-SM-001)

12 Testing for Session Management

Schema (OWASP-SM-001)

12.1

Objetivos

• Analisar atributos associados aos cookies

• Investigar mecanismo de gerac¸ ˜ao de informac¸ ˜ao de sess ˜ao • Explorar tempo de expirac¸ ˜ao do cookie

• Classificar tipo de transporte pelos cookies utilizado

12.2

Pr ´e-requisitos

• Ferramenta de proxy (WebScarab, BurpSuite, etc) • Ferrementa de an ´alise de sequ ˆencia de cookies

12.3

Metodologia

O protocolo de comunicac¸ ˜ao HTTP tem, por natureza, a propriedade de n ˜ao estabelecimento de sess ˜ao. Assim sendo, para que tal caracter´ıstica seja alcanc¸ada, criaram-se mecanismos de manutenc¸ ˜ao de estado/sess ˜ao que atuam juntamente ao protocolo. Um desses mecanismos ´e o Cookie, estrutura de dados respons ´avel por conter informac¸ ˜ao de identificac¸ ˜ao de sess ˜ao. Essa mesma informac¸ ˜ao identificadora pode, variadamente, ser transmitida de outras formas - por URL ou por campos ocultos (”Hidden Fields”).

Quanto ao gerenciamento de sess ˜ao, portanto, cabe ao testador averiguar as seguintes dire-tivas:

• Os atributos dos cookies s ˜ao adequadamente estabelecidos?

• ´E poss´ıvel inferir o procedimento de gerac¸ ˜ao dos identificadores de sess ˜ao usando engen-haria reversa?

• Cookies de sess ˜ao apresentam tempo de expirac¸ ˜ao coerente?

• Os cookies s ˜ao transportados por canal de comunicac¸ ˜ao seguro? Se sim, necessaria-mente?

(35)

Cap´ıtulo 12. Testing for Session Management Schema (OWASP-SM-001)

12.4

Execuc¸ ˜ao

Ferramentas de proxy, como o WebScarab, permitem que alguns dos questionamentos enu-merados na sec¸ ˜ao de ‘Metodologia‘ sejam testados. S ˜ao inicialmente coletados cookies em quantidade suficiente para posterior an ´alise. Essa an ´alise envolve, num primeiro momento, a modificac¸ ˜ao dos cookies das requisic¸ ˜oes e exame das respostas respectivamente emitadas pelo servidor; abrange, num segundo instante, observac¸ ˜ao meticulosa quanto ao padr ˜ao de gerac¸ ˜ao dos identificadores de sess ˜ao e, tamb ´em, quanto ao escopo em que os identificadores s ˜ao uti-lizados pela aplicac¸ ˜ao.

Figura 12.1: Cookies do sistema e-SAJ capturados pelo WebScarab

Respectivamente aos cookies ilustrados em 12.1, obteve-se, novamente pelo WebScarab, um gr ´afico que exibe a dispers ˜ao dos valores de cookies gerados pelo sistema e-SAJ; o mesmo pode ser visualizado em 12.2.

Figura 12.2: Distribuic¸ ˜ao dos valores de cookie num curto intervalo de tempo ´

E poss´ıvel notar que, mesmo num curto intervalo de tempo, a gerac¸ ˜ao dos valores de cookies reflete significativa variabilidade. Isso constitui um ind´ıcio de utilizac¸ ˜ao de algoritmos robustos, talvez criptogr ´aficos, na composic¸ ˜ao dos valores. Uma an ´alise de previsibilidade mais apurada

(36)

Cap´ıtulo 12. Testing for Session Management Schema (OWASP-SM-001)

exigiria averiguar o c ´odifo-fonte do CAS (Central Authentication Service), servic¸o utilizado pelo e-SAJ para o gerenciamento de sess ˜ao de usu ´arios.

A seguir, dentre as atividades performadas pelo testador, destaca-se a reproduc¸ ˜ao de uma s ´erie de requisic¸ ˜oes leg´ıtimas no contexto de outro usu ´ario. Esse teste tem por objetivo a tentativa de realizar operac¸ ˜oes como se fosse a v´ıtima, para isso aproveitando-se dos cookies da mesma. Cabe, neste ponto, uma ressalva: o tempo de expirac¸ ˜ao do cookie deve ser respeitado. Em outras palavras, a tentativa de sequestro deve ocorrer dentro da janela de expirac¸ ˜ao. Para ilustrar o que acaba de ser enunciado, recorra `a sequencia de figuras de 12.3 `a 12.7. Ela reflete o comportamento do sistema e-SAJ quando dessa tentativa.

Figura 12.3: Requisic¸ ˜ao HTTP contendo cookie v ´alido para usu ´ario Advogado

Figura 12.4: Requisic¸ ˜ao HTTP contendo cookie v ´alido para usu ´ario Promotor

Figura 12.5: Adulterac¸ ˜ao, durante requisic¸ ˜ao emitada pelo Promotor, do campo Cookie, atribuindo a ele o cookie do Advogado

(37)

Cap´ıtulo 12. Testing for Session Management Schema (OWASP-SM-001)

Figura 12.6: Resposta HTTP do servidor, definido um novo valor de cookie para a sess ˜ao

(38)

Cap´ıtulo 13. Testing for Cookies Attributes (OWASP-SM-002)

13 Testing for Cookies Attributes

(OWASP-SM-002)

13.1

Objetivos

• Analisar atributos associados aos cookies

13.2

Pr ´e-requisitos

• Ferramenta de proxy (WebScarab, BurpSuite, etc)

13.3

Metodologia

Cookies s ˜ao estruturas concebidamente utilizadas para a manutenc¸ ˜ao de estado do usu ´ario em aplicac¸ ˜oes Web din ˆamicas. Os crit ´erios pelos quais s ˜ao gerados e, adicionalmente, manipu-lados pela aplicac¸ ˜ao s ˜ao definidos com base em atributos; acerca destes, alguns relacionam-se com aspectos de seguranc¸a que devem ser resguardados mediante o trato dessas estruturas, os cookies.

S ˜ao listados os seguintes atributos necess ´arios ao preenchimento de uma condic¸ ˜ao segura de gerenciamento de sess ˜ao do usu ´ario:

• Secure: quando ativado, garante que o cookie ser ´a estritamente transportado por canal de comunicac¸ ˜ao seguro (tipicamente SSL/TLS);

• HttpOnly : se assinalado, impede que c ´odigo cliente acesse o cookie. Recomenda-se que seja sempre utilizado, ainda que, atualmente, nem todos os navegadores o suporte; • Domain: restringe o dom´ınio, e sub-dom´ınios, autorizados a manipular o cookie;

• Path: normalmente utilizado conjuntamente ao atributo domain, este atributo designa o caminho de URL para o qual o cookie ´e v ´alido;

• Expires: define tempo de expirac¸ ˜ao para cookies persistentes. Caso a ele n ˜ao seja definido valor algum, o cookie passa a expirar diante do t ´ermino da sess ˜ao de navegac¸ ˜ao.

O teste de atributos de cookie, por conseguinte, d ´a-se a partir da an ´alise de respostas HTTP com o cabec¸alho Set-Cookie presente. Para essas respostas, verifica-se se h ´a, nelas, a presenc¸ ˜ao ou n ˜ao dos atributos logo acima descritos. Para os casos em que se mostram pre-sentes, os atributos t ˆem, do ponto de vista de seguranc¸a, sua composic¸ ˜ao de valores avaliada; quando da aus ˆencia daqueles, o testador infere os impactos dessa car ˆencia.

(39)

Cap´ıtulo 13. Testing for Cookies Attributes (OWASP-SM-002)

13.4

Execuc¸ ˜ao

Cookies, numa mesma aplicac¸ ˜ao, podem ser sintetizados de acordo com procedimentos dis-tintos. Para o sistema e-SAJ, no contexto da autenticac¸ ˜ao, obtiveram-se, atrav ´es da ferramenta de proxy WebScarab, respostas HTTP emitidas pela aplicac¸ ˜ao - pelo servidor CAS, neste caso. As respostas podem ser observadas nas figuras 13.1 e 13.2.

Figura 13.1: Resposta HTTP associada `a operac¸ ˜ao de login no sistema e-SAJ

Para as duas repostas HTTP expostas em 13.1 e 13.2, pode-se notar a presenc¸a dos atrib-utos Expires e Path. A data de expirac¸ ˜ao do cookie foi estabelecida para dez segundos do dia primeiro de Janeiro de 1970. Essa data, 01/01/1970, refere-se ao unix time[1], ou posix time. Atentemo-nos ao per´ıodo de validade do cookie. No no ato de logout, o CAS invalida o cookie atr ´aves do atributo Expires, como pode ser visualizado em 13.2.

O atributo Path, por sua vez, n ˜ao foi corretamente definido. Embora aparentemente o cookie seja v ´alido somente ao caminho “/sajcas“, a n ˜ao adic¸ ˜ao de um “/” no final da express ˜ao permite que o navegador envie o cookie para qualquer caminho cujo prefixo seja “/sajcas”, como, a t´ıtulo de exemplo, “/sajcas/atacante“.

Adicionemos agora `a analise uma terceira resposta HTTP, esta relacionada a um operac¸ ˜ao ordin ´aria realizada no sistema e-SAJ. Observe a figura 13.3. O atributo Path foi novamente mal formado.

Quanto aos demais atributos relevantes ao testes, destaca-se que n ˜ao foram encontrados Secure, HttpOnly e Domain. A n ˜ao utilizac¸ ˜ao de Secure permite que o cookie seja transmitido em conex ˜oes n ˜ao seguras. Caso o cookie carregue consigo informac¸ ˜oes sens´ıveis em claro, ou mesmo em um padr ˜ao sobre o qual a infer ˆencia ´e vi ´avel, h ´a a possibilidade de comprometimento da sess ˜ao do usu ´ario. J ´a a aus ˆencia de HttpOnly torna poss´ıvel ao atacante acessar os cookies

(40)

Cap´ıtulo 13. Testing for Cookies Attributes (OWASP-SM-002)

Figura 13.2: Resposta HTTP relacionada `a operac¸ ˜ao de logout no sistema e-SAJ

Figura 13.3: Resposta HTTP emitada a partir de uma operac¸ ˜ao de cunho geral no sistema e-SAJ atr ´aves de c ´odigo cliente, como Javascript. Finalmente, a car ˆencia do atributo Domain permite que outros dom´ınios (potencialmente vulner ´aveis), os quais possuem o caminho “/esaj“ em sua

(41)

Cap´ıtulo 13. Testing for Cookies Attributes (OWASP-SM-002)

(42)

Cap´ıtulo 14. Testing for Exposed Session Variables (OWASP-SM-004)

14 Testing for Exposed Session

Variables (OWASP-SM-004)

14.1

Objetivos

• Analisar atributos associados aos tokens de sess ˜ao

• Investigar mecanismo de gerac¸ ˜ao de informac¸ ˜ao de sess ˜ao • Inverter m ´etodo HTTP utilizado em requisic¸ ˜oes

• Classificar tipo de transporte pelos cookies utilizado

14.2

Pr ´e-requisitos

• Ferramenta de proxy (WebScarab, BurpSuite, etc)

14.3

Metodologia

Antes de descrever a metodologia deste teste como um todo, atentemo-nos ao fato de que a avaliac¸ ˜ao de vari ´aveis de sess ˜ao expostas apresenta, em determinados pontos, sobreposic¸ ˜ao com outros testes da fam´ılia SM (Session Management) do projeto OWASP. Por exemplo, aspec-tos de gerenciamento de ciclo de vida de cookies e a maneira como s ˜ao transportados.

Prosseguindo, enumeram-se os seguintes itens a serem contemplados pelo presente teste, no que se refere a eventual vulnerabilidade:

• Cifragem e reuso de tokens de sess ˜ao • Proxies e func¸ ˜oes de caching

• M ´etodo HTTP sendo utilizado (com maior atenc¸ ˜ao ao GET e ao POST) • Procedimentos de transporte

Para cada item supracitado, h ´a sa´ıdas, recomendadas pelas OWASP, esperadas de acordo com alterac¸ ˜oes de dados de entrada ou a forma como os dados s ˜ao fornecidos pelo cliente. A sec¸ ˜ao de execuc¸ ˜ao, logo a seguir, adentra em maiores detalhes sobre o que seriam essas alterac¸ ˜oes ou o formato de fornecimento de dados.

(43)

Cap´ıtulo 14. Testing for Exposed Session Variables (OWASP-SM-004)

14.4

Execuc¸ ˜ao

14.4.1

Cifragem e reuso de tokens de sess ˜ao

Tokens de sess ˜ao – sejam eles representados por cookies, campos ocultos (hidden fiels), etc – devem, ideal e necessariamente, ser cifrados com base em algoritmos seguros de criptografia. Al ´em disso, o algoritmo ou procedimento de cifragem utilizado deve apresentar consider ´avel variabilidade entres os valores de um token e outro, ainda que a informac¸ ˜ao se refira a um mesmo usu ´ario (autenticando-se em diferentes sess ˜oes, por exemplo).

Independente da maneira como o pr ´oprio token de sess ˜ao ´e tornado seguro, deve-se, tamb ´em, ser levado em considerac¸ ˜ao a exposic¸ ˜ao do material cifrado. Essa exposic¸ ˜ao pode, sob certas circunst ˆancias, permitir que um atacante utilize um token capturado num ataque de sequestro de sess ˜ao. Em decorr ˆencia disso, destaca-se a necessidade de n ˜ao permitir a reutilizac¸ ˜ao de tokens, assim como a emiss ˜ao do token de sess ˜ao sempre atrav ´es de canal de comunicac¸ ˜ao cifrado.

No caso do sistema e-SAJ, o transporte do token ocorre sempre em texto plano, ou seja, sem HTTPS. Em situac¸ ˜ao inversa, ou seja, num cen ´ario em que o e-SAJ, por padr ˜ao, exigisse comunicac¸ ˜ao com seus elementos de aplicac¸ ˜ao usando t ´unel seguro, ainda assim deveria ser testada a condic¸ ˜ao de troca do enderec¸o de HTTPS para HTTP; isso seria feito na pr ´opria barra de enderec¸os do navegador. Averigua-se, por conseguinte, a possibilidade de forc¸ar o tr ´afego dos tokens de sess ˜ao sem ser por via segura.

Refira-se ao cap´ıtulo ‘Testing for Cookie attributes‘ para uma an ´alise adicional acerca da variabilidade de valores de cookies oferecida pelo e-SAJ e da tentativa de reutilizar um token de sess ˜ao.

14.4.2

Proxies e func¸ ˜

oes de caching

Tendo em vista que servic¸os de proxy e caching de dados podem armazenar, segundo crit ´erios pr ´oprios de gerenciamento de dados, tokens de sess ˜ao, a vers ˜ao 1.1 do protocolo HTTP fornece diretivas de controle acerca destes tokens, como, por exemplo, “Expires: 0” e “Cache-Control: max-age=0”. Essas duas diretivas exemplificadas s ˜ao utilizadas para que servic¸os de cache n ˜ao exponham os dados. Com isso, cabe ao testador examinar cada requisac¸ ˜ao/resposta HTTP para garantir que essas diretivas est ˜ao sendo aplicadas.

No contexto do sistema e-SAJ, foram observados cabec¸alhos de requisic¸ ˜ao e resposta HTTP. Conforme ilustra a figura 14.1, as diretivas “Cache-Control: max-age=0” e “Expires: 0” est ˜ao definidas no transporte dos JSESSIONID’s; a administrac¸ ˜ao dessas diretivas est ´a sendo feita pelo CAS.

14.4.3

M ´etodo HTTP sendo utilizado

Primeiramente, o m ´etodo HTTP GET n ˜ao deve ser utilizado quando envolvidas informac¸ ˜oes sens´ıveis. Em segundo lugar, muitas vezes, ´e poss´ıvel alterar o tipo de m ´etodo utilizado, de POST para GET, permitindo que uma determinada falha, XSS – por exemplo –, seja mais facil-mente explorada por um atacante; condic¸ ˜oes de Cross Site Scripting s ˜ao mais confortavelfacil-mente

(44)

Cap´ıtulo 14. Testing for Exposed Session Variables (OWASP-SM-004)

Figura 14.1: Uso de diretivas para manuseio seguro de tokens de sess ˜ao exploradas a partir de c ´odigo malicioso embutido em URL.

A ferramenta WebScarab oferece a opc¸ ˜ao de intercambiar entres os m ´etodos HTTP utiliza-dos nas requisic¸ ˜oes/respostas por ele capturadas. Assim sendo, o testador possui a respon-sabilidade de testar a invers ˜ao de m ´etodos em tantas requisic¸ ˜oes/repostas quanto poss´ıvel – dependendo da complexidade, ou porte, da aplicac¸ ˜ao Web sendo testada, pode ser necess ´aria uma automatizac¸ ˜ao desta tarefa, utilizando-se, a saber, um Fuzzer.

A s ´erie de figuras de 14.2 `a 14.5 ilustra uma alterac¸ ˜ao de m ´etodo HTTP na opc¸ ˜ao de cadastro do e-SAJ. Observe que modificac¸ ˜ao se mostra vi ´avel, demonstrando a fragilidade do e-SAJ neste quesito.

14.4.4

Procedimentos de transporte

Esta subsec¸ ˜ao objetiva responder `as seguintes perguntas, algumas delas com escopo j ´a definido em t ´opicos anteriores, sob a perspectiva particular do sistema e-SAJ:

• Como s ˜ao tranferidos os Session IDs?

N ˜ao ´e poss´ıvel transferir os session ID’s atrav ´es de GET, de forma que eles n ˜ao ficam expostos em logs de firewalls ou proxys.

• Os Session IDs s ˜ao sempre, por padr ˜ao, enviados atrav ´es de transporte cifrado?

Codificados pelo CAS. Foram feitos testes de manipulac¸ ˜ao de cookies para logar em uma sess ˜ao ativa com os valores capturados dos JSESSIONID’s e n ˜ao foi obtido sucesso. • ´E poss´ıvel persuadir a aplicac¸ ˜ao a enviar Session IDs por canal inseguro?

(45)

Cap´ıtulo 14. Testing for Exposed Session Variables (OWASP-SM-004)

Figura 14.2: Tela inicial de cadastro de novo usu ´ario do e-SAJ

Figura 14.3: Requisic¸ ˜ao HTTP POST original emitida pela aplicac¸ ˜ao S ´o ´e poss´ıvel visualizar os valores codificados pelo CAS.

(46)

Cap´ıtulo 14. Testing for Exposed Session Variables (OWASP-SM-004)

Figura 14.4: Transformac¸ ˜ao de m ´etodo POST para GET

Figura 14.5: Alterac¸ ˜ao efetuada com sucesso, confirmada pela tela seguinte de cadastro os Session IDs?

(47)

Cap´ıtulo 14. Testing for Exposed Session Variables (OWASP-SM-004)

• Essas diretivas est ˜ao sempre presentes? Se n ˜ao, quais s ˜ao as excec¸ ˜oes? Cache-Control: max-age=0 sempre presente.

• Os Session IDs s ˜ao incorporados por requisic¸ ˜oes GET?

N ˜ao ´e poss´ıvel fazer a autenticac¸ ˜ao atrav ´es de m ´etodos GET. • O m ´etodo POST, quando utilizado, pode ser substitu´ıdo pelo GET?

(48)

Cap´ıtulo 15. Testing for Path Traversal (OWASP-AZ-001)

15 Testing for Path Traversal

(OWASP-AZ-001)

15.1

Objetivos

• Contornar permiss ˜oes de acesso a arquivo e diret ´orios

15.2

Pr ´e-requisitos

• Ferrementa de varredura de aplicac¸ ˜ao Web, Spider/Crawler • Ferramenta de proxy (WebScarab, BurpSuite, etc)

• UniScan (testes de falha de atravessamento de diret ´orios)

15.3

Metodologia

Tradicionalmente, servidores e aplicac¸ ˜oes web implementam mecanismos de autenticac¸ ˜ao para controlar o acesso a arquivos e recursos. Servidores Web tentam limitar os arquivos dos usu ´arios dentro de um ”diret ´orio raiz”ou ”raiz do documento web”, que representam um diret ´orio f´ısico no sistema de arquivos. Os usu ´arios t ˆem que considerar esse diret ´orio como o diret ´orio base para a estrutura hier ´arquica da aplicac¸ ˜ao web. A definic¸ ˜ao dos privil ´egios ´e feita atrav ´es de Access Control Lists (ACL), que identifica quais usu ´arios ou grupos ser ˜ao capazes de acessar, modificar ou executar um arquivo espec´ıfico no servidor. Estes mecanismos s ˜ao projetados para impedir o acesso a arquivos confidenciais por parte de usu ´arios mal-intencionados (por exemplo, o arquivo comum /etc/passwd em uma plataforma Unix), ou para evitar a execuc¸ ˜ao de comandos do sistema.

Com base nessas informac¸ ˜oes, a metodologia do ataque basicamente ´e enumerar/mapear todos os enderec¸os que o usu ´ario ´e capaz de acessar, para ent ˜ao inserir caracteres especiais com intuito de aproveitar-se de vulnerabilidades na validac¸ ˜ao server-side e ter acesso a arquivos proibidos para esse respectivo usu ´ario.

15.4

Execuc¸ ˜ao

O atravessamento de diret ´orios, ou Path Traversal, envolve essencialmente duas etapas. A primeira delas ´e a enumerac¸ ˜ao dos vetores de validac¸ ˜ao de entrada. S ˜ao vetores dessa categoria aqueles que permitem o envio de arquivos pelo usu ´ario, formul ´arios HTML, consultas HTTP GET

(49)

Cap´ıtulo 15. Testing for Path Traversal (OWASP-AZ-001)

e POST, etc. Especificamente para o sistema e-SAJ, um eventual vetor de validac¸ ˜ao de entrada seria a sec¸ ˜ao Push, que possibilita o envio de processos por um advogado.

A segunda etapa do teste se refere a tentativa de acesssar arquivos, e diret ´orios, partindo-se dos vetores elencados na primeira fase de teste. Esse processo de verificac¸ ˜ao realiza-se de forma manual – tarefa dispendiosa quando de uma aplicac¸ ˜ao web complexa ou de grande porte – ou, alternativamente, de modo autom ´atico – atrav ´es de ferramentas como o Uniscan, que anal-isam diferentes possibilidades de acesso a arquivos e diretorios, empregando, tamb ´em, variados modos de codificac¸ ˜ao que, em determinados casos, viabilizam contornar filtros existentes no lado servidor.

Um poss´ıvel vetor para o atravessamento, no contexto do sistema e-SAJ, seria a sec¸ ˜ao de Push. No entanto, a inclus ˜ao de um processo no sistema ´e intermediada por uma busca. Essa busca interp ˜oe-se entre a selec¸ ˜ao do processo e a inclus ˜ao do mesmo no e-SAJ. Dessa forma, um atacante ´e incapaz, nesta sec¸ ˜ao, de testar URLs ou caminhos relativos, verificac¸ ˜ao necess ´aria ao teste aqui discutido.

Ressalta-se, contudo, em relac¸ ˜ao a constatac¸ ˜ao manual desta catagoria de vulnerabilidade, a necessidade de se levar em considerac¸ ˜ao a maneira como ocorre o percorrimento de di-ret ´orios e arquivos, que est ´a associada intrinsicamente ao Sistema Operacional que executa a aplicac¸ ˜ao Web. N ˜ao confundir ’/’, caracter tipicamente utilizado em sistemas Linux, com ‘\\‘ ou ‘Letra:\caminho\para\arquivo‘, caracteres usualmente vistos em sistemas Windows.

Com vistas `a exemplificar a modalidade autom ´atica de teste, em 15.1 observa-se o Unis-can em ac¸ ˜ao. O UnisUnis-can n ˜ao somente realiza testes acerca do ataque de atravessamento de diret ´orios, todavia tamb ´em ataques referentes `a inclus ˜ao de arquivos (LFI), dentre outros.

(50)

Cap´ıtulo 16. Testing for Bypassing Authorization Schema (OWASP-AZ-002)

16 Testing for Bypassing

Authorization Schema

(OWASP-AZ-002)

16.1

Objetivos

• Sobrepujar o esquema de autorizac¸ ˜ao, tentando-se acessar ar ´eas restritas ou de maior privil ´egio

16.2

Pr ´e-requisitos

• Ferramenta de proxy (WebScarab, BurpSuite, etc)

16.3

Metodologia

Este tipo de ataque concentra-se em verificar como o esquema de autorizac¸ ˜ao foi implemen-tado para cada func¸ ˜ao, os privil ´egios para se ter acesso a func¸ ˜oes reservadas e recursos para os quais determinadas credenciais n ˜ao possuem a autorizac¸ ˜ao necess ´aria.

16.4

Execuc¸ ˜ao

Para este teste ´e necess ´ario responder basicamente cinco perguntas (aqui respondidas de acordo com o sistema e-SAJ):

• ´E poss´ıvel acessar determinados recuros do sistema sem estar autenticado? N ˜ao. Foram realizados v ´arios testes nesse ataque e no ataque OWASP-AT-007. • ´E poss´ıvel acessar alguns recursos ap ´os o log-out?

N ˜ao. Foram realizados v ´arios testes nesse ataque e no ataque OWASP-AT-007. • ´E poss´ıvel acessar func¸ ˜oes e recursos autorizados apenas para alguns determinados

pa-peis?

N ˜ao. Foram realizados in ´umeros testes manuais. Foram testados, inclusive, a edic¸ ˜ao de requisic¸ ˜oes interceptadas com aux´ılio da ferramenta WebScarab. Todas as tentativas foram sem sucesso.

(51)

Cap´ıtulo 16. Testing for Bypassing Authorization Schema (OWASP-AZ-002)

• ´E poss´ıvel acessar as func¸ ˜oes administrativas tamb ´em se o testador ´e registrado como um usu ´ario com privil ´egios padr ˜ao?

N ˜ao. Pelos mesmos motivos supracitados.

• ´E poss´ıvel usar estas funcionalidades para um usu ´ario com um papel diferente e para quem a ac¸ ˜ao deve ser negada?

(52)

Cap´ıtulo 17. Testing for Privilege escalation (OWASP-AZ-003)

17 Testing for Privilege escalation

(OWASP-AZ-003)

17.1

Objetivos

• Sobrepujar o esquema de autorizac¸ ˜ao, tentando-se acessar ar ´eas restritas ou de maior privil ´egio

17.2

Objetivos

• Contornar permiss ˜oes de acesso a arquivo e diret ´orios

17.3

Pr ´e-requisitos

• Ferramenta de proxy (WebScarab, BurpSuite, etc)

17.4

Metodologia

Ataques desta natureza ocorrem quando um usu ´ario tem acesso a mais recursos ou fun-cionalidades que s ˜ao normalmente permitidos. Isso geralmente ´e causado por uma falha na aplicac¸ ˜ao. O resultado ´e que o usu ´ario pode executar ac¸ ˜oes com mais privil ´egios do que as que realmente poderiam ser acessadas por ele.

Portanto, a metodologia deste ataque ´e estudar como funciona o esquema de autorizac¸ ˜ao implementado nesse sistema e aproveitar-se de tal para conseguir acessar recursos n ˜ao permi-dos.

17.5

Execuc¸ ˜ao

A execuc¸ ˜ao deste teste depende das caracter´ısticas do esquema de autorizac¸ ˜ao da aplicac¸ ˜ao Web sendo testada. Para efeito do sistema e-SAJ, aplicou-se a metodologia, acima descrita, da seguinte maneira:

• Inicialmente, buscou-se mapear como comportam-se as requisic¸ ˜oes, interceptadas por in-term ´edio do software WebScarab, quando usu ´arios autorizados e n ˜ao autorizados tentam acessar determinadas funcionalidades. Concentrou-se na funcionalidade de “Push”, pois somente o usu ´ario advogado tem acesso a ela.

(53)

Cap´ıtulo 17. Testing for Privilege escalation (OWASP-AZ-003)

• Depois, foram verificadas as requisic¸ ˜oes interceptadas quando o usu ´ario autenticado era um advogado. Posteriormente, procedeu-se o mesmo quando o usu ´ario era um promotor. • Como n ˜ao foi poss´ıvel edit ´a-las para acessar a func¸ ˜ao “Push” com um usu ´ario de promotor,

a pr ´oxima tentativa, ent ˜ao, foi copiar uma requisic¸ ˜ao e uma resposta quando a funcional-idade era acessada com sucesso e colar quando a tentativa era advinda de um usu ´ario promotor. Tamb ´em n ˜ao obteve-se sucesso. Portanto, concluiu-se que o sistema n ˜ao est ´a suscet´ıvel ao escalonamento.

(54)

Cap´ıtulo 18. Testing for SQL Injection (OWASP-DV-005)

18 Testing for SQL Injection

(OWASP-DV-005)

18.1

Objetivos

• Enumerar pontos de entrada de dados do usu ´ario n ˜ao filtrados

• Executar comandos SQL maliciosos nos pontos de entrada enumerados • Explorar informac¸ ˜oes sens´ıveis alcanc¸ ´aveis pela injec¸ ˜ao

18.2

Pr ´e-requisitos

• Ferramentas de automatizac¸ ˜ao de injec¸ ˜ao (SQLmap, SqlDumper, etc)

18.3

Metodologia

Ataques de injec¸ ˜ao de SQL s ˜ao classificados em tr ˆes categorias, de acordo com o procedi-mento utilizado na injec¸ ˜ao e o comportaprocedi-mento exibido diante desta. Dessa forma, tem-se:

• Inband: o dado solicitado pelo atacante ´e retornado pelo mesmo canal de injec¸ ˜ao de c ´odigo. Para o caso de uma aplicac¸ ˜ao Web, o resultado ´e exibido na pr ´opria p ´agina de reposta da aplicac¸ ˜ao;

• Out-of-band: o dado requerido ´e devolvido por vias indiretas, alternativas, como, por ex-emplo, para o e-mail do atacante;

• Inferential: n ˜ao remete h ´a uma transfer ˆencia de dados, ou seja, a informac¸ ˜ao desejada ´e obtida, ou reconstruida, com base em padr ˜oes de infer ˆencias sobre as consultas efetuadas no banco de dados.

Conhecidas essas categorias, passamos, agora, a nos importar com a caracter´ıstica de re-torno de consulta oferecida pela aplicac¸ ˜ao. Um aplicac¸ ˜ao Web pode, quando de uma consulta de sintaxe errada, retornar ingenuamente o erro do pr ´oprio SGDB (fornecendo detalhes importantes e facilitadores ao atacante) ou, ao contr ´ario, apresentar uma p ´agina de erro gen ´erica, sobre a qual pouca, ou nenhuma, informac¸ ˜ao pode ser explicitamente determinada. Para o segundo caso, de ocultac¸ ˜ao de erro diante de uma consulta, cabe ao testador inferir acerca dos padr ˜oes estruturais das querys e dos resultados l ´ogicos provenientes das mesmas; este ´ultimo caso ´e comumente conhecido como Blind Injection.

(55)

Cap´ıtulo 18. Testing for SQL Injection (OWASP-DV-005)

A principal condic¸ ˜ao para injec¸ ˜ao de c ´odigo SQL ´e a n ˜ao filtragem de par ˆametros que t ˆem como origem o usu ´ario. Seja em consultas, ou mesmo em formul ´arios de autenticac¸ ˜ao, se preenchida essa condic¸ ˜ao, torna-se poss´ıvel testar variac¸ ˜oes de querys e, de acordo com elas, observar o comportamento da aplicac¸ ˜ao. Por conseguinte, a constatac¸ ˜ao da injec¸ ˜ao de SQL pode ser trabalhada manualmente, atentando-se a todas as consultas e par ˆametros envolvidos nas mesmas no contexto da aplicac¸ ˜ao, ou automaticamente – abordagem tradicionalmente empre-gada em situac¸ ˜oes de Blind Injection, cujo esforc¸o, em termos de n ´umero de querys necess ´arias, ´e muito alto.

18.4

Execuc¸ ˜ao

Para o teste nesta sec¸ ˜ao tratado, o primeiro passo ´e elencar os pontos de poss´ıvel injec¸ ˜ao de c ´odigo. No caso do sistema e-SAJ, s ˜ao fontes de dados de interesse do testador os formul ´arios de autenticac¸ ˜ao e de consulta de processos ou petic¸ ˜oes. Cabe, aqui, ser ressaltada a import ˆancia em se verificar formul ´ario por formul ´ario, campo por campo. Isso ´e necess ´ario porque uma ´unica vari ´avel n ˜ao filtrada pode representar o comprometimento de toda a infraestrutura existente em torno da aplicac¸ ˜ao Web.

Na figura 18.1, ilustra-se um tentativa de anexar conte ´udo SQL `a cla ´usula de busca, objetivando-se, com isso, averiguar um eventual processamento dessa query pelo SGBD. O sucesso dessa ac¸ ˜ao depende da filtragem ou n ˜ao existente na aplicac¸ ˜ao. Como pode-se perceber, o sistema e-SAJ exibe uma mensagem de erro personalizada quando o termo de busca cont ´em dados n ˜ao correspodentes aos que est ˜ao armazenados no banco, ou, adicionalmente, quando s ˜ao anex-ados comandos SQL ao termo de busca. Note-se a diferenc¸a de resultanex-ados entre as buscas realizadas em 18.1 e 18.2.

O insucesso de execuc¸ ˜ao, em um determinado formul ´ario, de comandos SQL n ˜ao implica na inexist ˆencia de pontos de injec¸ ˜ao em outros lugares da aplicac¸ ˜ao. Mesmo diante de uma p ´agina de erro personalizada, comportamento apresentado pelo e-SAJ, ainda pode ser poss´ıvel inferir logicamente sobre o processamento das consultas. Essa infer ˆencia, levada a cabo usando como vetor uma vari ´avel n ˜ao filtrada, remete a uma modalidade mais sofisticada de injec¸ ˜ao de SQL: Blind Injection. Para testar diversas categorias de ataque de injec¸ ˜ao SQL, recomanda-se o uso de ferramentas como o SQLmap. Vide figura 18.3.

(56)

Cap´ıtulo 18. Testing for SQL Injection (OWASP-DV-005)

Figura 18.1: Tentativa de injec¸ ˜ao de comando SQL em formul ´ario de consulta do e-SAJ

(57)

Cap´ıtulo 18. Testing for SQL Injection (OWASP-DV-005)

Figura 18.3: SQLmap testando injec¸ ˜ao de SQL em vari ´aveis da URL de consulta processual do e-SAJ

Referências

Documentos relacionados

Para tanto foram utilizados 60 ratos (Wistar) machos divididos em quatro grupos de 15 animais cada. Todos os animais foram submetidos à extração do incisivo central superior direito,

Os testes de desequilíbrio de resistência DC dentro de um par e de desequilíbrio de resistência DC entre pares se tornarão uma preocupação ainda maior à medida que mais

3 O presente artigo tem como objetivo expor as melhorias nas praticas e ferramentas de recrutamento e seleção, visando explorar o capital intelectual para

A assistência da equipe de enfermagem para a pessoa portadora de Diabetes Mellitus deve ser desenvolvida para um processo de educação em saúde que contribua para que a

servidores, software, equipamento de rede, etc, clientes da IaaS essencialmente alugam estes recursos como um serviço terceirizado completo...

é bastante restrita, visto que tanto suas duas entradas, quanto as galerias e condutos que interligam os pequenos salões são bastante estreitos, e a umidade na maioria dos salões

Para se buscar mais subsídios sobre esse tema, em termos de direito constitucional alemão, ver as lições trazidas na doutrina de Konrad Hesse (1998). Para ele, a garantia