浏览文章
文章信息
Python渗透测试 - XSS Web攻击
跨站点脚本攻击是一种注入,也指客户端代码注入攻击。在这里,恶意代码被注入合法网站。同源策略(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脚本有助于使用mechanize分析XSS攻击-
首先,让我们导入mechanize模块。
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攻击的可能性很高。
温馨提示:欢迎注册本站!