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

共 1876字,需浏览 4分钟

 ·

2020-12-20 12:24

往期热门文章:

1、为什么我决定要放弃 okhttp、httpClient?

2、再见了SpringMVC,这个框架有点厉害,甚至干掉了Servlet!

3、推荐一款国产开源监控系统,太强大了!!

4、如何写出让同事无法维护的代码?

5、把 Spring Cloud 给拆了!详解每个组件的作用

自从学了编程 QQ 从未被盗,这莫非是以为自己“百毒不侵”了呢?看完这篇文章后你细品品,没准就中过招,真是细思极恐啊。
大家肯定都用过知乎,当复制内容超过一定字数会自动追加一个尾巴,用于申明版权,那么你是否有想过你在网站复制的命令也被修改过?
图1
图2
再比如我们随便找一篇 Ubuntu 安装 MySQL 的文章,找到里面的具体命令,大多数人都会直接复制,很少自己手动敲的。复制下面的安装命令到命令行直接回车,然后正常运行成功了。
apt install mysql-server
我们继续探究这个问题,我找到了一个测试网址,域名如下,你可以复制粘贴到浏览器里面自己测试,很多惊喜的。
https://clipboard-hijack.github.io/
网页上面有一个 ping baidu.com 的命令,就是一个非常简单的测试网络连接的命令。我们直接复制下来粘贴到命令行。
看起来一切正常,光标在最后,我们直接回车出现如下内容,看起来也是非常的正常。
这时候我们直接找一个记事本,我用的是 SublimeText,直接把剪切板里面的内容粘贴到记事本。
妈呀,老铁,这 ping baidu.com 前面怎么还有一堆内容呢?这时候我赶紧看了一下目录,果然出现了一个名字叫做 hijack 的文件,里面内容如下
这时候我们细品一下这个命令
  • 使用 echo > 把恐吓文字写入文件 hijack
  • 写完第一个命令添加 \n 这样我们粘贴命令的时候会自动换行,效果等同于回车,所以命令会自动执行。
  • 使用 history -d $(($HISTCMD-1)) 删除了命令历史,所以即便你用 history 也看不到刚才运行的命令。
  • 最后使用 clear 把命令清除,所以如果你的命令行有内容就会发现输入了一个 ping baidu.com 命令把你的命令行清除了的现象。
就这样神不知鬼不觉的运行了一个命令,现在演示的只是写了一段内容到 hijack,那如果是上传云盘然后真的删除你的文件怎么办?那如果是 sudo rm -rf / 怎么办?没准你还傻傻的输入密码呢。
真是细思极恐啊,回过神看了一下刚才网址的源码。其实实现起来还是很简单的,直接监听一下 copy 事件然后拼接字符串就好了。
虽然学到了,但是咱们不能做坏事哈。
好,那么问题都知道了,可是怎么避免呢?
找了半天终于发现了一个 Chrome 插件,叫做 万能复制(Enable Copy),其他的复制插件都是直接复制内容,这个有一个特定的弹出框用来确定所选择的内容,这样就可以二次检查了。还是回到那个测试的网址,安装插件成功以后,点击插件 icon,鼠标悬浮选中文本,按 C 进行复制。
这次内容就复制对了,除了 ping baidu.com 什么也没有,不过这个插件复制正常内容的时候就显得繁琐了,所以我只在复制命令的时候开启,多一层保障。
所以这个技能你 Get 了吗?点击阅读原文直接查看测试代码。
插件地址
https://chrome.google.com/webstore/detail/igbahmkffbagkepelepkldjiknhbklga
测试网站地址
https://clipboard-hijack.github.io/
最近热文阅读:

1、为什么我决定要放弃 okhttp、httpClient?
2、再见了SpringMVC,这个框架有点厉害,甚至干掉了Servlet!
3、推荐一款国产开源监控系统,太强大了!!
4、把 Spring Cloud 给拆了!详解每个组件的作用
5、牛逼了!这款软件几乎可以操作所有数据库!
6、Feed流系统设计
7、面试官:String长度有限制吗?是多少?还好我看过
8、Java 如何精确统计页面停留时长?
9、花30分钟,用Jenkins部署码云上的SpringBoot项目
10、为了甩锅,我写了个牛逼的日志切面!
关注公众号,你想要的Java都在这里

浏览 32
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报