iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0
Security

嘗試使用OWASP ZAP與DVWA探索常見 Web 漏洞系列 第 9 篇

DVWA 實作:Stored XSS原理與攻防

  • 分享至 

  • xImage
  •  

與反射型 XSS不同,Stored XSS 的惡意程式碼會被後端伺服器直接寫入資料庫或其他持久化儲存介面。當其他正常使用者或管理員造訪包含該資料的頁面時,伺服器會將存有惡意程式碼的內容渲染回前端,導致受害者的瀏覽器自動執行該段腳本。

  • DVWA實作步驟(Low安全等級)
    進入DVWA左側選單 XSS (Stored)。
  1. 發布惡意留言輸入:
    Name:test
    Message:HTMLalert('Stored XSS!')
    點擊:Sign Guestbook

  2. 觀察漏洞現象
    即時觸發:資料送出後,畫面立刻跳出Stored XSS!警告彈窗。
    https://ithelp.ithome.com.tw/upload/images/20260923/20179312ElXfQLVdiC.png
    持久化驗證:切換至其他選單頁面(如 Home),再重新點回 XSS (Stored) 頁面。
    https://ithelp.ithome.com.tw/upload/images/20260923/201793125KXIgSBsyr.png
    結果:無須再進行任何輸入,只要頁面載入留言紀錄,瀏覽器就會自動再次觸發並執行該腳本。
    https://ithelp.ithome.com.tw/upload/images/20260923/20179312r4CvBHzAzX.png

  • 漏洞成因分析
    在Low安全等級下,後端負責處理留言與顯示留言的 PHP 程式碼沒有對輸入進行 HTML 轉義:

$message = trim($_POST['mtxMessage']);
$name = trim($_POST['txtName']);

echo "<div id="guestbook_comments">Name: {$name}Message: {$message}";
由於 $message 中的 標籤被原封不動地存入資料庫,前端渲染時瀏覽器會將其作為 HTML/JavaScript 解析,而非純文字。

  • Stored XSS 的危害與防禦

危害
1.帳號劫持:攻擊者可寫入document.cookie竊取腳本,自動將造訪者的Session ID傳送到攻擊者伺服器。

2.蠕蟲式擴散:在社群網站中,惡意腳本可控制受害帳號自動發布帶有相同Payload的動態,造成大規模擴散

防禦策略
1.輸入與輸出轉義:顯示留言資料時,必須進行HTML Entity轉義。

2.輸入長度限制與格式過濾:限制輸入欄位長度,並對輸入內容進行白名單驗證。

3.啟用Content Security Policy:限制腳本執行來源,禁止內聯腳本執行。


上一篇
DVWA 實作:Reflected XSS原理與攻防
下一篇
DVWA 實作:CSRF(跨站請求偽造)原理與攻防
系列文
嘗試使用OWASP ZAP與DVWA探索常見 Web 漏洞 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言