【发布时间】:2017-02-11 16:30:49
【问题描述】:
为了提供一些上下文,我正在尝试了解伪终端 (pty)。伪终端对用户进程(例如 bash)来说就好像它是真实的一样。这允许做各种好东西,如 telnet、ssh 等。
我的问题是,对于 telnet 之类的东西,是否可以只“执行”bash 并将标准输入和标准输出设置为远程客户端计算机的 tcp 连接。因为如果可以的话,那我就不完全理解使用伪终端的价值了
【问题讨论】:
为了提供一些上下文,我正在尝试了解伪终端 (pty)。伪终端对用户进程(例如 bash)来说就好像它是真实的一样。这允许做各种好东西,如 telnet、ssh 等。
我的问题是,对于 telnet 之类的东西,是否可以只“执行”bash 并将标准输入和标准输出设置为远程客户端计算机的 tcp 连接。因为如果可以的话,那我就不完全理解使用伪终端的价值了
【问题讨论】:
是的,这是可能的——事实上,这就是传统上针对网络服务的大量“shellcode”漏洞利用方式为攻击者提供了一个 shell——但您将无法像通常那样以交互方式控制它。这是因为套接字不是 tty。它不能将通过线路发送的字节转换为附加进程的信号(如^C、^Z 等),它不能将 EOF 作为数据发送,它不能进行作业控制(暂停^Z,在后台暂停输入等),它不能传达模式切换(规范/“熟”模式与原始模式)。
【讨论】: