Python渗透测试 - XSS Web攻击

跨站点脚本攻击是一种注入,也指客户端代码注入攻击.在这里,恶意代码被注入合法网站.同源策略(SOP)的概念对于理解跨站点脚本的概念非常有用. SOP是每个Web浏览器中最重要的安全主体.它禁止网站从其他来源的网页中检索内容.例如, www.it1352.com/index.html 网页可以访问 www.it1352.com/contact.html 但 www.virus.com/index.html 无法访问 www.it1352.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脚本有助于使用 mechanize :

来分析XSS攻击.首先,让我们导入 mechanize 模块./p>

 
 import mechanize

现在,提供获取URL的名称提交表格后的回复.

 
 url = input("输入完整的网址")
 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攻击.