iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
1
Security

資安這條路─以自建漏洞環境學習資訊安全系列 第 21

資安這條路 21 - [WebSecurity] DOM-based vulnerabilities

  • 講到 DOM 型的弱點之前,要先了解 DOM 是什麼

Document Object Model (DOM)

  • DOM 是什麼
  • 常見的 DOM 介面

DOM-based vulnerabilities

  • DOM 的弱點,基本上於網站中沒有過濾使用者的輸入,而這一筆不受信任的資料,被使用於網站其他功能,導致弱點產生。
    • 要先提起 source 跟 sink 這是在 DOM 很重要的概念
    • source 來源類別
    • sink 接收器類別
  • 我們舉個例子
    • domxss.html
      <html>
          <p id="name">Hello<p>
          <script>
              var url = new URL(window.location.href);
              var name = url.searchParams.get("name");
              document.getElementById('name').innerHTML = 'Hello ' + name;
          </script>
      </html>
      
      • http://localhost/?name=<svg/onload=alert(1)>
      • name 參數可控
      • location.href 為 source 未過濾的輸入來源
      • innerHTML 為 sink 真正執行不信任資料導致 DOM XSS 的地方
  • 常見的可能有問題的 source
    • document.URL
    • document.documentURI
    • document.URLUnencoded
    • document.baseURI
    • location
    • document.cookie
    • document.referrer
    • window.name
    • history.pushState
    • history.replaceState
    • localStorage
    • sessionStorage
    • IndexedDB (mozIndexedDB, webkitIndexedDB, msIndexedDB)
    • Database

LAB

防範

  • 老話一句過濾所有使用者的輸入與輸出
  • 建立白名單
  • 透過 JS 轉義、HTML 編碼、URL 編碼

參考


上一篇
資安這條路 20 - [WebSecurity] WebSocket
下一篇
資安這條路 22- [WebSecurity] 不安全的反序列化 Insecure Deserialization
系列文
資安這條路─以自建漏洞環境學習資訊安全31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言