Autor: BIBI
Sempre que pensamos em hackers, um hacker costuma ser assim: uma pessoa solitária que entra silenciosamente nos servidores de outras pessoas para destruir ou roubar informações secretas de outras pessoas. Talvez ele mude nossa página inicial ou até roube números de cartão de crédito e senhas de clientes. Além disso, os hackers podem atacar os clientes que visitam o nosso site. Ao mesmo tempo, nosso servidor também se tornou seu cúmplice. A Microsoft chama esse ataque de ataque de “script entre sites”. A maioria desses ataques ocorre quando o site gera páginas da web dinamicamente, mas o alvo do hacker não é o seu site, mas os clientes que navegam no site.
Descrição de ataques de script entre sites
Em uma revista chamada <<ADVISORY CA--2000-02>>, o CERT avisa a todos: Se o servidor não verificar efetivamente a entrada do cliente, o hacker inserirá algum código HTML malicioso, quando esses HTML a entrada de código é usada em programas SCRIPT, eles podem usá-la para causar danos, como inserir imagens ou sons nojentos, etc., e ao mesmo tempo, também pode interferir na navegação correta dos clientes na página web.
Sabemos que alguns amigos foram induzidos a acessar alguns sites gratuitos suspeitos e tudo o que conseguiram foram de 10 a 20 janelas pequenas. Essas janelas geralmente são acompanhadas por botões inválidos gerados por JAVA ou JAVASCRIPT. Fechar essas janelas é em vão. Cada vez que fechamos uma janela, mais 10 janelas aparecerão. Esta situação ocorre frequentemente quando o administrador não está disponível. Os incidentes com mouse são um exemplo típico de hackers que usam métodos SCRIPT entre sites para atacar clientes.
Tags e scripts maliciosos não são apenas brincadeiras, eles podem até roubar dados e corromper sistemas. Um hacker inteligente ou não tão inteligente pode usar o SCRIPT para interferir ou alterar a entrada de dados no servidor. Os códigos SCRIPT também podem ser usados para atacar sistemas de clientes e danificar completamente seu disco rígido. E você tem que saber que enquanto você usa o servidor, o SCRIPT do hacker também fica rodando em um local seguro do seu servidor! Se os clientes confiarem no seu servidor, eles também confiarão no código SCRIPT malicioso. Até mesmo esse código vem do servidor do hacker na forma de <SCRIPT> ou <OBJECT>.
Mesmo o uso de um firewall (SSL) não pode impedir ataques SCRIPT entre sites. Isso porque se o dispositivo que gerou o código SCRIPT malicioso também utilizar SSL, o SSL do nosso servidor não conseguirá identificar o código. Vamos simplesmente entregar o site em que nossos clientes tanto confiaram aos hackers? E a existência deste tipo de destruição prejudicará completamente a reputação do seu site.
1. Exemplo de ataque SCRIPT entre sites:
De acordo com informações do CERT, a entrada dinâmica geralmente tem as seguintes formas: parâmetros de URL, elementos de tabela, COOKISE e solicitações de dados. Analisemos este site com apenas duas páginas, o nome do site é: MYNICESITE.COM. A primeira página usa um formulário ou COOKIE para obter o nome do usuário:
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" Then
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>MyNiceSite.com Home Page</TITLE>
</HEAD>
<BODY>
<H2>MyN geloSite .com</H2>
<FORM method="post" action="page2.asp">
Digite seu nome de usuário MyNiceSite.com:
<INPUT type="text" name="userName">
<INPUT type="submit" name= "submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
A segunda página retorna o nome do usuário para boas-vindas:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" Then
strUserName = Request.QueryString("userName")
Else
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName" )
End If %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Olá: <%= strUserName %> </H3>
</BODY>
</HTML>
Quando você normalmente Quando digitando texto, tudo funciona bem. Se você inserir o código do Script: <SCRIPT>alert('Hello.';</script>, o rótulo de aviso do JavaScript aparecerá:
na próxima vez que você visitar, esse rótulo de aviso também aparecerá; isso ocorre porque o código do Script é Já está no cookie quando você visita pela primeira vez. Este é um exemplo simples de ataque entre sites.
Se você acha que este é um caso especial, é melhor procurar em outro lugar na Internet e tentar você mesmo. grandes sites governamentais, sites educacionais e sites comerciais, e alguns deles apresentam a situação acima. Até descobri que o site onde costumo usar cartões de crédito não filtra a entrada, é realmente assustador pensar nisso
. dos hackers, um hacker costuma ser assim: uma pessoa solitária que entra silenciosamente nos servidores de outras pessoas para destruir ou roubar informações secretas de outras pessoas. os hackers também atacam os clientes que visitam nosso site. A Microsoft chama esse ataque de ataque de "script entre sites" . que navegam no site
A descrição dos ataques de script entre sites
está em um livro chamado <<ADVISORY CA --2000-02>>Na revista, o CERT alertou a todos: Se o servidor não verificar efetivamente a entrada do cliente, os hackers. irá inserir alguns códigos HTML maliciosos quando essas entradas de código HTML são usadas em programas SCRIPT, eles podem usá-los para causar danos, como inserir imagens ou sons nojentos, etc., e ao mesmo tempo, também podem interferir nos clientes. 'navegação correta na web
Sabemos que alguns amigos foram induzidos a alguns sites gratuitos suspeitos, e o que obtiveram foi apenas 10. Para 20 janelas pequenas, essas janelas são frequentemente acompanhadas por botões inválidos gerados por JAVA ou JAVASCRIPT. chamado de ratoeira. Fechar essas janelas é em vão. Cada vez que fechamos uma janela, haverá mais 10 janelas. Essa situação geralmente ocorre quando o administrador não está presente. Métodos SCRIPT entre sites para atacar clientes
Tags maliciosas e SCRIPT não são apenas brincadeiras simples, eles podem até roubar dados e destruir o sistema. O uso do código SCRIPT também pode atacar o sistema do cliente, e você precisa saber que enquanto estiver usando o servidor, o SCRIPT do hacker também estará sendo executado em um local seguro no seu servidor. confie nesses códigos SCRIPT maliciosos, mesmo que o código comece com <SCRIPT> ou <OBJECT>. O formulário vem do servidor do hacker.
Mesmo o uso de um firewall (SSL) não evita ataques SCRIPT entre sites. Isso porque se o dispositivo que gerou o código SCRIPT malicioso também utilizar SSL, o SSL do nosso servidor não conseguirá identificar o código. Vamos simplesmente entregar o site em que nossos clientes tanto confiaram aos hackers? E a existência deste tipo de destruição prejudicará completamente a reputação do seu site.
1. Exemplo de ataque SCRIPT entre sites:
De acordo com informações do CERT, a entrada dinâmica geralmente tem as seguintes formas: parâmetros de URL, elementos de tabela, COOKISE e solicitações de dados. Analisemos este site com apenas duas páginas, o nome do site é: MYNICESITE.COM. A primeira página usa um formulário ou COOKIE para obter o nome do usuário:
<%@ Language=VBScript %>
<% If Request.Cookies("userName") <> "" Then
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & Response.Cookies("userName")
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<TITLE>MyNiceSite.com Home Page</TITLE>
</HEAD>
<BODY>
<H2>MyN geloSite .com</H2>
<FORM method="post" action="page2.asp">
Digite seu nome de usuário MyNiceSite.com:
<INPUT type="text" name="userName">
<INPUT type="submit" name= "submit" value="submit">
</FORM>
</BODY>
</HTML>
<% End If %>
A segunda página retorna o nome do usuário para boas-vindas:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<> "" Then
strUserName = Request.QueryString("userName")
Else
Response.Cookies("userName") = Request.Form("userName")
strUserName = Request.Form("userName" )
End If %>
<HTML>
<HEAD></HEAD>
<BODY>
<H3 align="center">Olá: <%= strUserName %> </H3>
</BODY>
</HTML>
Quando você normalmente Quando digitando texto, tudo funciona bem. Se você inserir o código do Script: <SCRIPT>alert('Hello.';</script>, o rótulo de aviso do JavaScript aparecerá:
na próxima vez que você visitar, esse rótulo de aviso também aparecerá; isso ocorre porque o código do Script é Já está no cookie quando você visita pela primeira vez. Este é um exemplo simples de ataque entre sites.
Se você acha que este é um caso especial, é melhor procurar em outro lugar na Internet e tentar você mesmo. grandes sites governamentais, sites educacionais e sites comerciais, e alguns deles apresentam a situação acima. Até descobri que o site onde costumo usar cartões de crédito não filtra a entrada, é realmente assustador pensar nisso
. : Prevenção de ataques de script entre sites.
1. Como evitar que os servidores sejam atacados por scripts entre sites
Felizmente, a tecnologia para evitar ataques de scripts entre sites está se tornando cada vez mais perfeita. Atualmente, vários métodos podem ser adotados para evitar ataques de script entre sites:
1. Codificar os caracteres da página gerada dinamicamente
A primeira coisa que você precisa fazer é codificar os caracteres da página gerada dinamicamente. os hackers ficarão muito vulneráveis. É possível alterar as configurações do seu personagem para superar facilmente suas defesas. Se nosso site for em inglês, só precisamos definir a codificação de caracteres para caracteres latinos ISO-8859-1. A situação específica é a seguinte:
<META http-equiv="Content-Type" content="text/html. ;charset= ISO-8859-1">
2. Filtre e limite todos os dados de entrada.
Este é o segundo método para evitar ataques de script entre sites. Ao fazer login, não permita que esses caracteres especiais sejam inseridos. Portanto, podemos adicionar o programa JAVASCRIPT ao método ONSUBMIT para completar esta função. Neste exemplo, limitamos a entrada a 15 caracteres. Isso evita a entrada de scripts mais longos.
No livro <<Artigo da base de conhecimento QA252985>>A Microsoft fornece um pequeno programa Javascript para completar a filtragem dos dados de entrada. Também introduzimos este código para nosso exemplo de acordo com a situação específica, como:
function checkForm() {
document.forms[0].userName.value = _
RemoveBad(document.forms[0].userName.value
return true
);;
}
// CÓDIGO DA MICROSOFT
function RemoveBad(strTemp) {
strTemp = strTemp.replace(/</>/"/'/%/;/(/)/&/+/- /g ,"");
return
strTemp;
}
Usando este método, você pode filtrar essescaracteres
contidos na entrada:
% < > [ ] { } ;
O método de filtragem e restrição de entrada mencionado acima é um método defensivo muito importante, mas ainda é impotente contra meu ataque baseado em e-mail. Porque coloquei os parâmetros da URL diretamente no email. Em resposta a esta situação, temos de tomar medidas de segurança mais poderosas. Se usarmos ASP, será relativamente mais fácil de resolver. Apenas HTML e URL codificam as páginas da web geradas dinamicamente. Para a situação em nosso exemplo, fizemos as seguintes alterações na URL de redirecionamento na primeira página de entrada:
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Response.Cookies("userName"))
Na página de execução, adicionamos:
strUserName = server .HTMLEncode(Request.QueryString("userName"))
e
strUserName =server.HTMLEncode(Request.Form("userName"))
A Microsoft recomenda que todas as entradas e saídas de páginas dinâmicas sejam codificadas. Isso deve ser verdade mesmo ao armazenar e recuperar dados do banco de dados. Dessa forma, você pode evitar em grande medida ataques de script entre sites.
Para fazer isso, adicione Page1.asp:
<%@ Idioma=VBScript%>
<% If Request.Cookies("userName") <> "" Então
'redirecionar se detectar o cookie
Dim strRedirectUrl
strRedirectUrl = "page2.asp?userName="
strRedirectUrl = strRedirectUrl & _
server.URLEncode(Request.Cookies("userName"))
Response.Redirect(strRedirectUrl)
Else %>
<HTML>
<HEAD>
<META http-equiv="Content-Type"content="text/html; charset=ISO-8859-1">
<TITLE>MyNiceSite.com Home Page</TITLE>
</ HEAD>
<script LANGUAGE="javascript">
<!--
function checkForm() {
document.forms[0].userName.value =
RemoveBad(document.forms[0].userName.value
}
;
//************************************************ ******
//Programador: CÓDIGO NÃO ORIGINAL - VEM DA MICROSOFT
//Fonte do código: Artigo Q25z985 da Base de Conhecimento Microsoft
//Descrição: Remove caracteres inválidos
//*************
.***** *****************************************
function RemoveBad(strTemp) {
strTemp =strTemp.replace(/</>/"/'/%/;/(/)/&/+/-/g, "");
return strTemp;
}
//-->
</SCRIPT>
<BODY>
<BR>
<H2>MyNiceSite.com</H2>
<BR>
<FORM method="post"action="page2.asp" onsubmit="return checkForm ();">
Digite seu nome de usuário MyNiceSite.com:
<INPUT type="text"name="userName" width="10" maxwidth="10">
<INPUT type="submit"name="submit" value=" submit">
</FORM>
</BODY>
</HTML>
<% end if %>
Adicione o seguinte a Page2.asp:
<%@ Language=VBScript %>
<% Dim strUserName
If Request.QueryString("userName")<>"" Then
strUserName =server.HTMLEncode(Request.QueryString("userName"))
Else
Response.Cookies("userName") =Request.Form("userName")
strUserName = server.HTMLEncode(Request.Form("userName"))
End If %>
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/ html;charset=ISO-8859-1">
</HEAD>
<BODY>
<H3 align="center">Olá: <%= strUserName %></H3>
</BODY>
</HTML>
Agora devido a isso O ataque foi efetivamente evitado. Depois que essas tags e scripts maliciosos são codificados, eles são exibidos na forma de texto, conforme mostrado abaixo:
Também podemos adicionar um componente IIS para filtrar todos os caracteres especiais da entrada dinâmica. Para os sites que já foram desenvolvidos, é muito fácil usar esse método para evitar ataques de script entre sites. Nosso controle pode interceptar o alvo REQUEST da página ASP e pode detectar o conteúdo de tabelas, cookies, strings de solicitação e programas:
Também podemos adicionar dados estatísticos a este componente gravando arquivos de log. Sempre que um cliente insere um caractere ilegal, este componente registra seu endereço IP e a hora. Para obter detalhes, consulte o artigo <<Roll your Own IIS Application on ASPToday>> de Doug Dean.
Precisamos apenas seguir algumas etapas simples para prevenir com eficácia ataques de script entre sites. Além dos três métodos mencionados acima, a Microsoft e o CERT também recomendam fortemente o uso de um método que chamam de “verificação de integridade”. Por exemplo, se houver uma janela de entrada que permita apenas a entrada de números, iremos limitá-la para permitir apenas a entrada de números de 0 a 9. O método usado pela Microsoft e pelo CERT para limitar os caracteres de entrada é muito melhor do que filtrar apenas caracteres especiais. Ao seguir essas etapas, você pode proteger os clientes que visitam seu site enquanto estão lá.
2. Como proteger seu navegador contra ataques de hackers:
Como evitar ser atacado quando estiver em roaming na Internet? A Microsoft e o CERT desaconselham brincadeiras online. Em resposta a esta situação, o autor de uma coluna na PC Magazine chamado John Dvorack deu uma resposta interessante. Ele acredita que este é um ato premeditado da Microsoft: assustar os internautas e fazê-los navegar em sites seguros como America Online e MSN.com.
No nosso exemplo, mesmo que você não navegue pela Internet, não poderá evitar ser atacado por hackers online. Ironicamente, a maioria dos perigos vem dos sites em que mais confiamos. Se quiser que seu site esteja livre de problemas, você não deve baixar nenhum conteúdo dinâmico ou cookies. Para obter detalhes, consulte as informações relevantes do seu navegador.
A Microsoft também alerta você para definir o Active Script do seu navegador para um estado severamente restrito e seu e-mail para um modo de recebimento severamente restrito. Tenha cuidado ao clicar em links em e-mails. Para obter mais informações, consulte um livro chamado <<Artigo Q253117 da Base de Conhecimento da Microsoft>>. Por precaução, é melhor você ter mais experiência online e ter cuidado em todos os momentos.
Conclusão
Se você é um ex-programador UNIX, talvez não saiba o que significa cross-site scripting. Você sabe que o nome de usuário e a senha para administradores de muitos sites fazerem login são root e root respectivamente. Da mesma forma, o nome e a senha de muitos administradores de banco de dados são sa e password respectivamente. Você também conhece o Webzine (como Phrack e Alt2600). Os métodos que eles fornecem podem informar passo a passo os pontos fracos de um determinado servidor. Neste tipo de hardware, você também sabe que muitos servidores de banco de dados de sites e servidores web não se protegem. Ao encontrar um hacker, a máquina ficará paralisada.
Embora seja fácil tomar medidas para proteger nossos sistemas contra hackers, nossos sistemas estão sempre expostos a hackers. Há todos os motivos para acreditar que surgirão algumas novas vulnerabilidades de segurança no próximo ano. Um artigo concluído sob a orientação do Sr. John Howard da CERT Company mencionou: "De acordo com pesquisas atuais, cada site com um nome de domínio na Internet é atacado por hackers pelo menos uma vez por ano, em média.
Para servidores, mesmo apenas um desses.
"o ataque é insuportável. Os ataques de script entre sites são outro método que os hackers podem empregar. Mas podemos evitar que esta forma de ataque aconteça desde que realizemos alguns processamentos simples mencionados acima.