- 安全測試教程
- 安全測試 - 首頁
- 安全測試 - 概述
- 安全測試 - 流程
- 安全測試 - 惡意軟體
- HTTP協議基礎
- HTTPS協議基礎
- 編碼和解碼
- 安全測試 - 密碼學
- 安全測試 - 同源策略
- 安全測試 - Cookie
- 駭客攻擊Web應用程式
- 安全測試 - 注入攻擊
- 測試身份驗證漏洞
- 測試跨站指令碼攻擊
- 不安全的直接物件引用
- 測試安全配置錯誤
- 測試敏感資料洩露
- 缺少函式級訪問控制
- 跨站請求偽造
- 存在漏洞的元件
- 未驗證的重定向和轉發
- 安全測試 - Ajax安全
- 安全測試 - Web服務
- 安全測試 - 緩衝區溢位
- 安全測試 - 拒絕服務攻擊
- 測試惡意檔案執行
- 安全測試 - 自動化工具
- 安全測試有用資源
- 安全測試 - 快速指南
- 安全測試 - 有用資源
- 安全測試 - 討論
跨站指令碼攻擊測試
跨站指令碼攻擊(XSS)發生在應用程式獲取不受信任的資料並將其傳送到客戶端(瀏覽器)而無需驗證的情況下。這允許攻擊者在受害者的瀏覽器中執行惡意指令碼,這可能導致使用者會話被劫持、網站被篡改或使用者被重定向到惡意網站。
讓我們藉助簡單的圖表瞭解此缺陷的威脅代理、攻擊媒介、安全弱點、技術影響和業務影響。
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)。以下是場景快照。
步驟2 − 根據場景,讓我們以Tom的身份登入,密碼為“tom”(如場景中所述)。點選“檢視個人資料”並進入編輯模式。由於Tom是攻擊者,讓我們將JavaScript注入這些編輯框。
<script>
alert("HACKED")
</script>
步驟3 − 更新完成後,Tom會收到一個帶有“hacked”訊息的警報框,這意味著應用程式存在漏洞。
步驟4 − 現在根據場景,我們需要以Jerry(人力資源)的身份登入並檢查Jerry是否受到注入指令碼的影響。
步驟5 − 以Jerry的身份登入後,選擇“Tom”並點選“檢視個人資料”,如下所示。
從Jerry的帳戶檢視Tom的個人資料時,他能夠獲得相同的對話方塊。
步驟6 − 此對話方塊只是一個示例,但實際攻擊者可以執行的操作遠不止顯示對話方塊。
預防機制
開發人員必須確保根據HTML上下文(例如主體、屬性、JavaScript、CSS或URL)轉義所有不受信任的資料。
對於需要特殊字元作為輸入的應用程式,在接受它們作為有效輸入之前,應該有強大的驗證機制。