伪终端绕过tty限制
2026-02-28 00:00:00
# Linux提权
过程复现
记一道CTF题目的sudo提权方法,伪终端绕过tty限制
获取权限的步骤省略,直接

先sudo -l看一下,普通sudo无法提权

然后执行ps -ef查看是否有root权限运行的进程

1 | script -q -f -c bash -li -c "echo mRSUAlI | sudo -S -v >/dev/null 2>&1; sleep infinity" /dev/null |
这条命令用script启动一个伪终端(PTY),嵌套调用bash启动交互式终端,输出字符串 mRSUAlI作为sudo的密码,然后sudo -S -v从标准输入读取密码,不执行命令,只是验证并缓存sudo权限。
因为sleep infinity让这个会话保持了睡眠,所以复用这个语句仍然有sudo权限

分析
这里可以看到直接执行sudo -n whoami这个命令还是不行,返回了sudo: sorry, you must have a tty to run sudo
因为在/etc/sudoers文件当中,设置了requiretty,是 sudo 的一个安全选项:必须在真实终端(TTY)环境下才能运行sudo

所以受到限制的是tty环境,有了tty环境就可以利用缓存的sudo权限了

所以同样用script命令开一个伪终端,测试一下,发现成功执行了sudo命令。