1. 为什么sudo会成为CTF赛题的常客
在网络安全竞赛和渗透测试中,权限提升始终是核心考察点之一。而sudo作为Linux系统中管理特权操作的"守门人",其复杂的配置规则和丰富的功能特性,使得它成为CTF出题人最青睐的权限提升载体之一。
我参与过数十场CTF赛事,发现近70%的Linux系统权限提升题目都涉及sudo机制。这主要源于三个特性:首先,sudo的配置文件(/etc/sudoers)支持精细化的权限控制,容易因配置不当留下漏洞;其次,sudo支持丰富的命令行参数和环境变量,存在多种非常规用法;最后,sudo与系统其他组件(如LD_PRELOAD、PATH环境变量等)的交互可能产生意外行为。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. sudo权限提升的核心原理剖析
2.1 sudo的工作机制解析
当用户执行sudo命令时,系统会依次完成以下验证:
- 检查/etc/sudoers中该用户是否具有sudo权限
- 验证用户密码(如果配置需要)
- 检查命令是否在允许列表中
- 根据配置决定是否保留环境变量
- 最终以root权限执行目标命令
这个过程中每个环节都可能成为突破口。例如某次实战中,我发现sudoers文件中配置了user ALL=(ALL) NOPASSWD: /usr/bin/vi,这意味着该用户无需密码就能用root权限运行vi编辑器,而vi支持执行系统命令的功能(:!command),这就直接实现了权限提升。
2.2 常见漏洞模式分类
根据多年经验,我将sudo相关的权限提升漏洞归纳为五类:
-
二进制劫持型:当sudo允许执行脚本或可执行文件时,通过PATH环境变量操纵或目录权限问题,使系统执行恶意程序而非预期程序。曾遇到一个案例,sudo配置允许运行
/opt/scripts/backup.sh,但该目录全局可写,攻击者只需替换脚本内容即可获取root shell。 -
参数注入型:某些程序(如find、awk)支持通过参数执行命令。若sudo允许不带参数限制地执行这些程序,就可能被利用。例如
sudo find / -exec /bin/sh \;这样的经典用法。 -
环境继承型:配置中
env_keep保留的危险环境变量可能被利用。最典型的是LD_PRELOAD,
