跨站指令碼攻擊測試



跨站指令碼攻擊(XSS)發生在應用程式獲取不受信任的資料並將其傳送到客戶端(瀏覽器)而無需驗證的情況下。這允許攻擊者在受害者的瀏覽器中執行惡意指令碼,這可能導致使用者會話被劫持、網站被篡改或使用者被重定向到惡意網站。

讓我們藉助簡單的圖表瞭解此缺陷的威脅代理、攻擊媒介、安全弱點、技術影響和業務影響。

3. cross site scripting

XSS的型別

  • 儲存型XSS − 儲存型XSS也稱為持久型XSS,發生在使用者輸入儲存在目標伺服器(例如資料庫/訊息論壇/評論欄位等)時。然後,受害者能夠從Web應用程式檢索儲存的資料。

  • 反射型XSS − 反射型XSS也稱為非持久型XSS,發生在使用者輸入立即被Web應用程式在錯誤訊息/搜尋結果中返回,或者使用者提供的輸入作為請求的一部分,並且沒有永久儲存使用者提供的資料。

  • 基於DOM的XSS − 基於DOM的XSS是一種XSS形式,其中資料來源位於DOM中,接收器也位於DOM中,資料流永遠不會離開瀏覽器。

示例

應用程式在構建過程中使用了未經驗證的不受信任的資料。特殊字元應該被轉義。

http://www.webpage.org/task/Rule1?query=try

攻擊者修改瀏覽器中的查詢引數為:

http://www.webpage.org/task/Rule1?query=<h3>Hello from XSS"</h3>

動手操作

步驟1 − 登入Webgoat並導航到跨站指令碼攻擊(XSS)部分。讓我們執行儲存型跨站指令碼攻擊(XSS)。以下是場景快照。

3. xss

步驟2 − 根據場景,讓我們以Tom的身份登入,密碼為“tom”(如場景中所述)。點選“檢視個人資料”並進入編輯模式。由於Tom是攻擊者,讓我們將JavaScript注入這些編輯框。

<script> 
   alert("HACKED")
</script> 
3. xss

步驟3 − 更新完成後,Tom會收到一個帶有“hacked”訊息的警報框,這意味著應用程式存在漏洞。

3. xss

步驟4 − 現在根據場景,我們需要以Jerry(人力資源)的身份登入並檢查Jerry是否受到注入指令碼的影響。

3. xss

步驟5 − 以Jerry的身份登入後,選擇“Tom”並點選“檢視個人資料”,如下所示。

3. xss

從Jerry的帳戶檢視Tom的個人資料時,他能夠獲得相同的對話方塊。

3. xss

步驟6 − 此對話方塊只是一個示例,但實際攻擊者可以執行的操作遠不止顯示對話方塊。

預防機制

  • 開發人員必須確保根據HTML上下文(例如主體、屬性、JavaScript、CSS或URL)轉義所有不受信任的資料。

  • 對於需要特殊字元作為輸入的應用程式,在接受它們作為有效輸入之前,應該有強大的驗證機制。

廣告
© . All rights reserved.