伪终端绕过tty限制
2026-02-28 00:00:00 # Linux提权

过程复现

记一道CTF题目的sudo提权方法,伪终端绕过tty限制

获取权限的步骤省略,直接

image-20260228135432050

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

image-20260228135642395

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

image-20260228140041866

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权限

image-20260228142227750


分析

这里可以看到直接执行sudo -n whoami这个命令还是不行,返回了sudo: sorry, you must have a tty to run sudo

因为在/etc/sudoers文件当中,设置了requiretty,是 sudo 的一个安全选项:必须在真实终端(TTY)环境下才能运行sudo

image-20260228143706363

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

image-20260228144412320

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

上一页
2026-02-28 00:00:00 # Linux提权