什么是XSS攻擊?
前言
隨著互聯網的不斷發展,web應用的互動性也越來越強。但正如一個硬幣會有兩面一樣,在用戶體驗提升的同時安全風險也會跟著有所增加。今天,我們就來講一講web滲透中常見的一種攻擊方式:XSS攻擊。
什么是XSS攻擊
先上一段標準解釋:
“XSS是跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。惡意攻擊者往Web頁面里插入惡意Script代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的Script代碼會被執行,從而達到惡意攻擊用戶的目的。”
相信以上的解釋也不難理解,但為了再具體些,這里舉一個簡單的例子,就是留言板。我們知道留言板通常的任務就是把用戶留言的內容展示出來。正常情況下,用戶的留言都是正常的語言文字,留言板顯示的內容也就沒毛病。然而這個時候如果有人不按套路出牌,在留言內容中丟進去一行
<script>alert(“hey!you are attacked”)</script>
那么留言板界面的網頁代碼就會變成形如以下:
<html> <head> <title>留言板</title> </head> <body> <div id=”board” <script>alert(“hey!you are attacked”)</script> </div> </body> </html>
那么這個時候問題就來了,當瀏覽器解析到用戶輸入的代碼那一行時會發生什么呢?答案很顯然,瀏覽器并不知道這些代碼改變了原本程序的意圖,會照做彈出一個信息框。就像這樣。
XSS的危害
其實歸根結底,XSS的攻擊方式就是想辦法“教唆”用戶的瀏覽器去執行一些這個網頁中原本不存在的前端代碼。
可問題在于盡管一個信息框突然彈出來并不怎么友好,但也不至于會造成什么真實傷害啊。的確如此,但要說明的是,這里拿信息框說事僅僅是為了舉個栗子,真正的黑客攻擊在XSS中除非惡作劇,不然是不會在惡意植入代碼中寫上alert(“say something”)的。
在真正的應用中,XSS攻擊可以干的事情還有很多,這里舉兩個例子。
竊取網頁瀏覽中的cookie值
在網頁瀏覽中我們常常涉及到用戶登錄,登錄完畢之后服務端會返回一個cookie值。這個cookie值相當于一個令牌,拿著這張令牌就等同于證明了你是某個用戶。
如果你的cookie值被竊取,那么攻擊者很可能能夠直接利用你的這張令牌不用密碼就登錄你的賬戶。如果想要通過script腳本獲得當前頁面的cookie值,通常會用到document.cookie。
試想下如果像空間說說中能夠寫入xss攻擊語句,那豈不是看了你說說的人的號你都可以登錄(不過某些廠商的cookie有其他驗證措施如:Http-Only保證同一cookie不能被濫用)
劫持流量實現惡意跳轉
這個很簡單,就是在網頁中想辦法插入一句像這樣的語句:
<script>window.location.href="http://www.baidu.com";</script>
那么所訪問的網站就會被跳轉到百度的首頁。
早在2011年新浪就曾爆出過嚴重的xss漏洞,導致大量用戶自動關注某個微博號并自動轉發某條微博。具體大家可以自行百度。