【问题标题】:Detect DOM Based XSS website using python使用python检测基于DOM的XSS网站
【发布时间】:2014-10-05 16:04:23
【问题描述】:

我有一个示例网址:http://www.foo.bar/index.php?ids=111

我发现它有一个http://www.foo.bar/index.php?ids="><SCrIpT>alert('XSS')</ScRiPt>的漏洞

与普通 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

r.text 和 t.text 的结果是一样的。

【问题讨论】:

标签: python xss detect


【解决方案1】:

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

【讨论】:

  • 我认为在这种情况下使用 Selenim WebDriver 工作。但它太慢了,因为它需要安装 Firefox。因此,当我在没有 Firefox 的服务器上实现并且代码无法在其上运行时。
【解决方案2】:

一个基本的检查是看看你的有效载荷是否存在于页面的源中而没有被转义,这样的事情应该可以解决问题:

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")

这会检查负载是否存在于页面的源中,不区分大小写。如果该站点不存在漏洞,则有效负载将转换为 HTML entities,虽然在浏览器中看起来相同,但实际上是不同的,例如 &amp;lt; 变为 &amp;lt;

注意:这可以用来确认 XSS 的存在,但不能否认 XSS 的存在;例如,不正确的转义会使此返回 false,而有效负载仍可能在真实浏览器中运行。

【讨论】:

  • 除了不能转义之外,还有转义不正确的问题,这种方法检测不到。
猜你喜欢
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多