和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
当我编辑source.list时,我会发现类似以下内容:
deb http://ppa.launchpad.net/some-ppa/
和
deb http://ppa.launchpad.net/a_suspicious_some-ppa/
问题是第二个ppa
deb http://ppa.launchpad.net/a_suspicious_some-ppa/
是在未经我允许的情况下自动添加的。如您所见,有一个看不见的部分。它没有出现在我的终端上。
从终端中不受信任的网站复制和粘贴的风险是什么,以及如何修复我的操作系统?
#1 楼
网站可以附加到剪贴板上风险就是您所说的那样。绝对有可能将恶意命令附加到剪贴板。
您甚至可以附加
&& rm -rf /*
(仅在第一个命令成功时执行)或; rm -rf /*
(即使第一个命令不成功也执行)并附加某些UEFI设备。您还应该在此主题中查看Michael的帖子,以获得另一个示例。
最后,这实际上取决于特定邪恶的“黑客”的创造力和恶意程度。
但是如何使命令“不可见”在终端中?“
方法一
echo test;echo insert evil here;clear;echo installing package
执行顺序:
回声“测试”发生了
回声“在这里插入邪恶”发生了
动作被“清除”了
意图的动作在这里发生了,但是您看不到其余的内容。
/>
...
您可以尝试在终端窗口中向上滚动以查找其余部分。
方法二
/>
stty -echo
tput smcup
这将使终端无法显示您输入的内容,因此它根本不会出现在终端窗口中。
您可以这样尝试:
stty -echo;tput smcup;echo evil commands
expected command
这只是两个非常粗糙的示例,但显示了可以对命令进行混淆的潜力。除非隐藏的命令专门删除/修改,否则它可能不会从〜/ .bash_history隐藏。 y它的内容。
您应该假定还有其他方法。
缓解措施
我建议使用附加组件禁用剪贴板操作。不幸的是,有很多方法可以解决这个问题,所以我建议在将它粘贴到终端或任何地方之前,将所有内容粘贴到GUI文本编辑器中。
您需要验证自己在做什么。如果您不理解每个单独的命令,则应使用Google进行搜索。这是适当的锡纸,因为复制和粘贴会强制命令在许多Linux风格上自动执行。
修复Linux安装
您可能没有不知道兔子洞有多深。除非您有时间和精力投入其中,否则除非您有重要文件,否则我建议您只是从轨道上挪一下。如果您有重要文件,只需备份不可执行的内容(没有pdf,文档等),然后从轨道上核取。
如果有PDF,则可以将PDF转换为后脚本,或将内容复制并粘贴到文本文件中。对于文档,请复制并粘贴文本,然后再设置格式。
评论
但是在所有这些情况下,网站都会在剪贴板中放置实际的纯文本。因此,粘贴后,您将看到真实的命令。 OP表示添加/更改的命令在粘贴的终端窗口中不可见。
–JDługosz
16年2月14日在20:20
@JDługosz如果有换行符,它将立即在您的终端中运行。谁在乎您是否可以看到它。损坏已经完成。
–尼尔·麦圭根(Neil McGuigan)
16-2-14在20:40
终端部分的内容不错,尽管我应该指出,通常没有办法真正禁止将废话粘贴到剪贴板。即使假定该应用程序(在此为浏览器)是受信任的,并且不提供不信任的主体以编程方式篡改剪贴板的API,站点仍可以使用巧妙的CSS技巧在包含使用用户假定字体渲染的文本的背景图像上选择一些不可见的文本在飞行中。
–史蒂夫·多迪尔·拉扎罗
16年2月14日在23:07
@SteveDL / sadface。至少现在我知道我的锡纸剪贴板实践在所有这些年中确实得到了回报。实际上,我什至在将其放置在任何地方之前都已验证剪贴板中的所有内容。
–马克·布法罗(Mark Buffalo)
16-2-14在23:15
@MarkBuffalo :-)我建议技术人员使用“缓冲区”(又名文本编辑器),并验证他们对逐行键入的内容满意。初学者..鉴于那里的攻击数量很少,而且这种细节可能导致混乱的程度,我会说“只要复制您喜欢的任何东西,但要从受信任的站点粘贴”。
–史蒂夫·多迪尔·拉扎罗
16年2月14日在23:17
#2 楼
有风险。网站可以使用CSS和JavaScript隐藏内容,然后从该网站复制内容时,实际上就是复制了他们想要的内容。 @Gumbo提供了示例:https://thejh.net/misc/website-terminal-copy-paste。解决方法:不要从您不信任的网站复制和粘贴。或访问他们。
评论
真可怕
–马克·布法罗(Mark Buffalo)
16年2月14日在19:53
不是吗
–h4ckNinja
16年2月14日在23:08
-1(表示不访问网站)。
– Eugene Ryabtsev
16年2月15日在5:25
好主意是不信任任何人。我们不应该劝阻人们而不是探索“网络”,而应该劝阻人们不要对他们阅读的内容持“我特此信任你”的态度(而人们的浏览器不要对打开的一切持相同的态度)。我第一次相信SE是Google向我推荐的吗?一定不行!我现在要吗?好...
– Eugene Ryabtsev
16年2月15日在6:08
不太可怕的选择是,不要直接从网站复制并粘贴到终端上,而是先将其粘贴到文本编辑器中并进行查看。我认为这是一个很明显的补救办法。
–克里斯·约翰逊(Chris Johnson)
16-2-15在19:01
#3 楼
是的,从不受信任的网站剪切和粘贴命令可能很危险。您粘贴的文本将始终包含您复制的文本,但是在此之前,之间或之后可以有更多文本。在网页上,此操作由CSS完成。只是使多余的文本不可见。仍将被复制。
将其粘贴到终端中时,将显示多余的文本。但是,如果包含换行符,它将立即执行并造成损害。此外,它可以包含清除多余文本的命令。
为避免危险,请将文本粘贴到文本编辑器中。看看然后将其从编辑器复制到终端。
...只需确保对命令的了解足够,以至于它是安全的。粘贴未知命令的另一个危险是您可能根本不了解自己在做什么。
评论
优秀的实用评论。我对受训人员的口头禅是:了解网页比查找网页更重要。通常会出现错误,缺少关键的步骤,或者它实际上并不适用于您所需要的。
– Rui F Ribeiro
16年2月15日在8:55
粘贴到文本编辑器中是一个很好的通用规则,因为即使是意图良好的浏览器中意图良好的站点也可以复制换行而不会变得很明显,并且您可能还希望编辑代码。它可能会也可能不会防止与字符编码有关的恶意或错误,具体取决于编辑器的尝试程度。
–克里斯H
16年2月15日在8:55
(让你们俩都起来)
– Rui F Ribeiro
16年2月15日在8:55
斯蒂格,我不同意“粘贴的文本将始终包含您复制的文本”这一概念。
–鹿猎人
16年2月15日在9:29
您不需要实际的文本编辑器。如果您不信任要粘贴的内容,请运行cat,以便将其粘贴到其stdin中。或者cat> / dev / null,如果它再次被cat写入时会引起太多混乱。如果粘贴包含嵌入式ctrl-D或ctrl-C,这可能仍然很危险。如果直接粘贴到外壳中,那么退出cat的任何事情都不可能做有用的事情。嗯,也许是从cat \ n开始的,如果已经在cat中,它什么也不会做...所以这不是绝对安全的,但是比做太多工作要好。
– Peter Cordes
16年2月15日在20:53
#4 楼
除了上述出色的答案之外,我还要补充一点,除了恶意目的之外,由于字符编码,从网站或PDF复制和粘贴也存在问题。您可能会认为您正在粘贴一组字符,并且由于字符编码,粘贴不同的东西,并且遇到难以跟踪的问题。
syslog无法启动
从线程开始,OP认为他已粘贴:
file("/var/log/cisco/cisco.log");
但实际上,他粘贴了以下内容:
file(▒~@~\/var/log/cisco/cisco.log▒~@~]);
评论
值得注意的是:github.com/reinderien/mimic-可以防止可怕的复制粘贴的可怕事情。
–鹿猎人
16-2-14在21:02
我发现PDF存在这个问题,但网站却没有。
– Jesvin Jose
16年2月15日在13:26
谢谢@aitchnyu的注意,它被牢记。我将其添加到答案中。
– Rui F Ribeiro
16-2-16在11:45
评论
通过擦拭磁盘并重新安装操作系统即可完成修复。解决方案:使用山猫。没有JavaScript,那里没有CSS怪胎。
这是一个示例:thejh.net/misc/website-terminal-copy-paste
使用浏览器插件来禁用对复制缓冲区的访问。 :)
大多数答案可以解决您的直接问题。但是,如果您正在学习Linux命令行,则建议您自己键入命令。肌肉记忆肯定会有所帮助,而且您还必须从头开始构建大型命令管道。 github.com/jlevy/the-art-of-command-line是一个很好的起点。还有另一个有用的命令:github.com/p-e-w/maybe当然,如果您想用脚开枪射击,没有预防措施可以消除这种危险...