| |
+ do IE da Micro$oft: IE permite CROSS SITE
SCRIPTING |
| |
Publicação: Thor Larholm security
advisory TL#002
Assunto: IE allows universal Cross Site Scripting.
Data: Mar 18 2002
Autor: Thor Larholm
Site: http://www.pivx.com/larholm/adv/TL002/ |
| Sofware: |
Qualquer aplicativo que hospede o controle WebBrowser (IE6+).
Alguns exemplos são o MS Internet Explorer, MS Outlook,
MS Outlook Express... |
| Ambiente: |
Windows (todos) |
| Classificação: |
Risco Alto |
| Impacto: |
Elevar privilégios, sequestro do cliente do MSN Messenger,
rodar script na zona do Meu Computador (My Computer), execução
de comando arbitrária, etc. |
| Patch: |
Patch MS02-015 incompleto ! |
| Notificação: |
Microsoft foi notificada em 18.03.02 |
| Solução: |
Diversas de acordo com o texto abaixo.
Não deixe de ver o aviso da GreyMagic que mostra o
exploit ampliado! |
|
o' \,=./ `o
(o o)
-----ooO--(_)--Ooo----- |
INTRODUÇÃO
Dentro da sua extensa funcionalidade, o IE utiliza um conjunto de
métodos para apresentar janelas de diálogo. Os métodos
showModalDialog
e showModelessDialog
podem transferir objetos da página de origem para a página
que está sendo apresentada dentro do diálogo através
da propriedade dialogArguments. (Para
todas as referências do DHTML veja Referências.) |
DESCRIÇÃO
A propriedade dialogArguments tenta impedir a interação
entre páginas remotas comparando a localização
da página de origem e da página de diálogo.
Quando uma janela de diálogo (por exemplo, res://shdoclc.dll/policyerror.htm)
de outro protocolo, porta ou domínio (por exemplo, http://jscript.dk)
é aberta, o código de validação no IE
assegurará que nenhum objeto seja transferido de forma que
nenhuma interação seja possível.
Quando ambas as páginas estão no mesmo protocolo,
porta e domínio, o código de validação
permitirá a interação.
Infelizmente o código de validação checa apenas
a URL original ao invés da URL final, fazendo com que seja
possível disparar um redirecionamento de HTTP do site original
para a página de diálogo desejada e, desta forma,
obter a interação. É preciso salientar
que isto de forma alguma é limitado pelo protocolo RES://.
A propriedade dialogArguments defeituosa também permite a
interação entre domínios diferentes (por exemplo,
YAHOO.COM para MICROSOFT.COM), protocolos diferentes (HTTP para
HTTPS, HTTP para FILE, etc.) e portas diferentes (porta 80 para
a porta 21, porta 80 para a porta 25, etc.).
A título de demonstração, vamos dar uma olhada
em shdoclc.dll, a qual contém diversos recursos da categoria
HTML, denominados POLICYERROR.HTM, POLICYLOOKING.HTM,
POLICYNONE.HTM e POLICYSYNTAXERROR.HTM.
Estes arquivos contém o seguinte código de script:
var site = window.parent.dialogArguments.url;
function printSite()
{
document.write( site);
}
|
| |
Exploit |
<script>
var sCode = '<'+'script>alert("This is running from: " + location.href);top.close()</'+'script>';
window.showModalDialog("redirect.asp", {url:sCode}) </script>
Redirect.asp contém: <%@Language=Jscript%><%
Response.Redirect("res://shdoclc.dll/policyerror.htm");
%> |
SOLUÇÃO PARA A MS
Corrigir a rotina de validação de dialogArguments.
Incluir a validação de entrada (input) em arquivos
de recursos.
Também corrigir o patch MS02-015, que está incompleto,
para assegurar que esta vulnerabilidade específica na execução
de comando não ocorra novamente quando da próxima
publicação de CSS. |
SOLUÇÃO PARA O USUÁRIO
Desabilitar o script.
|
VERSÕES TESTADAS
IE6sp1 Win2000 SP2, com todos os patches.
IE6sp1 Windows 98, com todos os patches.
IE6sp1 Windows 98 SE, com todos os patches. |
STATUS DO FORNECEDOR
A Microsoft foi notificada em 18 de Março de 2002 e foi capaz
de reproduzir consistentemente esta publicação. Atualmente
(16 de Abril de 2002) estão investigando se devem incluir
isto num patch cumulativo futuro. |
| |
Demonstração |
Nota NumaBoa: Se você está com o IE
6.x instalado, verifique se seu sistema está vulnerável.
Se tiver a versão 5.x prepare-se: vai dar pau! As demonstrações
são do site do Thor na pivx.
Exemplos
estáticos simples - Código corrigido de demonstração
Exemplo
avançado - Input de código de script arbitrário
Sequestrando
o MSN messanger - A versão atualizada de um boletim prévio
Executando
comandos arbitrários - Como o CodeBase não foi
corrigido |
| |
DECLARAÇÃO |
O site NumaBoa apenas traduziu e divulgou esta informação
pública, portanto, não é responsável
pelo mau uso das informações contidas neste alerta.
As opiniões expressas são de Thor Larholm. Em hipótese
alguma o autor ou o responsável pelo site NumaBoa poderão
ser responsabilizados por qualquer dano surgido ou provocado que
tenha conexão com o uso ou com a divulgação
deste alerta. Qualquer uso desta informação será
por conta e risco do usuário.
|
| |
Link Original |
| |
  
http://www.pivx.com/larholm/adv/TL002/default.htm |