1. 为什么sudo会成为CTF赛题的常客
在各类CTF竞赛中,权限提升(Privilege Escalation)始终是高频考点。而sudo作为Linux系统中管理特权操作的"守门人",其复杂的配置机制和丰富的功能选项,为出题人提供了绝佳的发挥空间。我参加过数十场CTF赛事,发现近70%的Linux系统权限提升题目都与sudo配置相关。
sudo本质上是个"特权委托系统",它允许普通用户以root或其他用户身份执行命令。其核心配置文件/etc/sudoers中,每个授权规则都包含:用户/用户组、主机、目标用户、可执行命令四个维度。正是这种多维度的灵活性,使得配置不当可能产生致命漏洞。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. sudoers配置的魔鬼细节
2.1 危险的NOPASSWD标签
最常见的漏洞模式是滥用NOPASSWD标签。比如这样一条规则:
bash复制user1 ALL=(ALL:ALL) NOPASSWD: /usr/bin/find
这意味着user1可以不输入密码直接以任意用户身份执行find命令。表面看只是开放了文件查找功能,实则暗藏杀机。因为find命令支持-exec参数执行任意命令,攻击者可以构造:
bash复制sudo find /home -exec /bin/sh \;
瞬间获得root shell。我在某次线下赛就靠这个技巧3秒内拿到flag。
2.2 被忽视的命令通配符
另一个典型陷阱是命令路径中使用通配符。例如:
bash复制user2 ALL=(root) /usr/bin/less /var/log/*
粗看只允许查看日志文件,但less有个鲜为人知的功能:输入!command可以执行系统命令。通过:
bash复制sudo less /var/log/auth.log
然后在less界面键入!/bin/sh,直接跳出root权限的shell。这种漏洞在老旧系统中尤其常见。
3. 实战中的高阶利用技巧
3.1 环境变量注入攻击
当sudo配置允许继承环境变量时(env_keep选项),危险系数直线上升。某次比赛中遇到这样的配置:
bash复制Defaults env_keep += "LD_PRELOAD"
user3 ALL=(ALL) /u
