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頁面給用戶.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/237190.html
標籤:其他
上一篇:2020-12-17:java和go,如何高效的拼接字串?
下一篇:2020-12-18
