使用python检测基于DOM的XSS网站

使用python检测基于DOM的XSS网站,python,xss,detect,Python,Xss,Detect,我有一个示例url:http://www.foo.bar/index.php?ids=111 通过http://www.foo.bar/index.php?ids=“>警报('XSS') 与普通url和xss url的一个基本不同之处是浏览器中显示了一个警报框。但在使用python时,我们如何看到该警报框或检测哪个url存在漏洞 我尝试了python请求库: import requests xss_url = 'http://www.foo.bar/index.php?ids="><

我有一个示例url:
http://www.foo.bar/index.php?ids=111
通过
http://www.foo.bar/index.php?ids=“>警报('XSS')

与普通url和xss url的一个基本不同之处是浏览器中显示了一个警报框。但在使用python时,我们如何看到该警报框或检测哪个url存在漏洞

我尝试了python请求库:

import requests

xss_url = 'http://www.foo.bar/index.php?ids="><SCrIpT>alert('XSS')</ScRiPt>'
r = requests.get(xss_url);
print r.text

normal_url = 'http://www.foo.bar/index.php?ids=111'
t = requests.get(normal_url);
print t.text
导入请求
xss_url=http://www.foo.bar/index.php?ids=“>警报('XSS')”
r=requests.get(xss_url);
打印r.text
正常的http://www.foo.bar/index.php?ids=111'
t=requests.get(正常的url);
打印文本

r.text和t.text的结果是相同的。

确认注入是否是您可以执行的可执行脚本,例如

  • 使用
    window.exploitDetected=True
    作为注入验证,而不是
    alert()

  • 等待页面加载

  • ,如果设置了
    窗口,则读取。检测到的


一个基本检查是查看页面的源中是否存在有效负载,而不进行转义,类似这样的检查应该可以实现以下目的:

payload = "<SCrIpT>alert('XSS')</ScRiPt>"
xss_url = 'http://www.foo.bar/index.php?ids=">'+payload

r = requests.get(xss_url)

if payload.lower() in r.text.lower(): print("vulnerable")
payload=“警报('XSS')”
xss_url=http://www.foo.bar/index.php?ids=“>”+有效载荷
r=requests.get(xss_url)
如果r.text.lower()中的payload.lower():打印(“易受攻击”)

这将检查页面的源中是否存在有效负载,不区分大小写。如果站点不易受攻击,则有效负载将转换为在浏览器中看起来相同但实际上不同的有效负载,例如
您可以在那里@NaingLinAung进行签入。在我的情况下,这不是XSS防御。这是XSS分析。除了不能逃避之外,还有还有错误转义的问题,这种方法无法检测到。我认为在这种情况下使用Selenim WebDriver是可行的。但速度太慢,因为它需要安装Firefox。因此,当我在没有Firefox的服务器上实现时,代码无法在其上运行。