dom scanning hotfix
This commit is contained in:
@@ -8,6 +8,7 @@ def dom(response):
|
||||
sources = r'''document\.(URL|documentURI|URLUnencoded|baseURI|cookie|referrer)|location\.(href|search|hash|pathname)|window\.name|history\.(pushState|replaceState)(local|session)Storage'''
|
||||
sinks = r'''eval|evaluate|execCommand|assign|navigate|getResponseHeaderopen|showModalDialog|Function|set(Timeout|Interval|Immediate)|execScript|crypto.generateCRMFRequest|ScriptElement\.(src|text|textContent|innerText)|.*?\.onEventName|document\.(write|writeln)|.*?\.innerHTML|Range\.createContextualFragment|(document|window)\.location'''
|
||||
scripts = re.findall(r'(?i)(?s)<script[^>]*>(.*?)</script>', response)
|
||||
sinkFound, sourceFound = False, False
|
||||
for script in scripts:
|
||||
script = script.split('\n')
|
||||
num = 1
|
||||
@@ -31,6 +32,7 @@ def dom(response):
|
||||
for part in parts:
|
||||
if source in part:
|
||||
controlledVariables.add(re.search(r'[a-zA-Z$_][a-zA-Z0-9$_]+', part).group().replace('$', '\$'))
|
||||
sourceFound = True
|
||||
line = line.replace(source, yellow + source + end)
|
||||
for controlledVariable in controlledVariables:
|
||||
allControlledVariables.add(controlledVariable)
|
||||
@@ -44,12 +46,13 @@ def dom(response):
|
||||
sink = newLine[grp.start():grp.end()].replace(' ', '')
|
||||
if sink:
|
||||
line = line.replace(sink, red + sink + end)
|
||||
sinkFound = True
|
||||
if line != newLine:
|
||||
highlighted.append('%-3s %s' % (str(num), line.lstrip(' ')))
|
||||
num += 1
|
||||
except MemoryError:
|
||||
pass
|
||||
if (yellow and red) in highlighted:
|
||||
if sinkFound and sourceFound:
|
||||
return highlighted
|
||||
else:
|
||||
return []
|
||||
|
||||
Reference in New Issue
Block a user