前言
上次分享了javascript語義分析,並且簡單介紹了新型xss掃描器的一些想法,如何在不進行大量fuzz的情況下又能準確的檢測出xss漏洞,這其中我們又可以儘量的避免觸發waf的xss防護功能!
首先先接著上文介紹一下html語義分析的方法。
掃描思路
HTML語義分析
如果把html語義分析看為對html結構的解析與識別,在python中我們可以使用HTMLParser,對,又是python幫我解決了難題。在XSStrike裡面同樣使用了自定義的HTMLParser進行漏洞的輔助識別。
我們可以通過繼承HTMLParser並重載其方法來實現我們需要的功能
下面是簡單的 HTML 解析器的一個基本示例,使用 HTMLParser 類,當遇到開始標記、結束標記以及數據的時候將內容打印出來
<code>
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Encountered a start tag:", tag)
def handle_endtag(self, tag):
print("Encountered an end tag :", tag)
def handle_data(self, data):
print("Encountered some data :", data)
parser = MyHTMLParser()
parser.feed('<title>Test/<title>'
'Parse me!
')/<code>
我們需要定義一個我們自己的HTML解析器來處理我們的標籤,標識出來script標籤,html註釋,html標籤,屬性,css等等
部分代碼如下
尋找反射點的思路和js的類似,通過遍歷標籤來來解析html結構,tagname代表標籤名,attibutes代表屬性,content代表數據內容,#comment代表註釋,每個標籤被封裝為字典形式的列表元素
使用以下的demo
<code>
ffff<aaaaa>bb
<textarea>flag{111222}/<textarea>kkk
/<aaaaa>/<code>
閱讀更多 合天網安實驗室 的文章