Bem vindos ao Blog da comunidade ITsafe



Boa Leitura


Blog em em português sobre construção . Por favor se encontrar algo que necessite correção entre em contato. Os vídeos do blog ainda estão em hebraico, mas em breve estaremos traduzindo com a mesma qualidade que traduzimos os cursos.


eBay - Loja maliciosa

Neste blog, explicarei como localizei a falha de segurança no eBay.
O eBay é uma plataforma de comércio eletrônico com mais de 150 milhões de usuários ativos em todo o mundo; portanto, uma falha de segurança em uma plataforma tão grande pode afetar milhões de usuários.

Essa falha de segurança permite que você injete código JavaScript dinâmico na loja do eBay e qualquer pessoa que tenha entrado na loja maliciosa poderia ser afetada por esse código.
Usando a injeção de código, você pode realizar ataques de phishing e até minerar digitalmente moedas digitais no dispositivo infectado.

Portanto, um ataque bem-sucedido seria assim::

Esse pop up está no site real do ebay, porém foi criado pelo código injetado.


Vídeo de demonstração do ataque em um Android

Vídeo de demonstração do Vídeo de demonstração do ataque em um iPhone

Ao abrir uma loja do eBay o vendedor deve preencher uma descrição do produto no sistema de divulgação de produtos do eBay, no próprio eBay, dava para perceber que este sistema parece antigo e nao estava moderno como o resto do site em si.
Tentei várias tentativas de injeção de código e cada uma das tentativas mostrou a seguinte mensagem: Uma mensagem de erro que recebemos ao tentar uma injeção de código informa que foi feita uma tentativa de injeção de código JavaScript Em uma das tentativas, tentei criar uma imagem contendo um event handler sem código JavaScript, algo como isto:

<img src=x onerror="">
Fiquei surpreso ao descobrir que a mensagem de erro não apareceu e a loja foi criada normalmente no site. O funcionamento normal do site significa que o event handler (manipulador de eventos) pode ser usado, mas JavaScript não pode ser usado.
A ativação do event-handler na tag Image na descrição da mensagem parece muito suspeita à primeira vista.

Como o lado do servidor consegue detectar o uso de código JavaScript porém ele nos permite usar o event handler?

Concluí que essa é provavelmente há uma lista negra de informações que nao podem ser inseridas no event handler , que é uma escolha imprudente para a proteção XSS. Após várias tentativas fracassadas, cheguei à conclusão de que provavelmente o código JavaScript não poderia ser injetado com as técnicas usuais e teria que fazer algo que eles não pensavam, como usar uma técnica não padrão chamada "JSFuck".


Sobre o JSFuck

Uma técnica muito interessante para escrever código JavaScript usando apenas 6 caracteres: [] ()! + Escrito por Martin Kleppe.
No campo dos testes de intrusão, essa técnica é usada para ignorar as proteções e assinaturas IDS, IPS e WAF.

O uso dos 6 caracteres no JsFuck é expresso da seguinte forma:

  • [] - Usado para ler listas e objetos, e colchetes também são usados ​​para converter texto e número.
  • () - Usado para ler funções e separar as partes do código.
  • + - Usado para fazer o rootUsado para concatenar textos, operações matemáticas e conversão em número.
  • ! - Usado para converter em um número booleano.

A lógica funciona da seguinte maneira:
se quisermos escrever o dígito 0, faremos isso usando os seguintes caracteres +[] e o resultado será o seguinte:
Exemplo de código brainfuck
Obtivemos 0 porque tentamos imprimir o primeiro órgão em uma lista em branco, portanto, se queremos agora usar o mesmo método e imprimir o booleano - False e True Isso é feito usando o caractere "!"
Exemplo de código brainfuck
Se queremos apenas o dígito 1, podemos converter o texto em True e obtemos o dígito 1 ou, alternativamente, se quisermos converter em texto simples, fazemos + [] e transformamos o dígito 1 em texto:
Exemplo de código brainfuck
você pode ver que a lógica é bastante simples, se quisermos escrever o número 123, apenas Vamos escrevê-lo como um texto e depois convertê-lo em um número:
Exemplo de código brainfuck
Depois de aprender a escrever números, agora precisamos ver como escrevemos caracteres usando esses caracteres. A idéia por trás da digitação é:

  • Imprimir qualquer texto
  • Converter esse texto em uma variável de texto
  • Usar caracteres [] Para poder navegar pelo texto

Por exemplo, se quisermos que os caracteres True se formem, façam isso, primeiro imprima true usando os caracteres !![] e depois os converta em texto adicionando os Caracteres +[].

Iremos imprimir o número 1 como vimos antes de usar + !! [] e usar colchetes para acessar o primeiro lugar e, portanto, chegaremos ao r:
Exemplo de código brainfuck
Se continuarmos com o método, podemos ver todos os seguintes caracteres
“a”, “b”, “c”, “d”, “e”, “f”, “i”, “j”, “l”, “n”, “N”, “o”, “O”, “r”, “s”, “t” and “u”.
Abordando qualquer um dos seguintes:
Exemplo de código brainfuck
É suficiente escrever a palavra construtor pela qual podemos obter todas as outras letras. Por exemplo, suponha que se a letra “m” estiver ausente, ela pode ser recebida de uma referência a 0 ["construtor"] que nos dará a palavra:
Exemplo de código brainfuck
e assim por diante, o resultado final nos permite escrever qualquer trecho de código em JavaScript usando os caracteres que apresentei. Para fazer isso automaticamente, você deve usar o seguinte site:
http://www.jsfuck.com
O site pode ser visto com um comando de amostra alert(1)
Exemplo de código brainfuck
se copiarmos a amostra em nosso código para injetar no eBay, obteremos o seguinte código:
<img src=x onerror=[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()>

Copie-o para um arquivo chamado test.html e execute-o você verá que seu código JavaScript é executado.
Então, na verdade, assim ignorei o mecanismo de autenticação do eBay e consegui inserir código na loja online.

Essa falha de segurança poderia ter permitido que criminosos de cibersegurança usassem o eBay como plataforma de distribuição de malware, roubassem cartões de crédito, gravassem moedas digitais nos computadores dos usuários e até mesmo instalar aplicativos maliciosos em seus dispositivos.

Para tirar proveito da falha de segurança, tudo o que o invasor precisava fazer era criar uma loja online do eBay com uma oferta bem atraente e injetar o código malicioso na descrição do produto.

Compartilhe este post