Segurança em Aplicações ASP.NET (XSS e CSRF)

Post on 19-Feb-2017

139 views 4 download

Transcript of Segurança em Aplicações ASP.NET (XSS e CSRF)

LUCIANO GERHARDT, SETEMBRO 2014

SEGURANÇA EM APLICAÇÕES

ASP.NET (XSS E CSRF)

HOJE

FALAREMOS

SOBRE1. SEGURANÇA EM APLICAÇÕES ASP.NET

2. ATAQUES CROSS-SITE SCRIPTING

3. MITIGANDO ATAQUES XSS

4. ATAQUES CROSS-SITE REQUEST FORGERY

5. MITIGANDO ATAQUES CSRF

6. FERRAMENTAS DE AUDITORIA

2

SEGURANÇA EM APLICAÇÕES

ASP.NET

INTRODUÇÃO

SEGURANÇA EM

APLICAÇÕES ASP.NET

Esta apresentação tem por finalidade evidenciar elementos a respeito da

segurança de aplicações ASP.NET.

Os tipos de ataque abordados são: XSS e CSRF, que através de exemplos,

são demonstrados códigos e possíveis soluções.

4

ENCODE/DECODE

SEGURANÇA EM

APLICAÇÕES ASP.NET

Primeiramente, devemos saber as diferenças entre um HTML codificado e

decodificado.

Exemplo de código HTML:

<b> Isso é um texto qualquer. </b>

Codificado, ele fica da seguinte maneira;

&lt;b&gt; Isso &eacute; um texto qualquer. &lt;/b&gt;

No navegador, ele será exibido da seguinte maneira:

<b> Isso é um texto qualquer. </b>

Enquanto que, caso ele seja apresentado em sua forma pura, sem codificar,

será apresentado da seguinte maneira:

Isso é um texto qualquer.

5

ATAQUES CROSS-SITE SCRIPTING

O QUE É?

ATAQUES XSS

Cross Site Scripting é um tipo de brecha de segurança onde o hacker insere

código malicioso (geralmente um script js) em uma página ou banco de dados

sem o conhecimento do usuário.

7

COMO FUNCIONA?

ATAQUES XSS

Existem três tipos de ataque XSS:

• Refletido (reflected): quando o usuário envia código malicioso para o

servidor, e esse código retorna do servidor;

• Persistente (persistent): quando o código malicioso fica armazenado em

algum lugar, como um banco de dados, por exemplo. Dessa forma, pode

ser executado várias vezes, o que se torna mais perigoso que o primeiro;

• Baseado no DOM (DOM based): pode ser utilizado pelos dois tipos de

ataque anteriores. Utiliza dados e manipula elementos DOM da página

onde o código malicioso foi inserido.

8

ATAQUES REFLETIDOS

ATAQUES XSS

Esse tipo de ataque geralmente é feito incluindo script ou HTML na querystring

de um Request do tipo GET, como por exemplo, no parâmetro de uma

mensagem que retorna ao usuário, colocar um form para roubar as credenciais

do usuário, como no exemplo abaixo:

9

ATAQUES REFLETIDOS

ATAQUES XSS

Ou então, utilizar um script para emitir um alerta:

10

ATAQUES PERSISTENTES

ATAQUES XSS

Nesse tipo de ataque, o hacker pode inserir um script malicioso no banco de

dados, através de um campo de comentários, por exemplo. E dessa forma,

toda vez que um usuário entrar na página abrirá um form de login fake, como

no exemplo abaixo:

11

ATAQUES PERSISTENTES

ATAQUES XSS

12

ATAQUES BASEADOS NO DOM

ATAQUES XSS

Nessa categoria de ataques, podem ser utilizadas técnicas tanto persistentes

quanto refletidas. Podem ser exploradas funções vulneráveis do jQuery, como

no exemplo a seguir:

13

ATAQUES BASEADOS NO DOM

ATAQUES XSS

14

ATAQUES BASEADOS NO DOM

ATAQUES XSS

Mesmo com a string codificada, é possível convertê-la novamente para html e

exibir o alert através da função html(htmlString).

Outra forma, é utilizando uma técnica parecida com SQL Injection, como por

exemplo, em situações em que é utilizado um alerta com conteúdo dinâmico

vindo do usuário.

<img onmouseover=alert(user input) />

Então, através desse input, o script é alterado intencionalmente:

<img onmouseover=alert(1) onmouseout=alert(document.cookie) >

Dados sensíveis do cookie podem ser adquiridos dessa maneira.

15

MITIGANDO ATAQUES XSS

ANTIXSS SANITIZER

MITIGANDO ATAQUES XSS

Todo HTML armazenado deve ser codificado, ou seja, limpo de tags HTML e js.

Quando não há interesse em armazenar HTML, e sim apenas texto, é preferível

utilizar alguma biblioteca para “limpar” o HTML e scripts do texto.

Existe uma biblioteca da Microsoft chamada AntiXss, que possui métodos do

tipo GetSafeHtml() e GetSafeHtmlFragment(), que remove scripts de strings

para renderizar na tela de forma segura, mesmo que estejam codificados, como

está na imagem abaixo:

17

FORÇAR CODIFICAÇÃO UTF-8

MITIGANDO ATAQUES XSS

Forçar a codificação da página em UTF-8 no web.config, pois o atacante

poderá utilizar UTF-7, por exemplo, e assim dificultar a codificação do script

pelo encoder.

18

POLÍTICAS DE SEGURANÇA DE CONTEÚDO

MITIGANDO ATAQUES XSS

Aplicar políticas de segurança de conteúdo, para autorizar apenas a execução

de script do próprio host, ou autorizar scripts de determinados hosts. Isso é

feito através de headers para impedir a execução de scripts de terceiros,

porém, o IE ainda não tem suporte para esse recurso.

19

OUTROS MÉTODOS

MITIGANDO ATAQUES XSS

Apenas usar a abordagem de filtros para detectar e retirar as tags <script> e

removê-las ou substituí-las não garante nada, pois existem várias técnicas de

rodar scripts sem a tag <script>, como por exemplo: onload=alert(‘qualquer

coisa’).

Validar os dados! Nunca confie no seu usuário, é essencial garantir que os

dados submetidos sejam exatamente o que a aplicação espera.

Não setar o atributo ValidateRequest para false. Ela lança uma exception

quando há algum erro, previna esse erro usando a codificação adequada antes

de enviar dados ao servidor.

20

OUTROS MÉTODOS

MITIGANDO ATAQUES XSS

Saiba onde os elementos DOM são criados e modificados. Utilize funções do

tipo setAttribute e document.createElement(‘div’) ao invés de document.writein

e $(‘div’).html().

Se for possível, evitar o uso do IE6. Redirecione o usuário para IE6update.com.

Audite todos os lugares onde dados podem ser atribuídos. Utilize text-boxes

com codificação (encode), podem ser utilizada ferramentas de auditoria como

XSS-ME para Firefox e DOM-SNITCH para o Chrome.

Mantenha-se atualizado quanto à técnicas de ataque e vulnerabilidades das

tecnologias utilizadas! OWASP tem um bom cheat-sheet de defesa contra XSS

com atualizações regulares.

21

OUTROS MÉTODOS

MITIGANDO ATAQUES XSS

Conheça as codificações (encoding) do ASP.NET para configurar os arquivos

de configuração (.config) adequadamente.

22

ATAQUES CROSS-SITE REQUEST

FORGERY

O QUE É?

ATAQUES CSRF

Requisições feitas por um site malicioso a outro site no qual o usuário está

autenticado.

24

COMO FUNCIONA?

ATAQUES CSRF

1. Usuário faz o login no banco.com;

2. Servidor autentica usuário e o HTTP Response inclui um cookie de

autenticação;

3. Sem realizar o logout no banco.com, o usuário visita outro site que contém

um form oculto;

4. O site contém um HTML malicioso como o seguinte, que executa um post

no site vulnerável:

5. O usuário clica no botão e o cookie de autenticação é enviado junto pelo

navegador;

6. O request roda no servidor do banco.com no contexto autenticado do

usuário, podendo realizar qualquer coisa que um usuário autenticado pode

fazer.

25

Exemplo de código malicioso:

ATAQUES CSRF

26

MITIGANDO ATAQUES CSRF

AÇÕES PARA MITIGAR ATAQUES CSRF

MITIGANDO ATAQUES CSRF

SSL não previne contra ataques CSRF, pois requisições podem ser feitas

utilizando “https://”.

Ataques CSRF não estão limitados a sites que utilizam cookies para

autenticação.

Basic e Digest authentication também são vulneráveis, pois o browser envia as

credenciais em todas as requisições até a sessão terminar.

Para mitigar esses problemas, no ASP.NET MVC podemos utilizar o helper

HtmlHelper.AntiForgeryToken no Razor. Ou então, o método

AntiForgery.GetTokens(null, out cookieToken, out formToken); encapsulado

numa function para centralizar todas as requisições AJAX.

28

FERRAMENTAS DE AUDITORIA

PLUGINS PARA GOOGLE CHROME

FERRAMENTAS DE

AUDITORIA

https://code.google.com/p/domsnitch/

http://resources.infosecinstitute.com/19-extensions-to-turn-google-chrome-into-

penetration-testing-tool/

http://blog.anantshri.info/chrome-extensions-for-security-professionals/

30

PLUGINS PARA FIREFOX

FERRAMENTAS DE

AUDITORIA

https://addons.mozilla.org/en-US/firefox/addon/xss-me/

http://resources.infosecinstitute.com/use-firefox-browser-as-a-penetration-

testing-tool-with-these-add-ons/

http://labs.securitycompass.com/exploit-me/

31

OUTRAS FERRAMENTAS

FERRAMENTAS DE

AUDITORIA

http://www.acunetix.com/cross-site-scripting/scanner-download

32

Obrigado ;)

LUCIANO GERHARDTANALISTA DE SISTEMAS, FSW POA

+ 55 (51) 2139-5300 RAMAL 5259luciano.gerhardt@totvs.com.br