4.1 Cross-Site Scripting (XSS)


 XSS基本

 XSS為Cross-site scripting的縮寫,為使與CSS(Cascading Style Sheets)區分,所以將Cross改以發音相近的X做為縮寫。

 XSS為一種是網站應用程式的安全漏洞攻擊,允許惡意使用者將程式碼注入到網頁上,其他使用者在觀看網頁時就會受到影響。這類攻擊通常包含了HTML以及使用者端腳本語言。

 攻擊分類:

偷 cookie

利用 iframe 或 frame 存取管理頁面或後台頁面。

利用 XMLHttpRequest 存取管理頁面或後台頁面。

 DOM manipulation (DOM 操縱控制)

 SCRIPT execution 

 Event-driven XSS in DOM


 Define:

 input provide to a program by one user  >> output to another user

 意思是  input 字串  >> output 字串

 input 惡意程式 >> output 惡意程式


 XSS 分類

 

 XSS TYPE 0  (local XSS) >> 主要是browser的弱點

 

Alice傳給Bob一個惡意網站的連結,Bob點了這個未知的連結之後

惡意網站就在Bob的電腦上安裝執行惡意的script

Alice的惡意script就可以在Bob的電腦上執行本來Bob就可以做的事!!

 

XSS TYPE 1 ( Reflected XSS)

 

小胖經常瀏覽老師的網站 , 這個網站有一些重要資訊(帳號密碼成績)

Allen發現老師的網站有Reflected XSS的漏洞

於是Allen寫了一個利用這個漏洞的連結 , 然後假裝是老師傳了一封Email給小胖

小胖就用Allen傳送的連結 , 連到了老師的網站不過這時候小胖已經中獎了

注入到連結中的惡意Script在小胖的browser中執行 , 然後在小胖在完全不知情的情況下

將一些訊息送到Allen的手上

 

XSS   TYPE  2  (stored / second - order XSS)

 

現在有一個網站 可以讓使用者發布訊息讓其他人瀏覽

這時小胖注意到這個網站有stored XXS漏洞

小胖在網站上放了一個訊息(期末考題目)吸引大家點選瀏覽

這時候只要任何人點選瀏覽訊息 , 他的cookie資訊就被小胖盜走了

因為這斷訊息中隱藏著惡意的script

如果這段訊息帶著病毒 那點選瀏覽的人就中獎了

 

XSS and Serialization >> 傳遞資料 變成串流 和 XSS的關係

 

XSS with JSON

1 . JavaScript 注入道串流裡面(惡意script 之類) , 執行之後可以去存取

     document.cookie 或是其他的事情 , 像是 keyboard 紀錄 等等

2. Email 的參數如果變成DOM的一部分 , 加在 <div> tag 裡面 也可以變成 javascript

基本上只要可以 injected進去 其他事情都好說 (重點是 進不去= =)

例子都在投影片上


XSS with XML

基本上和JSON類似

PS 任何 XML tag都可以被注入惡意script

     你只需要用 eval, innerHTML, or document.write calls

 

XSS和一般針對網頁程式攻擊的差異

 

主要的不同點在於XSS主要是攻擊瀏覽該網站的電腦及使用者,而非該網站本身.因此使用者常常會因信任該網站,卻無意間執行了此惡意的程式碼,因為網路上總是將這些指令碼改成HTML的資料,所以網站並不會出現任何的錯誤訊息,也造成了網站管理者不容易發覺這行惡意的指令(因為大部分的網站並不會去檢查使用者所輸入的指令是否為惡意的指令,只會將他轉成HTML)

 

最後附上兩個連結 國外的影片 用動畫來解是 XSS 英文語音 英文字幕 簡單易懂

http://www.virtualforge.de/vmovie/xss_lesson_1/xss_selling_platform_v1.0.html
http://www.virtualforge.de/vmovie/xss_lesson_2/xss_selling_platform_v2.0.html