xss跨站攻擊

xss就是cross site script的縮寫

爲什麼不縮寫爲css,是因爲,css這個名字已經被層疊樣式表(Cascading Style Sheets)給佔用了.所以xss就用了cross的諧音x作爲字母c的替代,就成了xss.

重點來了爲什麼要跨站,直接去攻擊不好麼?,跨站,到底跨的是哪個站點?
①爲什麼要跨站?
因爲現在這個年代,充斥着形形色色的騙局,人們也都經歷過太多的騙術,遇到過各式各樣的騙子和騙財騙色騙感情等等諸如此類的事情,再加上主流媒體的曝光,人們就積累了大量的防騙知識,也具備了防騙意識.因此,對於攻擊者來說,出現一個很棘手的問題,那就是用戶不好騙了,你給用戶的惡意地址(可以是郵件這種方式把惡意地址投遞給用戶),用戶可能就不大會像過去一樣毫無防備的點開看了.而且惡意地址長的也和正規網站不一樣,很容易被用戶識破.
那怎麼辦,如何讓用戶心甘情願去點惡意地址從而上當受騙呢?答案是不管怎麼騙如何騙,首先必須取得用戶的信任,而騙子本身是毫無誠信可言的,但"用戶常去的網站"對用戶來說是可信的,所以騙子就瞄準了"用戶常去的網站",借"用戶常去的網站"之手把攻擊者的惡意代碼(也就是以被用戶信任的網站的名義)轉交給用戶,用戶就不會那麼戒備了,而且從(被用戶信任的服務器)返回的帶有惡意代碼的結果,用戶也深信不疑的使用,這樣就中招了.
但是"用戶常去的網站"是不會做這種壞事的,是不會給用戶發送惡意代碼的,這就需要攻擊者想辦法利用各種漏洞先去欺騙"用戶常去的網站",讓其去做這個惡事情,說白了就是借"用戶常去的網站"之手,把惡意代碼發送給用戶,然後用戶就會毫無戒備的去點擊自己信任的網站返回給自己的頁面而中招,最終達到攻擊者不可告人之目的,這就是跨站的原因.
②跨站,到底跨的是哪個站點?
通過上面的描述,就很清楚了,因爲直接去攻擊(比如給用戶發送個釣魚郵件什麼的)用戶不大會奏效,加上用戶終端會安裝有各種殺軟防火牆啥的,攻擊者就更不容易得手了,所以,攻擊者逼不得已只能選擇另外一個途徑,就是跨站攻擊,而跨站,跨的就是用戶常去的那個被用戶很信任的那個網站,而非直接攻擊用戶.這就是跨站攻擊,





跨站攻擊xss的實現和http通信過程有直接的關係,

http通信的原理:客戶端/服務器模式(c/s model),客戶端使用的瀏覽器(以下簡稱browser)向網站服務器(以下簡稱server)發出想查看某個web頁面的請求(是一串http代碼,這串http的代碼專業術語叫request),server收到browser送來的請求後,去自己的網站數據庫裏找到browser想要的web頁面,然後通過響應(也是一串http代碼,專業術語叫response)送回給browser,最後,browser經過解釋和翻譯,將response這段http代碼變成web頁面展現給客戶端的用戶,

舉個例子:
browser要看server的index.html頁面,會發送request,如下:

GET /index.html HTTP/1.0

server找到index.html後,返回給browser一個response,如下:

<HTML>
Welcome to index.html
...
< /HTML>

但如果,攻擊者把request給改了,browser發給server的可就是帶有惡意代碼的request了,這樣server返給browser的response也是帶着惡意代碼的,但這個帶有惡意代碼的response是server(也就是用戶常去的那個被用戶深信不疑的那個網站)給用戶返回的web頁面(因爲這個頁面是由response生成的,所以也就自然帶着response裏的惡意代碼了),那麼最終用戶也會毫不遲疑的運行這些惡意代碼,就中招了.
拿上面的正常的request舉例,如下:
插入惡意代碼 <script>alert(document.cookie)</script>到正常的request中,

GET /index.html  <script>alert(document.cookie)</script>  HTTP/1.0

然後,server收到browser送來的請求後,去自己的網站數據庫裏找到index.html,
並返回給browser一個帶有惡意代碼的response,如下:

<HTML>
 <script>alert(document.cookie)</script>
 Welcome to index.html
 ...
< /HTML>

然後,這段惡意代碼 <script>alert(document.cookie)</script>的作用是獲取browser正在使用的各種cookie,獲取了cookie之後無非再寫幾個代碼就可以到攻擊者手裏了,或者更直接一點,把攻擊者的惡意網站的地址放web頁面裏,用戶也會毫不知情和深信不疑的點進去.

簡單點的理解,server返回的web頁面由兩部分組成,Ⅰ是用戶想要的web頁面index.html,Ⅱ是攻擊者加進來的惡意代碼<script>alert(document.cookie)</script>,也就是說,server會響應一切browser的請求.要什麼給什麼.

改request這個活兒有兩種方式:
①反射型,生成一個訪問被跨的站點的request(內有惡意代碼)放到被跨的站點上,誘導用戶點擊,便從brower生成了一個毒request送給server.然後server返回給browser一個毒response,然後就沒有然後了.
②存儲型,攻擊者在server上放一個毒request,用戶點擊直接中招.

跨站的精髓:就是跨,即讓用戶信賴的網站,把帶有惡意代碼的web頁面給用戶.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章