📜  Python渗透测试-XSS Web攻击

📅  最后修改于: 2020-12-06 10:36:59             🧑  作者: Mango


跨站点脚本攻击是一种注入,也指客户端代码注入攻击。在这里,恶意代码被注入合法网站。同源起源策略(SOP)的概念对于理解跨站点脚本的概念非常有用。 SOP是每个Web浏览器中最重要的安全主体。它禁止网站从其他来源的网页检索内容。例如,网页www.tutorialspoint.com/index.html可以从www.tutorialspoint.com/contact.html访问内容,但www.virus.com/index.html可以从www.tutorialspoint.com/contact无法访问内容.html 。这样,我们可以说跨站点脚本是绕过SOP安全策略的一种方法。

XSS攻击的类型

在本节中,让我们了解不同类型的XSS攻击。攻击可分为以下主要类别-

  • 永久或存储的XSS
  • 非持久或反射的XSS

永久或存储的XSS

在这种XSS攻击中,攻击者注入了一个脚本(称为有效负载),该脚本永久存储在目标Web应用程序中,例如在数据库中。这就是原因,它称为持久性XSS攻击。它实际上是破坏性最大的XSS攻击类型。例如,攻击者将恶意代码插入博客或论坛帖子的评论字段中。

非持久或反射的XSS

这是最常见的XSS攻击类型,其中攻击者的有效负载必须是请求的一部分,然后将其发送到Web服务器并以HTTP响应包括HTTP请求的有效负载的方式反映出来。这是一种非持久性攻击,因为攻击者需要将有效负载交付给每个受害者。这类XSS攻击最常见的例子是网络钓鱼电子邮件,攻击者借助网络钓鱼电子邮件吸引受害者向服务器发出请求,该请求包含XSS有效负载,并最终执行在浏览器内部反映并执行的脚本。

与SQLi一样,XSS Web攻击可以通过处理应用程序的输入数据来实现。在以下示例中,我们将修改上一节中完成的SQLi攻击向量,以测试XSS Web攻击。下面给出的Python脚本有助于使用机械化分析XSS攻击-

首先,让我们导入机械化模块。

import mechanize

现在,在提交表单后,提供用于获取响应的URL名称。

url = input("Enter the full url")
   attack_no = 1

我们需要从文件中读取攻击向量。

With open (‘vectors_XSS.txt’) as x:

现在我们将发送每个arrack向量的请求-

For line in x:
   browser.open(url)
browser.select_form(nr = 0)
   browser[“id”] = line
   res = browser.submit()
content = res.read()

以下代码行将检查打印的攻击媒介。

if content.find(line) > 0:
print(“Possible XSS”)

下面的代码行将响应写入输出文件。

output = open(‘response/’ + str(attack_no) + ’.txt’, ’w’)
output.write(content)
output.close()
print attack_no
attack_no += 1

当用户输入未经过任何验证就打印到响应时,就会发生XSS。因此,要检查XSS攻击的可能性,我们可以检查提供的攻击向量的响应文本。如果响应中存在攻击媒介而没有任何转义或验证,则很有可能发生XSS攻击。