1、現象
基于DOM型別的跨站式腳本涉及到輸出未經篩選或者編碼的不可信的客戶端資料,被當做JavaScrip代碼執行,通常情況下,如果懷疑URL的某部分是由客戶端JavaScript代碼進行處理并輸出給用戶的,存在潛在的XSS,
2、實體
本次筆者經歷的不是通過URL中部分內容傳入不可信的客戶端資料,而是通過頁面的輸入框,輸入固定格式的內容,然后通過客戶端JavaScript代碼進行處理并回顯給用戶,

3、步驟
a、如上圖所示,客戶端需要輸入固定格式要求的內容,點擊“決議”按鈕,可以將文本框的內容決議并回顯到頁面中
當我們在輸入框中輸入一小段JavaScript代碼時,可以查詢網頁原始碼中的效果

通過網頁原始碼,我們發現這段代碼片段已經完全插入到網頁中去(至于插入的實際代碼,可能需要多次嘗試,無非是通過尖括號或者引號繞過決議,不詳述,如果有興趣可以交流),完成代碼片段植入后,事實上的效果并未如我們所見的彈框,筆者甚至通過植入一個函式,然后在網頁Console中呼叫仍然未通過,
b、換位思考,如果植入一個其他正常的頁面元素,如button、img標簽如何
通過嘗試植入button、img是可行的,上效果圖,如下圖:


c、決議
事實上,輸入框的第一排文字是被JavaScript決議為用戶姓名的,并回顯在下面的輸入框中;通過測驗發現,用戶姓名決議是通過空格來進行分割,因為植入的代碼片段中使用了大量的 “/**/” 進行空格注釋,保證代碼片段的完整性,細致的觀察到姓名和代碼片段間有單引號和右尖括號(通過完成決議繞過)
順利植入了img標簽,滑鼠移動過圖片則觸發了xss漏洞!該程序完全不會通過服務器!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/245069.html
標籤:其他
