上古神器Pwnkit提权检测:如何排除它的踪迹,守护系统安全(CVE-2021-4034)

admin 2025年3月30日22:47:04评论10 views字数 3118阅读10分23秒阅读模式
什么是 pkexec
Linux 中有个工具叫 pkexec ,它的作用是允许普通用户以管理员(root)身份运行命令。这就像是你找到了一个有管理员权限的钥匙,能打开很多权限受
限的大门。
不过,pkexec 需要一个前提:你必须通过验证,像是输入密码什么的。但问题就在这里,pwnkit 这个漏洞就是利用了 pkexec 的一个弱点。
漏洞的原理

假设 pkexec 就是一个派对的门卫,他负责决定谁可以进门,谁不能。但是,门卫有一个问题——他在检查你的“身份证”时,忽略了一个关键环节。他没注意到你的身份证上的某些信息是错误的,这给了你一个小漏洞,可以趁机混进去。

而这个小漏洞,就是 pwnkit 利用的。具体来说,漏洞发生的地方是,pkexec 会依赖一个名为 SHELL 的环境变量来决定你想用什么命令行工具来运行命令。正常情况下,它会检查一下你指定的 SHELL 变量是否合法,比如 /bin/bash 这样的路径,但 pwnkit 漏洞让这个检查变得脆弱,攻击者可以用一些特殊的方式修改这个 SHELL 变量。

攻击过程

(1)环境变量的修改:攻击者通过修改环境变量,特别是 SHELL 变量,指定了一个不存在的路径。比如,它设置 SHELL=/lol/i/do/not/exists(你可以理解为写了一个乱七八糟的名字,门卫竟然没看出来)。

(2)加载恶意代码:然后,攻击者指定了一个本地路径 GCONV_PATH=./pwnkit.so,这个路径其实是攻击者自己放置的恶意共享库(也就是伪装的工具箱)。它会被加载并执行,从而触发漏洞,允许攻击者获得 root 权限。

(3)提权成功:由于 pkexec 对环境变量的检查不严格,攻击者就能借机利用漏洞,绕过验证,以管理员身份执行命令。这样,攻击者就像是偷偷拿到了系统的管理员权限钥匙,轻松地就成为了 root 用户。

简单来说,pwnkit 就是通过修改一些环境变量,伪装成合法的请求,绕过了 pkexec 的安全检查,从而获得了 root 权限。就像是找到了一扇门后门,轻松进入了一个本来应该是封闭的区域。
如何查看是否可以通过Pwnkit神器进行提权
1.直接查看pkexec版本来确定
pkexec --version
如果版本小于0.113,那就大概率会被影响
如何你的机器的pkexec是符合要求的,又怀疑被人留下了奇怪的痕迹,那怎么判断是否是通过Pwnkit进行提权的
1.首先看日志
检查 /var/log/auth.log 认证日志
pkexec运行时会在 /var/log/auth.log(Ubuntu/Debian)或 /var/log/secure(CentOS)留下认证记录。你可以使用以下命令查找可疑行为:
sudo grep 'pkexec' /var/log/auth.log
上古神器Pwnkit提权检测:如何排除它的踪迹,守护系统安全(CVE-2021-4034)
日志表示已经通过使用Pwnkit神器进行提权了
Mar 29 07:00:44 ubuntu pkexec[4491]: ubuntu: The value for the SHELL variable was not found the /etc/shells file [USER=root] [TTY=/dev/pts/0] [CWD=/tmp/CVE-2021-4034-main] [COMMAND=GCONV_PATH=./pwnkit.so:. PATH=GCONV_PATH=. SHELL=/lol/i/do/not/exists CHARSET=PWNKIT GIO_USE_VFS=]

pkexec 以 root 身份执行了(USER=root)。

CWD=/tmp/CVE-2021-4034-main,说明攻击者在 /tmp/CVE-2021-4034-main 目录运行了 PwnKit 的 PoC。

GCONV_PATH=./pwnkit.so:.,这和 PwnKit 利用手法完全一致,说明攻击者尝试利用恶意 GCONV 模块进行提权。

SHELL=/lol/i/do/not/exists,这是 PwnKit 漏洞常见的 SHELL 变量伪造方式,用于绕过 pkexec 的参数校验。

多次重复执行,从 07:00:44 到 07:17:28,说明攻击者可能在不断尝试获取 root shell。

检查服务日志

journalctl | grep pkexec
上古神器Pwnkit提权检测:如何排除它的踪迹,守护系统安全(CVE-2021-4034)
这条日志表明 pkexec 正在执行,且试图运行一个不在 /etc/shells 文件中的 SHELL /lol/i/do/not/exists。这表明攻击者可能已经修改了环境变量,以利用 pwnkit 漏洞进行提权。
Mar 29 07:00:44 ubuntu pkexec[4491]: ubuntu: The value for the SHELL variable was not found the /etc/shells file [USER=root] [TTY=/dev/pts/0] [CWD=/tmp/CVE-2021-4034-main] [COMMAND=GCONV_PATH=./pwnkit.so:. PATH=GCONV_PATH=. SHELL=/lol/i/do/not/exists CHARSET=PWNKIT GIO_USE_VFS=]

从日志来看,pkexec 被多次执行,且每次执行时都带有一些特殊的环境变量,这些变量表明攻击者可能正在尝试利用 pwnkit 漏洞进行提权。具体来说,以下几点值得注意:

环境变量分析:

SHELL=/lol/i/do/not/exists: SHELL 变量指向一个不存在的路径,这是攻击者利用漏洞的一种方式,可能在为提权操作准备特定环境。

GCONV_PATH=./pwnkit.so: 指定了一个本地的共享库 pwnkit.so,这通常与 pwnkit 漏洞的利用方法相关,可能是攻击者尝试加载自己的恶意代码。
CHARSET=PWNKIT: 设置字符集为 PWNKIT,这也是漏洞利用的一部分。
GIO_USE_VFS=: 可能是尝试影响 GIO 库的行为,进一步操控权限。

如果这是正常的操作日志,应该不会有如此频繁的尝试,尤其是带有异常环境变量的。

我们来检查是否提权成功了

查看 UID/GID:检查 pkexec 执行时的 UID 是否为 root(UID 0),如果是,说明提权成功
ps aux | grep pkexec
上古神器Pwnkit提权检测:如何排除它的踪迹,守护系统安全(CVE-2021-4034)

查看 /proc 目录下的进程:如果 pkexec 成功提权,可能会有一个以 root 身份运行的进程。你可以查看该进程的信息。

ps -ef | grep pkexec
上古神器Pwnkit提权检测:如何排除它的踪迹,守护系统安全(CVE-2021-4034)

2.怎么判断辣个男人还在线

这里我直接列出所有的活动的shell

ps aux | grep 'bash|sh|zsh|pkexec'
上古神器Pwnkit提权检测:如何排除它的踪迹,守护系统安全(CVE-2021-4034)
这里可以看到有一个id为1028的远程终端,并且运行该进程的用户为root
我们这里查看进程的详细详细
# ls -l /proc/1028/exelrwxrwxrwx 1 root root 0 Mar 29 07:36 /proc/1028/exe -> /usr/bin/dash# cat /proc/1028/cmdline/bin/sh#
我们发现这个进程连接到 /usr/bin/dash,而不是默认的 /bin/bash,说明这个 shell 可能是在攻击者利用某个漏洞时创建的,而非正常操作。
我们来查看是谁在使用这个sh?
使用命令
ps -fp 1028
上古神器Pwnkit提权检测:如何排除它的踪迹,守护系统安全(CVE-2021-4034)
我们发现其父id是ubuntu用户的,我们通过auth日志发现,我们的ubuntu用户是通过ssh登录的
grep 'ubuntu' /var/log/auth.log
上古神器Pwnkit提权检测:如何排除它的踪迹,守护系统安全(CVE-2021-4034)

原文始发于微信公众号(爱坤sec):上古神器Pwnkit提权检测:如何排除它的踪迹,守护系统安全(CVE-2021-4034)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月30日22:47:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   上古神器Pwnkit提权检测:如何排除它的踪迹,守护系统安全(CVE-2021-4034)https://cn-sec.com/archives/3897777.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息