Home [Security] Cross-site Scripting (mutation XSS)
Post
Cancel

[Security] Cross-site Scripting (mutation XSS)

Parser

在不同Browser中(Ex: safari / chrome / firefox …),解析出來HTML/JS也可能有所不同,可能同樣的XSS,只能發生在特定的Browser當中。

HTML parser (Chrome)

  • html parse (開頭div)

  • </div>設為script title, script和div也自動閉合

JS parser (Chrome)

  • js parse (開頭script)

  • script在head, <div title=” 被放在script

Sanitize (消毒)

消毒是指在使用者輸入的字當中,過濾掉有害的東西。

EX:

1
2
<img src=x onerror=alert()>
<script>

(消毒中)

1
<img src=x>

DOMPurifiy

  • 用來過濾(消毒)使用者輸入的不安全的html,刪除可能導致XSS的元素

  • 由於每個瀏覽器的parser不同,因此會在Client進行消毒。

cure53/DOMPurify - Github

mutation XSS

原因就發生在 innerHTML,攻擊者注入HTML,透過DOMPurifiy過濾後,但是因為沒過濾好,反而從安全形式轉換為不安全形式。

mutation XSS in Google

<noscript>在啟用JS和停用JS的parser是不同的,因此在Sanitize(消毒)的時候是停用JS,當然在Browser當中是啟用的,因此就造成解析不同,造成XSS。

XSS on Google - Youtube

This post is licensed under CC BY 4.0 by the author.
Contents

[CTF] HITCON 2023 Re:CTF

[Security] Cross-site Scripting (DOM Clobbering)

Comments powered by Disqus.