今天我发现了一个有趣的例子网站终端复制粘贴。例如,您可能需要克隆 git 存储库。在网页上它看起来像:
git clone git://git.kernel.org/pub/scm/utils/kup/kup.git
但是当你将其复制到终端时它变成:
git clone /dev/null; clear; echo -n "Hello ";whoami|tr -d '\n';echo -e '!\nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust!
Here'"'"'s the first line of your /etc/passwd: ';head -n1 /etc/passwd
git clone git://git.kernel.org/pub/scm/utils/kup/kup.git
因为其余部分被隐藏了:
<p class="codeblock">
<!-- Oh noes, you found it! -->
git clone
<span style="position: absolute; left: -100px; top: -100px">/dev/null; clear; echo -n "Hello ";whoami|tr -d '\n';echo -e '!\nThat was a bad idea. Don'"'"'t copy code from websites you don'"'"'t trust!<br>Here'"'"'s the first line of your /etc/passwd: ';head -n1 /etc/passwd<br>git clone </span>
git://git.kernel.org/pub/scm/utils/kup/kup.git
</p>
当然可以是任何命令。所以我的问题是如何确保我们不会获得恶意代码。
从网站复制、粘贴到文本编辑器(显示非打印字符)、检查命令并复制粘贴到终端是否可以安全地避免此类攻击?
编辑:
可能最好的方法就是不要将网站上的任何内容直接粘贴到终端。检查一下这个案例:
<h1>Welcome on my tutorial site</h1>
<h3>Below code learn you how to use echo command. Copy both commands and paste it to your terminal</h6>
<hr/>
<p class="codeblock" >
<!-- Oh noes, you found it! -->
echo Line1;
<pre style="position: absolute; left: -100px; top: -100px">echo "Owned";</pre>
echo Line2;
</p>
<hr/>
当您将其复制并粘贴到终端时,命令 1 和隐藏将立即执行。您将没有机会在终端中检查它。
答案1
这取决于你想有多谨慎。但为了安全起见,你应该先确保自己理解命令,然后再自己输入。
如果您不信任该来源,请不要接受任何未经过净化的输入。