CTF必备:通过sudo命令实现权限提升

在CTF赛事中,合理利用sudo命令提权是常见的突破口。核心是查看当前用户能以root权限执行哪些命令,并灵活运用它们
一、核心原理:理解 sudo 权限机制
sudo(Superuser Do)允许普通用户以其他用户(通常是 root)的身份执行命令,其权限规则定义在/etc/sudoers文件中。CTF 中提权的核心逻辑是:找到当前用户被授权以 root 身份执行的高风险命令,并利用这些命令的特性突破权限限制,获取 root shell。
第一步:检查当前用户的 sudo 权限(信息收集)
在尝试提权前,必须先明确当前用户能执行哪些 sudo 命令,这是所有操作的基础。执行以下命令:
sudo -l
关键输出解读:
NOPASSWD: ALL:无需输入密码即可执行所有命令(最高危);NOPASSWD: /usr/bin/vim:无需密码仅可执行 vim 命令;- 无
NOPASSWD标注:执行对应命令需输入当前用户密码。
重点关注无需密码执行且具备高风险操作能力的命令(如编辑器、解释器、文件操作命令)。
二、实战提权:常见可利用命令与操作方法
以下是 CTF 中高频出现的可提权命令,按 “命令类型 + 提权原理 + 实操步骤” 整理,新手可直接套用。
| 可利用命令 | 提权核心原理 | 详细操作示例 |
| vim/vi | 编辑器逃逸 | 1. 执行 2. 在 vim 界面输入 |
| git | 分页器逃逸 | 1. 执行 2. 在分页器界面输入 |
| man | 手册页逃逸 | 1. 执行 2. 在手册页界面输入 |
| more/less | 分页器逃逸 | 1. 执行 2. 输入 |
| nmap(旧版本) | 交互 / 脚本模式执行系统命令 | 方法 1(交互模式):
方法 2(脚本模式):
|
| find | exec 参数执行任意命令 |
(testfile 可替换为任意存在的文件) |
| python/perl/ruby | 解释器直接执行系统命令 | Python 示例: sudo python -c 'import os; os.system("/bin/sh")' Perl 示例: sudo perl -e 'exec "/bin/sh";' |
| apt/apt-get | 子命令调用分页器 | sudo apt changelog apt → 分页器中输入!/bin/sh |
| bash/sh | 直接获取 shell | 若授权执行 shell:sudo bash 或 sudo sh(最直接的提权方式) |
| cp/mv | 覆盖系统关键文件 | 风险操作(需精准配置): 1. 修改 2. 覆盖 (CTF 中极少用到,易操作失误) |
补充:稳定 root shell 的技巧
通过上述方法获取的 shell 可能是 “非交互式 shell”,部分命令无法执行,可通过以下命令加固:
python -c 'import pty; pty.spawn("/bin/bash")'
# 若系统无python,可尝试:
script /dev/null -c bash
【点这里】 带你通过CTF
三、CTF 提权实战步骤(标准化流程)
- 信息收集:执行
sudo -l,记录所有可执行的 sudo 命令(重点标记 NOPASSWD 项); - 筛选高风险命令:从可执行命令中匹配上表中的提权命令(如 vim、python、find 等);
- 尝试提权:根据命令类型选择对应的提权方法(优先尝试最直接的方式,如
sudo bash); - 验证权限:提权后执行
whoami或id,确认是否为 root 用户; - 加固 shell:若 shell 不稳定,执行上述 “稳定 shell” 命令;
- 完成任务:读取 flag 文件(通常在
/root/flag或/home/xxx/flag)。
四、安全防御视角:sudo 配置最佳实践
从系统管理员角度,合理配置sudo可避免权限泄露,核心原则是最小权限原则:
- 避免使用
ALL=(ALL:ALL) ALL(授权所有用户执行所有命令); - 精准指定可执行命令,如仅授权
/usr/bin/ls而非/usr/bin/*; - 禁用高风险命令的 sudo 权限(如 vim、bash、python 等);
- 启用密码验证(避免 NOPASSWD 配置,除非必要);
- 定期审计
/etc/sudoers文件,删除无用的授权规则。
五、注意事项
- 上述技巧仅适用于 CTF 赛事学习,在真实环境中需遵守法律法规,未经授权不得测试;
- 不同系统(如 Ubuntu、CentOS)的命令路径可能略有差异(如
/bin/shvs/usr/bin/sh),可通过which 命令确认路径; - 部分新版本工具(如 nmap7.9+)已修复交互模式提权漏洞,需注意版本差异。
总结
sudo -l是 sudo 提权的核心信息收集命令,必须优先执行;- 提权的关键是利用高风险命令的 “逃逸特性”(如编辑器、分页器调用 shell);
- 按 “信息收集→筛选命令→尝试提权→验证权限” 的流程操作,降低失误率。

掌握 sudo 提权技巧不仅能应对 CTF 题目,也能帮助理解 Linux 权限机制,建议新手在本地虚拟机(如 Kali Linux)中反复练习上述命令,加深对原理的理解
更多推荐
所有评论(0)