Ir para conteúdo
Faça parte da equipe! (2024) ×

Não vão resolver? :l


Alitrol Saveg
 Compartilhar

Posts Recomendados

Já se passou 1 hora, e não resolveram...

 

E acabei de perceber que o problema é o plugin HotWords, que converte as entities para html padrão.

 

Por exemplo:

 

Se eu colocar um script comum, com palavras que podem virar anuncio.

É necessário se cadastrar para acessar o conteúdo.

 

O plugin tornar as palavras "reais" (HTML puro). heuaheau.

 

Interessante até :P

 

@Complementando

Isso se trata de um XSS de tipo 3 (DOM-Based XSS) que ocorre pelo auto-decoding do escape do HTML entre contextos do DOM.Fórums estão lotados dele mas nesse caso ele é persistente,o que o torna ainda mais perigoso.

O DOM-Based XSS é uma modalidade de XSS que é causada pelo Javascript e manipulações no DOM feitas,por esse,de forma insegura como por exemplo usando o atributo innerHTML ao invés de métodos de criação de elementos ou o atributo innerText.O auto-decoding entre contextos ocorre em por exemplo:

É necessário se cadastrar para acessar o conteúdo.

Nesse caso o valor do input está escapado para não quebrar a estrutura da página,mas sabe-se que o valor "real" dele é: <a href="#">Ué,isso não é escapado?</a>.O DOM sabe disso e vai passar o valor real dele para o innerHTML da div o que vai fazer com que o HTML dele seja executado (linkagem HTML -> DOM -> HTML) vide auto-decoding de HTML entre contextos do DOM.Nesse caso poderia ser fácilmente consertado usando o atributo innerText ao invés do atributo innerHTML.

Muitos inserem elementos da seguinte maneira:

É necessário se cadastrar para acessar o conteúdo.

Quando a correta é:

É necessário se cadastrar para acessar o conteúdo.

E esse caso exemplifica bem o que ocorre com o plugin HOTWords.

Eis o trecho vulneravel:

É necessário se cadastrar para acessar o conteúdo.

Para facilitar a visualização do código:

É necessário se cadastrar para acessar o conteúdo.

Vou explicar.As strings na forma $n serão substituidas pela match de número n na string do valor da div com id HOTWordsTxt e name HOTWordsTxt que é referenciado por nodeValue (método para acessar o valor de elementos no DOM) através da função replace do Objeto String da biblioteca padrão do JavaScript.A match $2 e $3 é a hotword em si (na variavel gg) enquanto a match $1 e $4 são o resto do valor (nodeValue nesse caso).O problema é que acontece um auto-decode da propriedade nodeValue (como demonstrado acima) que por sua vez é passado para o atributo innerHTML criando a linkagem DOM -> HTML -> HTML e fazendo o HTML de nodeValue ser executado.

É um código extremamente estúpido já que só a própria hotword é necessária ao elemento criado.

A correção seria uma substituição desse trecho por um equivalente seguro e mais correto como:

É necessário se cadastrar para acessar o conteúdo.

Onde PHP.htmlspecialchars é uma função do VBulletin que emula a htmlspecialchars do PHP que básicamente escapa o HTML.

Você deve estar se perguntando: mas enquanto o HOTWords não faz essa correção,o que eu posso fazer?É você que exibe os scripts deles,já que esses são client-side.Logo a correção seria exibir a versão correta do script fornecido por eles.

O HOTWords faz requisição ao seguinte script: "http://adsxxxx.hotwords.com.br/show.jsp?id=29289" que por sua vez chama outros 3 scripts onde em um deles existe o código vulneravel.O que poderia ser feito seria alterar esse script que chama os outros 3 scripts para corrigir,com JavaScript,o script defeituoso trocando essas linhas defeituosas.

O script que queremos corrigir é chamado por:

É necessário se cadastrar para acessar o conteúdo.

Então iremos alterar essa chamada de forma a corrigir as linhas defeituosas.

 

@Horus:

Tutorial: Explorando XSS no HOTWORDS | INW-Segurança

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.