捕获任意文件有多安全?

捕获任意文件有多安全?

有时,当我cat错误地输入二进制文件时,我的终端会出现乱码。没有什么是快速reset修复不了的,但是攻击者理论上不能创建一个文件,当该文件显示在终端上时,该文件会执行一些任意代码吗?通过终端仿真器或其他方式中的漏洞利用。

答案1

此类输出是否可以被利用取决于终端程序,以及终端根据所发送的转义码执行的操作。我不知道终端程序具有此类可利用的功能,现在唯一的问题是是否存在未知的缓冲区溢出或类似的情况,可以被利用。

对于一些较旧的hardware终端,这可能是一个问题,因为您通过在硬件中存储该键的命令序列来编程例如具有此类转义序列的功能键。您仍然需要按物理按键来激活它。

但总有(正如 Hauke 正确地标记为“脑死亡”的那样)人们愿意添加这样的功能,如果它能为他们解决问题,而不是理解他们创造的漏洞。根据我使用开源软件的经验,由于有很多人关注代码,因此与闭源软件相比,这种情况不太可能发生。 (我记得在 Silicon Grahpics 的 Irix 上的邮件程序中,在 9 世纪中期,您可以包含要在接收器计算机上执行的命令、可执行文件的真实路径,......)

答案2

如果大多数终端模拟器收到某些转义序列,它们将发回一些响应(看看xterm 控制序列文档)。例如,您可以发送\e[0c到类似 VT100 的模拟器,它会发回设备属性,例如\e[?1;2c (这可能是 Keith 观察到的。)但这些答案不是任意字符串。尽管如此,2c在系统中的某处指定一个执行致命操作的可执行文件并不是一个好主意。

更新:由于可以设置 xterm 窗口的标题,风险实际上比我想象的要大并发回标题使用适当的转义序列(http://www.securityfocus.com/bid/6940/)。与上面的示例相反,标题几乎可以是任意字符串。

答案3

这会更改 GNOME Terminal 3.6.1 中的终端标题,除非被类似的内容覆盖PS1:

printf "\033]2;Script Kiddie was here\007"

现在打开一个新的 GNOME 终端窗口来测试版本cat

printf "\033]2;Script Kiddie was here\007" > test.bin
cat test.bin

是的,这也设置了终端标题。

曾经存在一个安全问题导致标题打印到命令行的转义码,这样你就可以有效地创建一个文件,当cated 时会打印(我不确定你是否可以在其中添加换行符)任意命令。哎哟!

答案4

我确实经历过xterm将任意字符插入到自身中,就像我键入它们一样。有时这显然包括换行符,所以我得到了ngwerm:0riu: command not found回应。我看不出为什么有人不能制作一个可以发送特定的有害命令的文件。所以,是的,至少某些终端容易受到任意影响的攻击。

相关内容