卧槽?运行 ping 命令执行结果的却是 rm -rf,我太难了……

617 阅读3分钟

自从学了编程 QQ 从未被盗,这莫非是以为自己百毒不侵了呢?看完这篇文章后你细品品,没准就中过招,真是细思极恐。

大家肯定都用过知乎,当复制内容超过一定字数会自动追加一个末尾,用于申明版权,那么你是否有想过你在网站复制的命令也被修改过?

图1
图1
图2
图2

比如我们随便找一篇 Ubuntu 安装 MySQL 的文章,找到里面的具体命令,大多数人都会直接复制,很少自己手动敲的。直接复制下面的命令到命令直接回车,然后正常运行成功了。

apt install mysql-server

我们继续探究这个问题,我找到了一个测试网址,域名如下,你可以复制粘贴到浏览器里面自己测试。
https://clipboard-hijack.github.io/

网页上面有一个 ping baidu.com 的命令,就是一个非常简单的测试网络连接的命令。我们直接复制下来粘贴到命令行。

看起来一切正常,光标在最后吗,我们直接回车出现如下内容,看起来也是非常的正常。

这时候我们直接找一个记事本,我用的是 SublimeText,直接把现在还在剪切板里面的内容粘贴到记事本。

呀,老铁,这 ping baidu.com 前面怎么还有一堆内容呢?这时候我赶紧看了一下目录,果然出现了一个名字叫做 hijack 的文件,里面内容如下

这时候我们细品一下这个命令

  • 使用 echo > 把恐吓文字写入文件 hijack
  • 使用 history -d $(($HISTCMD-1)) 删除了命令历史,所以即便你用 history 也看不到刚才运行的命令
  • 最后使用 clear 把命令清除,所以如果你的命令行有内容就会发现输入了一个 ping baidu.com 命令把你的命令行清除了的现象。

就这样神不知鬼不觉的运行了一个命令,现在是演示只是写了一段内容到 hijack,那如果是上传云盘然后真的删除你的文件怎么办?那如果是 sudo rm -rf / 怎么办?没准你还傻傻的输入密码呢。

真是细思极恐啊,我回过神看了一下刚才网址的源码。其实实现起来还是很简单,直接监听一下 copy 事件然后拼接字符串就好了。虽然学到了,但是咱们不能做坏事哈。

问题都知道了,可是怎么避免呢?

找了半天终于发现了一个 Chrome 插件,叫做 万能复制(Enable Copy),其他的复制插件都是直接复制内容,这个有一个特定的弹出框用来确定所选择的内容,这样就可以二次检查了。还是回到那个测试的网址,安装插件成功以后,点击插件 icon,鼠标悬浮选中文本,按 C 进行复制。

这次内容就复制对了,除了 ping baidu.com 什么也没有,不过这个插件复制正常内容的时候就显得繁琐了,所以我只在复制命令的时候开启,多一层保障。

所以这个技能你 Get 了吗?

插件地址
chrome.google.com/webstore/de…
测试网站地址
clipboard-hijack.github.io/