Express Prototype Pollution Gadgets
WhiteIntel é um mecanismo de busca alimentado pela dark web que oferece funcionalidades gratuitas para verificar se uma empresa ou seus clientes foram comprometidos por malwares ladrões.
O principal objetivo do WhiteIntel é combater a apropriação de contas e ataques de ransomware resultantes de malwares que roubam informações.
Você pode verificar o site deles e experimentar o mecanismo gratuitamente em:
Servir respostas XSS
Para mais detalhes dê uma olhada na pesquisa original
Alterar o tipo de conteúdo JSON para HTML
Em um aplicativo Express usando uma resposta de tipo de conteúdo JSON e refletindo um JSON:
Nesses casos, XSS normalmente não é possível com um tipo de conteúdo JSON. No entanto, com a poluição de protótipos, podemos confundir o Express para fornecer uma resposta HTML. Essa vulnerabilidade depende da aplicação usar res.send(obj)
e do uso do analisador de corpo com o tipo de conteúdo application/json.
Ao poluir as propriedades body
e _body
, é possível fazer com que o Express sirva o tipo de conteúdo HTML e reflita a propriedade _body
, resultando em XSS armazenado.
Renderizar UTF7
É possível fazer o express renderizar conteúdo UTF-7 com:
Técnicas de Escaneamento Seguro
Espaços JSON
O seguinte PP fará com que os atributos dentro de um JSON tenham um espaço extra que não quebrará a funcionalidade:
Em seguida, um JSON refletido parecerá:
Cabeçalhos Expostos
O seguinte gadget PP fará com que o servidor envie de volta o cabeçalho HTTP: Access-Control-Expose_headers: foo
É necessário ter o módulo CORS instalado
Método OPTIONS
Com a carga útil a seguir, é possível ocultar um método de uma resposta OPTIONS:
Estado
É possível alterar o código de status retornado usando a seguinte carga útil PP:
Erro
Quando você atribui a um protótipo um valor primitivo como uma string, isso produz uma operação no-op, pois o protótipo precisa ser um objeto. Se você tentar atribuir um objeto protótipo ao Object.prototype
em si, isso irá lançar uma exceção. Podemos usar esses dois comportamentos para detectar se a poluição de protótipo foi bem-sucedida:
Valor Refletido
Quando uma aplicação inclui um objeto em sua resposta, criando um atributo com um nome incomum ao lado de __proto__
pode ser esclarecedor. Especificamente, se apenas o atributo incomum for retornado na resposta, isso poderia indicar a vulnerabilidade da aplicação:
Além disso, em cenários onde uma biblioteca como o Lodash é empregada, definir uma propriedade tanto via poluição de protótipo (PP) quanto diretamente dentro do objeto oferece outra abordagem de diagnóstico. Se tal propriedade for omitida da resposta, sugere que o Lodash está verificando a existência da propriedade no objeto alvo antes de mesclar:
Diversos
Permitir Pontos
Existe uma opção no Express que permite criar objetos a partir de parâmetros de string de consulta. Você definitivamente poderia usá-lo em uma cadeia de bugs para explorar uma vulnerabilidade de poluição de protótipo.
?foo.bar=baz
cria um objeto no Node.
Referências
WhiteIntel é um mecanismo de busca alimentado pela dark web que oferece funcionalidades gratuitas para verificar se uma empresa ou seus clientes foram comprometidos por malwares de roubo.
O principal objetivo da WhiteIntel é combater tomadas de contas e ataques de ransomware resultantes de malwares de roubo de informações.
Você pode acessar o site deles e experimentar o mecanismo gratuitamente em:
Last updated