pkexec
?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 权限。就像是找到了一扇门后门,轻松进入了一个本来应该是封闭的区域。pkexec --version
/var/log/auth.log
认证日志pkexec运行时会在
/var/log/auth.log
(Ubuntu/Debian)或 /var/log/secure
(CentOS)留下认证记录。你可以使用以下命令查找可疑行为:sudo grep 'pkexec' /var/log/auth.log
Mar 29 07:00:44 ubuntu pkexec[4491]: ubuntu: The value for the SHELL variable was not found the /etc/shells file
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
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
从日志来看,pkexec
被多次执行,且每次执行时都带有一些特殊的环境变量,这些变量表明攻击者可能正在尝试利用 pwnkit
漏洞进行提权。具体来说,以下几点值得注意:
环境变量分析:
SHELL=/lol/i/do/not/exists: SHELL 变量指向一个不存在的路径,这是攻击者利用漏洞的一种方式,可能在为提权操作准备特定环境。
如果这是正常的操作日志,应该不会有如此频繁的尝试,尤其是带有异常环境变量的。
我们来检查是否提权成功了
pkexec
执行时的 UID 是否为 root(UID 0),如果是,说明提权成功ps aux | grep pkexec
查看 /proc
目录下的进程:如果 pkexec 成功提权,可能会有一个以 root 身份运行的进程。你可以查看该进程的信息。
ps -ef | grep pkexec
2.怎么判断辣个男人还在线
这里我直接列出所有的活动的shell
ps aux | grep 'bash|sh|zsh|pkexec'
ls -l /proc/1028/exe
lrwxrwxrwx 1 root root 0 Mar 29 07:36 /proc/1028/exe -> /usr/bin/dash
cat /proc/1028/cmdline
/bin/sh
/u
sr/bin/dash
,而不是默认的 /bin/bash
,说明这个 shell 可能是在攻击者利用某个漏洞时创建的,而非正常操作。ps -fp 1028
grep 'ubuntu' /var/log/auth.log
原文始发于微信公众号(爱坤sec):上古神器Pwnkit提权检测:如何排除它的踪迹,守护系统安全(CVE-2021-4034)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论