關於自定義標籤引起的XSS

前言

在滲透測試XSS(跨站腳本攻擊)漏洞的時候, 有一些網站爲了防護XSS, 將所有可以禁止的tag、event都禁止了, 但這還不是絕對安全的, 如果網站會將自定義的標籤寫入網頁的話, 還是可能引起XSS的, 也就是本文談到的內容。

接下來以一個XSS靶場爲例。

 

Fuzz

測試伊始, 當然是尋找waf允許的標籤以及事件類型, 這裏本人採用burpsuite的intruder來Fuzz, 看看是否存在某些tag或者event是可行的。

1. 設置一下需要Fuzz的參數, 注意需要在<>內:

 2. 加載Fuzz的字典:

3. 發現無可用的html標籤:

都被waf攔下:

 

思考

到這裏就沒有辦法了嗎? 其實是有的。


首先來複習一下URL中的 #

他的功能是: 使窗口定位到頁面中的id, class的位置, 用法通常是:

https://www.example.com/index.html#id

例如: 

調用過程中,  可以理解爲選中/加載了指定id或者class標籤。

 

小試牛刀

正如前言所述的情況, 頁面運行寫入自定義的(非html)標籤:

於是熟練的配合xss打出一個payload?

發現, alert並沒有被執行, 似乎少了點什麼...

# 符號雖然可以將頁面定位到指定id上, 但是自定義的custom標籤並沒有獲得焦點(focus), 所以包含的alert事件並不會被執行。

敲黑板! 劃重點! 

  • tabindex屬性

 html中的tabIndex屬性可以設置鍵盤中的TAB鍵在控件中的移動順序,即焦點的順序。  

 把控件的tabIndex屬性設成1到32767的一個值,就可以把這個控件加入到TAB鍵的序列中。  

 這樣,當瀏覽者使用TAB鍵在網頁控件中移動時,將首先移動到具有最小tabIndex屬性值的控件上,最後在具有最大tabIndex屬性值的控件上結束移動。   

如果有兩個控件的tabIndex屬性相同,則以控件在html代碼中出現的順序爲準。  

 默認的tabIndex屬性爲 0 ,將排列在在所有指定tabIndex的控件之後。   

而若把tabIndex屬性設爲一個負值(如tabIndex="-1"),那麼這個鏈接將被排除在TAB鍵的序列之外

瞭解了tabindex的功能之後, 這裏就加入tabindex屬性配合#符號來使得自定義標籤獲得焦點:

 

防護措施

1. 將< >標籤禁止;

2. html編碼實體化

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章