从网站复制和粘贴 Linux 命令有什么风险?为什么有些命令是不可见的?

信息安全 恶意软件 隐私 病毒
2021-08-28 04:59:29

像 Linux 领域的所有初学者一样,我通常会寻找包含一些有用的 shell 命令的网站,用鼠标标记,复制 ( CTRL+ C) 并将其粘贴到终端中。

例如,如果我需要安装 package_name.deb

sudo apt-get install package_name.deb

我将提供我的 root 密码并安装 package_name.deb

当我将此命令粘贴到我的文本编辑器时,它将类似于:

sudo apt-get install package_name.deb && apt-get install suspicious_file.deb 

第二个例子,如果我想添加一个新的 ppa(终端)

sudo add-apt-repository ppa:some/ppa
sudo apt-get update

当我编辑我的 sources.list 时,我会发现类似:

deb http://ppa.launchpad.net/some-ppa/

deb http://ppa.launchpad.net/a_suspicious_some-ppa/

问题是第二个 ppadeb http://ppa.launchpad.net/a_suspicious_some-ppa/ 是在未经我许可的情况下自动添加的。

如您所见,有一个看不见的部分。它没有出现在我的终端上。

在终端中从不受信任的网站复制和粘贴有什么风险以及如何修复我的操作系统?

4个回答

网站可以附加到您的剪贴板

风险正是你所说的。绝对可以将恶意命令附加到剪贴板。

您甚至可以追加&& rm -rf /*(仅在第一个命令成功时; rm -rf /*执行),或(即使第一个命令不成功也执行)和砖某些 UEFI 设备

您还应该查看 Michael 在此线程中的帖子以获取另一个示例

最后,这真的取决于一个特定的邪恶“黑客”的创造性和恶意程度。


但是你怎么能让终端中的命令“不可见”呢?”

  1. 方法一

    echo test;echo insert evil here;clear;echo installing package
    

    执行顺序

    1. 回声“测试”发生
    2. 回声“在这里插入邪恶”发生
    3. 动作被“清除”
    4. 预期的动作在这里发生,但你看不到其余的。

    ...

    您可以尝试在终端窗口中向上滚动以查找其余部分。

  2. 方法二

    stty -echo 
    tput smcup
    

    这将禁止终端显示您正在输入的内容,因此它根本不会出现在终端窗口中。

    你可以这样尝试:

    stty -echo;tput smcup;echo evil commands
    expected command
    

这只是两个非常粗略的例子,但显示了可以做些什么来混淆命令的潜力。请注意,它可能不会从~/.bash_history中隐藏,除非隐藏的命令专门删除/修改它的内容。

您应该假设还有其他方法可以做到这一点。


减轻

我建议使用插件来禁用剪贴板操作不幸的是,有一些方法可以解决这个问题,所以我建议在将所有内容粘贴到GUI文本编辑器中之前,然后再将其粘贴到您的终端或任何地方。

你需要验证你在做什么。如果你不理解每个单独的命令,你应该谷歌它。这是正确的锡箔帽,因为复制和粘贴可以强制命令在许多 Linux 版本上自动执行。


修复 Linux 安装

你可能不知道兔子洞有多深。除非您有时间和精力投入其中,否则我建议您从轨道上进行核弹,除非您有重要文件。如果您有重要文件,只需备份不可执行的文件(没有 pdf、文档等),然后从轨道上核对。

如果您有 PDF,可以将 PDF 转换为 post-script,或将内容复制并粘贴到文本文件中。使用文档,复制并粘贴文本并稍后对其进行格式化。

有风险。网站可以使用 CSS 和 JavaScript 来隐藏内容,然后当您从该网站复制时,您实际上复制了他们想要的内容。@Gumbo 提供了示例:https ://thejh.net/misc/website-terminal-copy-paste 。

解决方法:不要从您不信任的网站复制和粘贴。或拜访他们。

是的,从不受信任的网站剪切和粘贴命令可能很危险。您粘贴的文本将始终包含您复制的文本,但在此之前、中间或之后可以包含更多文本。

在网页上,这是由 CSS 完成的。只需使多余的文本不可见。它仍然会被复制。

当您将其粘贴到终端中时,将显示额外的文本。但是,如果它包含换行符,它将立即执行并造成损坏。此外,它还可以包含清除多余文本的命令。

为了避免危险将文本粘贴到文本编辑器中。再看一遍。然后将其从编辑器复制到终端。

只是...确保您充分理解该命令,以确保您知道它是安全的。粘贴未知命令的另一个危险是您可能根本不了解自己在做什么。

除了上述出色的答案之外,我还要补充一点,除了恶意目的之外,由于字符编码,还存在从网站或 PDF 复制和粘贴的问题。

您可能认为您正在粘贴一组字符,并且由于字符编码,正在粘贴不同的内容,并且存在难以追踪的问题。

syslog 无法启动

从线程中,OP认为他已经粘贴了:

file("/var/log/cisco/cisco.log");

但实际上他粘贴了这样的内容:

file(▒~@~\/var/log/cisco/cisco.log▒~@~]);