被困在机器上进行pentesting学习,可能是sudo漏洞?

2024-04-20 15:13:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在与一台机器搏斗(这台机器是用来进行笔试训练的,是大学教授给我的)

我已经在这台机器上站稳了脚跟,我从www-data转到了developer,还有一个名为jamal的用户,他显然有重要的信息要获取,这是本研究的目标

我设法找到了一个文件夹/opt/scripts,其中有两个文件utils.shbackup.py。因为我没有权限(甚至文件夹也受保护),所以我无法编辑它们

此外,我在utils.sh上有sudo权限,如下所示:

Matching Defaults entries for developer on app4:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User developer may run the following commands on app4:
    (jamal) SETENV: NOPASSWD: /opt/scripts/utils.sh

所以我想我可以用这个程序进入jamal。对于我所尝试的,在另一个文件夹中使用反向shell创建另一个echo,更改$PATH,然后在sudo -E不起作用的情况下运行它。 有什么建议吗

以下是UTIL和备份的代码:

utils.sh

#!/bin/bash

view_users()
{
    /usr/bin/w
}

view_crontab()
{
    /usr/bin/crontab -l
}


backup_web()
{
    if [ "$EUID" -eq 1001 ]
    then
        echo "Running backup script..."
        /opt/scripts/backup.py &
    else
        echo "Insufficient privileges."
    fi
}


# Non-interactive way
if [ $# -eq 1 ]
then
    option=$1
    case $option in
        1) view_users ;;
        2) view_crontab ;;
        3) backup_web ;;

        *) echo "Unknown option." >&2
    esac

    exit 0
fi


# Interactive way, to be called from the command line
options=("View logged in users"
         "View crontab"
         "Backup web data"
         "Quit")

echo
echo "[[[ System Administration Menu ]]]"
PS3="Choose an option: "
COLUMNS=11
select opt in "${options[@]}"; do
    case $REPLY in
        1) view_users ; break ;;
        2) view_crontab ; break ;;
        3) backup_web ; break ;;
        4) echo "Bye!" ; break ;;

        *) echo "Unknown option." >&2
    esac
done

exit 0

backup.py

#!/usr/bin/python3

from shutil import make_archive

src = '/var/www/html/'

dst = '/tmp/backup'

make_archive(dst, 'gztar', src)

PS:backup.py创建的文件不包含任何有用的内容:这是我已经获得的所有信息


Tags: inpyechoviewwebbinusrsh
1条回答
网友
1楼 · 发布于 2024-04-20 15:13:30

这对我来说很危险:

    (jamal) SETENV: NOPASSWD: /opt/scripts/utils.sh
            ^^^^^^^

您的用户developer可以作为Jamal运行/opt/scripts/utils.sh,但也可以在运行脚本时选择所有环境变量sudoers(5)明确警告:

Additionally, environment variables set on the command line are not subject to the restrictions imposed by env_check, env_delete, or env_keep. As such, only trusted users should be allowed to set variables in this manner.

这怎么会是一个漏洞utils.sh仅使用绝对路径和本地作用域中的函数执行命令,因此不可能使用PATH变量进行攻击。但是,还有其他几种选择

^{}预加载库是一种方法:一旦shell开始运行utils.sh,就加载库。您可以使用初始化代码编译自己的动态库,这些代码可以执行任何您需要的操作

一种更简单的方法是利用^{}提供您自己的shutil.py模块,并实现包含有效负载的make_archive

具体实现留给读者作为练习;)

相关问题 更多 >