1。 前言
關於 Web 安全的「貼上板安全」,能意識到安全風險的人並不多。大多數人認為這只是隱私安全,最多洩露當前複製的內容而已。或者就是用於一些小花招,例如自動複製淘口令然後喚起手淘這種惡意行為。
事實上,貼上板安全是非常重要的 —— 尤其是我們這些經常上網查資料的人。稍有不慎,系統都會被入侵!
2。 所見非所得
有沒有想過,當你選中一段文字複製後,粘貼出來的卻是不同的內容?
你肯定不希望這樣,但你一定遇到過。比如複製某帖子的時候,末尾會加上「出自作者 XXX」這種煩人的內容。
從技術上說,實現這種效果很容易。但是,你有沒有從安全形度考慮過這個問題?
比如,你從 Stack Overflow 上搜到的答案是
ping google。com
,一條人畜無害的命令,結果粘貼出來的卻是
sudo rm -rf /
,你看都沒看就敲下了回車。。。
也許你會說,正規的網站怎麼可能會開這種玩笑。但是,你能保證網站不出現 XSS 嗎?
也許你會說,我是一個仔細的人,命令粘貼後都會檢查下再執行。但是,這仍然晚了。。。
3。 貼上即執行
眾所周知,貼上多行命令時,Shell 會自動執行換行符前面的。例如:
echo 1echo 2
當你將其貼上到終端後,echo 1 已自動執行,敲下回車只是執行 echo 2 而已。
因此 XSS 完全可以將惡意命令放在第一行。你一貼上,它就自動執行了!
以後你還敢從網上隨意複製貼上命令嗎?
也許你在想,發現破綻後馬上 ctrl c 來得及嗎。來不及了,惡意命令完全可在後臺執行,等你找到的時候說不定木馬已經安裝好了。
甚至,你可能根本都沒發現破綻。。。
4。 隱蔽執行
為了讓惡意命令不留下痕跡,還可以在執行後再 clear。如果終端之前沒內容,你只是覺得螢幕好像閃了一下。如果之前有內容,現在一貼上突然變沒了,也許你會覺得奇怪,但你會不會深究?
也許你會調出上一個命令,或透過 history 看究竟執行了什麼。但是,惡意命令完全可以刪掉歷史記錄,讓你無從查證。
更進一步,惡意程式可將貼上板修改成正常內容,你去其他地方貼上看到的仍是預期內容。甚至,惡意程式還可以給網頁裡的 XSS 傳送命令,讓它以後不再劫持你了,讓你一時半會都復現不出來!(當然,貼上到遠端伺服器 ssh 的話無視這一步)
5。 結論
從網上覆制貼上命令風險很大。最好先貼上到記事本里檢查一下,然後再貼上到終端裡執行。