XSS語義分析的階段性總結(二)

前言

上次分享了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>
XSS語義分析的階段性總結(二)

我們需要定義一個我們自己的HTML解析器來處理我們的標籤,標識出來script標籤,html註釋,html標籤,屬性,css等等

部分代碼如下

XSS語義分析的階段性總結(二)

尋找反射點的思路和js的類似,通過遍歷標籤來來解析html結構,tagname代表標籤名,attibutes代表屬性,content代表數據內容,#comment代表註釋,每個標籤被封裝為字典形式的列表元素

使用以下的demo

<code>





<textarea>flag{111222}/<textarea>kkk
ffff<aaaaa>bb



/<aaaaa>/<code>


分享到:


相關文章: