運行 ping 命令執行結果的卻是 rm -rf,我太難了……

自從學了編程 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/


推薦閱讀
面試題:InnoDB 中一棵 B+ 樹能存多少行數據?【面試不翻車,翻車就跑路】

我畫了35張圖就是爲了讓你深入 AQS

Map 集合怎麼也有這麼多坑?一不小心又踩了好幾個!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章