Linux提权(sudo、polkit)总结

Linux-polkit提权总结

刚准备休年假,就收到监管的漏洞预警通-“Linux Polkit组件中pkexec程序存在权限提升漏洞(漏洞编号为CVE-2021-4034)。pkexec应用程序为Linux系统预装工具,漏洞影响Ubuntu、Debian、Fedora、CentOS等主流Linux发行版…“,啊,正值冬奥护网,各方都比较敏感,赶紧研究下,详见绿盟的CERT应急通知

1、漏洞概述

1月26日,绿盟科技CERT监测到Qualys研究团队公开披露了在Polkit的pkexec中发现的一个权限提升漏洞(CVE-2021-4034) ,也被称为PwnKit。该漏洞是由于pkexec无法正确处理调用参数,从而将环境变量作为命令执行,具有任意用户权限的攻击者都可以在默认配置下通过修改环境变量来利用此漏洞,从而获得受影响主机的root权限。目前该漏洞的细节和PoC已公开,请相关用户尽快采取措施进行防护。

Polkit(PolicyKit)是类Unix系统中一个应用程序级别的工具集,通过定义和审核权限规则,实现不同优先级进程间的通讯。pkexec是Polkit开源应用框架的一部分,可以使授权非特权用户根据定义的策略以特权用户的身份执行命令。

2、影响范围

受影响版本

2009年5月至今发布的所有 Polkit 版本

注:Polkit预装在CentOS、Ubuntu、Debian、Redhat、Fedora、Gentoo、Mageia等多个Linux发行版上,所有存在Polkit的Linux系统均受影响。



不受影响版本

CentOS:
CentOS 6:polkit-0.96-11.el6_10.2
CentOS 7:polkit-0.112-26.el7_9.1
CentOS 8.0:polkit-0.115-13.el8_5.1
CentOS 8.2:polkit-0.115-11.el8_2.2
CentOS 8.4:polkit-0.115-11.el8_4.2

Ubuntu:
Ubuntu 14.04 ESM:policykit-1-0.105-4ubuntu3.14.04.6+esm1
Ubuntu 16.04 ESM:policykit-1-0.105-14.1ubuntu0.5+esm1
Ubuntu 18.04 LTS:policykit-1-0.105-20ubuntu0.18.04.6
Ubuntu 20.04 LTS:policykit-1-0.105-26ubuntu1.2
Ubuntu 21.10:policykit-1-0.105-31ubuntu0.1

Debain:
Debain stretch:policykit-1 0.105-18+deb9u2
Debain buster:policykit-1 0.105-25+deb10u1
Debain bullseye:policykit-1 0.105-31+deb11u1
Debain bookworm,bullseye:policykit-1 0.105-31.1

3、漏洞检测

Linux系统用户可以通过查看Polkit版本来判断当前系统是否在受影响范围内,主流Linux发行版命令如下:
CentOS:
rpm -qa polkit

Ubuntu:
dpkg -l policykit-1

4、漏洞验证

看到该漏洞的评价,CVSS评分为7.8,本次爆出的漏洞CVE-2021-4034为本地提权漏洞,影响比较大,波及广,主流Linux操作系统均受影响,让我立马想到了2021年1月份爆出的sudo本地提权漏洞,当时一爆出,也是引起了不小震动。刚好一起学习总结下

1)、验证CVE-2021-4034 (Linux Polkit 提权)

用手上的一台Centos 7 VM 虚机验证,版本信息如下,
在这里插入图片描述

查看polkit的版本信息,rpm -qa polkit
在这里插入图片描述

用网上爆出的POC,详见Github,polkit提权poc,编译后,执行poc代码,如图
在这里插入图片描述

得到了root权限。同样的poc代码在2021-04 kali中尝试时,发现已经修复了,无法提权,如图:
在这里插入图片描述

5、漏洞修复

临时缓解措施,移除pkexec的suid位,
chmod 0755 /usr/bin/pkexec

重新尝试以上poc代码,提权失败,提示缺少权限,如图
在这里插入图片描述

到目前为止,主流Linux发行版皆提供了polkit工具的升级包,直接升级到最新版本可有效修复该漏洞。

总结

该漏洞利用相对简单,影响范围范围广,大多数Linux版本皆受影响。由此想到了2021年4月份爆出的sudo提权漏洞【CVE-2021-3156】,这是一个缓冲区溢出漏洞。
输入sudo -u#-1 whoami #号后面输入负数,导致溢出,详见sudo提权当时也是影响了大片Linux发行版,与现在的polkit组件异曲同工。
不过sudo 提权漏洞要求较高,得同时满足以下3个条件,才可能执行成功:

1. Sudo版本低于1.8.28
2. 知道用户的密码(当前用户,不是root的密码)
3. 用户处于sudo权限列表之中
4. 存在 ALL 关键词的复合限制逻辑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值