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
Hist ´
orico
Data Vers ˜ao Descric¸ ˜ao Autor Revisor Aprovado por
1.0
Versao inicial
Jean
Martina
Jean
Martina
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
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
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
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.
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:
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
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.
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.
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
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
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.
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
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
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.
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
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.
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
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.
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.
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.
Cap´ıtulo 8. Testing for Reflected Cross Site Scripting (OWASP-DV-001)
Figura 8.2: Exemplo de eventual vetor para ataque de Reflected XSS
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
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
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.
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.
Cap´ıtulo 9. Testing for Stored Cross Site Scripting (OWASP-DV-002)
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
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.
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
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
Cap´ıtulo 11. Testing for Cross Site Flashing (OWASP-DV-004)
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?
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
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
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
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.
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
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
Cap´ıtulo 13. Testing for Cookies Attributes (OWASP-SM-002)
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.
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
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?
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.
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?
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?
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
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.
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.
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?
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.
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.
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.
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.
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
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