5. LAB:Cross Site Scripting

第七組:

資工四乙 401262558 廖宜楷

資工四乙 401262572 蔡旻倫

資工四乙 401262601 何子青

 

大綱

  LAB: Cross Site Scripting(跨網站指令碼)

  • Stage 1: Stored XSS  
  • Stage 2: Block Stored XSS using Input Validation
  • Stage 3: Stored XSS Revisited  
  • Stage 4: Block Stored XSS using Output Encoding  
  • Stage 5: Reflected XSS  
  • Stage 6: Block Reflected XSS

      使用工具:

  • Stage1、Stage3、Stage5(For non-developers):利用script語法直接在網頁上做攻擊
  • Stage2、Stage4、Stage6(For Developers):透過Eclipse修改代碼做防範

    

What's Cross-site scripting?
      跨網站指令碼(Cross-site scripting,通常簡稱為XSS或跨站指令碼或跨站指令碼攻擊)是一種網站應用程式的安全漏洞攻擊,是代碼注入的一種。它允許惡意使用者將程式碼注入到網頁上,其他使用者在觀看網頁時就會受到影響。這類攻擊通常包含了HTML以及使用者端腳本語言。

引用自維基百科:https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC

 

Stage 1: Stored XSS  

Lesson:如何執行Cross Site Scripting (XSS)

General Goal(s):stored and reflected XSS attacks

Solution:

 

(圖一)利用Tom使用者的帳號密碼登入

(圖二)點選ViewProfile修改Tom的基本資料

(圖三)選擇其中一項message欄位做修改(上圖使用street欄位)

(圖四)利用<script>alert('Hello');</script>語法修改欄位

(圖五)修改成功!!

(圖六)利用另外一組Jerry使用者帳號密碼登入

(圖七)查詢Tom被修改後的資訊

(圖八)Tom基本資料被做竄改

 

Stage 2: Block Stored XSS using Input Validation

Lesson:如何執行Cross Site Scripting (XSS)

General Goal(s):如何做stored and reflected XSS attacks的基本防範

Solution:

              This validation allows following:
              \s = whitspace: \t\n\x0B\f\r
              \w = word: a-zA-Z_0-9
               and the characters - and ,其它符號將會視為無效

(圖九)更改UpdateProfile.java中的代碼

 

Stage 3: Stored XSS Revisited

Lesson:如何執行Cross Site Scripting (XSS)

General Goal(s):Execute a previously Stored Cross Site Scripting (XSS) attack

Solution:

(圖十)利用David使用者的帳號密碼登入

(圖十一)查看Bruce的基本資料

(圖十二)David在查詢Bruce的基本資料後,被預先設定好的XSS攻擊

 

Stage 4: Block Stored XSS using Output Encoding

Lesson:如何執行Cross Site Scripting (XSS)

General Goal(s):Prevent a previously Stored Cross Site Scripting (XSS) attack

Solution:

 (圖十三)在ViewProfile.java中的getEmployeeProfile method,把所有的answer_results.getString(someString)替換成編碼過的          

            HtmlEncoder.encode(answer_results.getString(someString)) 

 

Stage 5: Reflected XSS

Lesson:如何執行Cross Site Scripting (XSS)

General Goal(s):Execute a Reflected XSS attack

Solution:Use a vulnerability on the Search Staff page to craft a URL containing a reflected XSS attack

 

(圖十四)利用Larry使用者的帳號密碼登入

 (圖十五)在搜尋欄打上<script>alert("Dangerous");</script>語法

(圖十六)修改成功!!

 

Stage 6: Block Reflected XSS

Lesson:如何執行Cross Site Scripting (XSS)

General Goal(s):Prevent a Reflected XSS attack

Solution:Block Reflected XSS using Input Validation

(圖十七)類似於Stage 2的方法,在FindProfile.java中做修改,限定特殊符號防止script語法

 

參考資料:http://webappsecmovies.sourceforge.net/webgoat/#Cross_Site_Scripting