【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)

  

前言:

介绍: 

博主:网络安全领域狂热爱好者(承诺在CSDN永久无偿分享文章)。

殊荣:CSDN网络安全领域优质创作者,2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。

擅长:对于技术、工具、漏洞原理、黑产打击的研究。

C站缘:C站的前辈,引领我度过了一个又一个技术的瓶颈期、迷茫期。


导读:

面向读者:对于网络安全方面的学者。 

本文知识点(读者自测): 

(1)HTML标记之间的XSS(√)

(2)HTML标记属性中的XSS(√)

(3)从其他数据库表中检索数据(√)

(4)客户端模板注入(√)


目录

一、跨站点脚本(XSS)

1、简述:

2、原理:

3、XSS验证

3、XSS攻击类型

二、反射XSS

1、简述:

2、示例:

3、涉及实验:

        实验1:将XSS反射到HTML上下文中,不进行任何编码

4、反射的XSS攻击的影响

        实验14:利用跨站点脚本窃取Cookie

        实验15:利用跨站点脚本来捕获密码

        实验16:利用XSS实现CSRF

三、不同上下文中的反射XSS

1、简述:

2、HTML标记之间的XSS

        实验2:将XSS存储到HTML上下文中,不进行任何编码

        实验17:将XSS反射到HTML上下文中,大多数标记和属性被阻止

        实验18:将XSS反射到HTML上下文中,除自定义标记外,所有标记都被阻止

        实验25:具有事件处理程序和 href 已阻止属性

        实验19:允许使用一些SVG标记的反射XSS

3、HTML标记属性中的XSS

        实验7:将XSS反射到带尖括号的HTML编码属性中

        实验8:将XSS存储到锚中 href 带双引号的属性HTML编码

        实验20:规范链接标记中反射的XSS

4、终止现有脚本

        实验21:将XSS反射到JavaScript字符串中,并使用单引号和反斜杠进行转义

        实验9:将XSS反射到带有尖括号的JavaScript字符串HTML编码

        实验22:将XSS反射到JavaScript字符串中,使用尖括号和双引号HTML编码并转义单引号

        实验26:JavaScript URL中反射的XSS,其中一些字符被阻止

        实验23:将XSS存储到onclick事件中,使用尖括号和双引号HTML编码,使用单引号和反斜杠转义

        实验24:将XSS反射到模板文本中,带有尖括号、单引号、双引号、反斜杠和反记号

四、客户端模板注入

1、简述:

 2、AngularJS沙盒

        实验27:反射的XSS,带AngularJS沙箱转义,不带字符串

 3、AngularJS CSP旁路

         实验28:反射XSS与AngularJS沙箱转义和CSP


一、跨站点脚本(XSS)

1、简述:

1、跨站点脚本(也称为XSS)是一个Web安全漏洞,使得攻击者能够破坏用户与易受攻击的应用程序的交互。它允许攻击者绕过同源策略,该策略旨在将不同的网站彼此隔离。跨站点脚本漏洞通常允许攻击者伪装成受害用户,执行用户能够执行的任何操作,以及访问用户的任何数据。如果受害用户拥有应用程序内的特权访问权限,则攻击者可能能够完全控制应用程序的所有功能和数据 
 


2、原理:

操纵易受攻击的网站,以便向用户返回恶意JavaScript。当恶意代码在受害者的浏览器中执行时,攻击者可以完全破坏其与应用程序的交互

3、XSS验证

1、通过注入一个有效负载来确认大多数类型的XSS漏洞,该有效负载会导致浏览器执行某些任意JavaScript。使用alert()函数,因为它简短、无害,并且在成功调用时很难错过。实际上,大多数XSS实验都是通过调用alert()在模拟受害者的浏览器


2、如果使用Chrome的话,会有一个问题。从2021年7月开始,跨源iframe被禁止调用alert()。由于这些用于构造一些更高级的XSS攻击,因此有时需要使用替代PoC有效负载。在这种情况下,建议使用print()函数

3、XSS攻击类型

主要有三种类型:

    1、反射的XSS,其中恶意脚本来自当前HTTP请求。
    2、存储XSS,其中恶意脚本来自网站的数据库。
    3、基于DOM的XSS,其中漏洞存在于客户端代码而不是服务器端代码中。



二、反射XSS

1、简述:

当应用程序接收HTTP请求中的数据并以不安全的方式将该数据包含在即时响应中时,就会出现反射的跨站点脚本(或XSS)


2、示例:

1、(插入框)网站具有搜索功能,该功能接收用户在URL参数中提供的搜索项:
https://insecure-website.com/search?term=gift

2、(回显功能)应用产品在对此URL的响应中回显提供的搜索词:

You searched for: gift

3、(数据处理不严谨/可绕过)假设应用程序不执行任何其他数据处理,攻击者可以构建如下攻击: https://insecure-website.com/search?term= 4、(反射XSS)此URL将导致以下响应:

You searched for:

如果应用程序的另一个用户请求攻击者的URL,则攻击者提供的脚本将在受害用户的浏览器中,在他们与应用程序的会话上下文中执行

3、涉及实验:

实验1:将XSS反射到HTML上下文中,不进行任何编码

实验1:将XSS反射到HTML上下文中,不进行任何编码

信息:

本实验包含搜索功能中的一个简单反映的跨站点脚本漏洞。

完成实验:执行调用alert函数的跨站点脚本攻击。


part1:

(自己储备好各种XSS的payload)

见框就插(有时候可能会在数据包里面插)

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第1张图片

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第2张图片 【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第3张图片

4、反射的XSS攻击的影响

1、如果攻击者可以控制在受害者浏览器中执行的脚本,则通常可以完全危害该用户。

攻击者可以:
    1、在应用程序中执行用户可以执行的任何操作。
    2、查看用户能够查看的任何信息。
    3、修改用户能够修改的任何信息。
    4、发起与其他应用程序用户的交互,包括恶意攻击,这些攻击看起来似乎来自最初的受害者用户。

2、攻击者可以通过各种方式诱使受害用户发出他们控制的请求,从而传递反射的XSS攻击。这包括在攻击者控制的网站或允许生成内容的其他网站上放置链接,或者通过电子邮件、推文或其他消息发送链接。攻击可能直接针对已知用户,也可能不加区别地攻击应用程序的任何用户


3、攻击需要外部传递机制,这意味着反射的XSS的影响通常没有存储的XSS严重,存储的XSS可以在易受攻击的应用程序本身内传递自包含攻击。 


4、利用跨站点脚本窃取Cookie

窃取cookie是利用XSS的传统方式。大多数Web应用程序使用Cookie进行会话处理。可以利用跨站点脚本漏洞将受害者的Cookie发送到您自己的域,然后手动将Cookie注入浏览器并模拟受害者。

在实践中,这种方法有一些明显的局限性:
    1、受害者可能没有登录。
    2、许多应用程序使用 仅HttpOnly旗帜。
    3、会话可能会被锁定到其他因素,如用户的IP地址。
    4、会话可能会在您能够劫持它之前超时

涉及实验:
实验14:利用跨站点脚本窃取Cookie


5、利用跨站点脚本来捕获密码

————

(1)许多用户都有自动填充密码的密码管理器。可以通过创建密码输入、阅读自动填充的密码并将其发送到我们的域来利用这一点。此技术避免了与窃取Cookie相关的大多数问题,甚至可以访问受害者重用相同密码的所有其他帐户。

————

(2)这种技术的主要缺点是,它只适用于拥有执行密码自动填充的密码管理器的用户。(如果用户没有保存密码,仍然可以尝试通过现场网络钓鱼攻击获取其密码) 

————

涉及实验:
实验15:利用跨站点脚本来捕获密码


6、利用跨站点脚本执行CSRF

————

1、根据目标网站,可能会让受害者发送消息,接受好友请求,提交一个后门到源代码库,或转移一些比特币。

————

2、某些网站允许登录用户更改其电子邮件地址,而无需重新输入密码。如果发现了XSS漏洞,可以让它触发此功能,将受害者的电子邮件地址更改为能控制的地址,然后触发密码重置以获得对帐户的访问权限

————

3、这种类型的利用通常称为跨站点请求伪造(CSRF),这有点令人困惑,因为CSRF也可能作为独立漏洞出现。当CSRF作为独立漏洞出现时,可以使用诸如反CSRF令牌之类的策略对其进行修补。但如果同时存在XSS漏洞,这些策略将不提供任何保护。 

————

涉及实验:
实验16:利用XSS实现CSRF

实验14:利用跨站点脚本窃取Cookie

信息:

本实验在博客评论函数中包含一个已存储的XSS漏洞。模拟的受害者用户查看所有发表的评论

解决实验:利用此漏洞来泄漏受害者的会话cookie,然后使用此cookie来模拟受害者


part1:

使用Burp Suite Professional,转到Collaborator选项卡。
单击“复制到剪贴板”将唯一的Burp Collaborator有效负载复制到剪贴板

jg3vbb0cmdrxsi0uyp9h9lc47vdl1a.burpcollaborator.net

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第4张图片


part2:

插入XSS

在博客评论中提交以下有效负载,在指定位置插入您的Burp Collaborator子域:




我的是:

此脚本将使查看评论的任何人向公共Collaborator服务器上的您的子域发出包含其cookie的POST请求
【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第5张图片


 


part3:

查看信息

点击刷新,看到HTTP交互
记下POST主体中受害者cookie的值

session=9Npstu0CedDyYYZvFUNgA0okHLfpWyYB

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第6张图片


part4:

解决实验

重新加载主博客页面,使用Burp Proxy或Burp Repeater将会话cookie替换为在Burp Collaborator中捕获的cookie

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第7张图片

其实正常情况下,修改某个数据,可能就要一路修改下去

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第8张图片

 【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第9张图片

实验15:利用跨站点脚本来捕获密码

信息:

本实验在博客评论函数中包含一个已存储的XSS漏洞。模拟的受害者用户查看所有发表的评论

解决实验:利用此漏洞来窃取受害者的用户名和密码,然后使用这些凭据登录到受害者的帐户。


part1:

使用Burp Suite Professional,转到Collaborator选项卡。
单击"复制到剪贴板"将唯一的Burp Collaborator有效负载复制到剪贴板

qqkybew56kd84w6ny0l6yjhpfgl69v.burpcollaborator.net

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第10张图片


part2:

插入XSS

在博客评论中提交以下有效负载(在指定位置插入您的Burp Collaborator子域)




我的是:

此脚本将使查看评论的任何人向公共Collaborator服务器的子域发出包含其用户名和密码的POST请求

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第11张图片


part3:

返回Collaborator选项卡,然后刷新,看到HTTP交互
记下POST主体中受害者的用户名和密码的值。

administrator:9yl3ow6km9ix24rkz7mk

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第12张图片


part4:

解决实验

进行登陆操作

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第13张图片 登陆成功完成实验

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第14张图片

实验16:利用XSS实现CSRF

信息:

本实验在博客评论函数中包含一个已存储的XSS漏洞。要解决此实验问题,请利用此漏洞执行CSRF攻击,并更改查看博客帖子评论的用户的电子邮件地址。

已有账号:wiener:peter


part1:

登陆已有账号测试功能

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第15张图片

在HTTP历史记录中找到数据包

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第16张图片


part2:

构造XSS

攻击需要加载用户帐户页面,提取CSRF令牌,然后使用该令牌更改受害者的电子邮件地址


part3:

插入XSS

在博客评论中提交payload

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第17张图片

这将使任何查看评论的人发出POST请求,将其电子邮件地址更改为[email protected]

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第18张图片



三、不同上下文中的反射XSS

1、简述:

1、反射数据在应用程序响应中的位置、任何验证或其他处理决定了利用它所需的有效负载类型,并且还可能影响漏洞的影响。


2、当测试 反射 和 存储 的XSS时,一个关键任务是识别XSS上下文:

    1、响应中出现攻击者可控制数据的位置。
    2、应用程序对该数据执行的任何输入验证或其他处理。

2、HTML标记之间的XSS

当XSS上下文是HTML标记之间的文本时,需要引入一些新的HTML标记来触发JavaScript的执行。

执行JavaScript的一些有用方法包括:


涉及实验:
实验1:将XSS反射到HTML上下文中,不进行任何编码(前文已解决)
实验2:将XSS存储到HTML上下文中,不进行任何编码
实验17:将XSS反射到HTML上下文中,大多数标记和属性被阻止
实验18:将XSS反射到HTML上下文中,除自定义标记外,所有标记都被阻止
实验25:具有事件处理程序和 href 已阻止属性
实验19:允许使用一些SVG标记的反射XSS

实验2:将XSS存储到HTML上下文中,不进行任何编码

信息:

本实验的评论功能中存在一个已存储的跨站点脚本漏洞。

要完成此实验,请提交一条评论,以便在查看博客帖子时调用alert函数


part1:

(自己储备好各种XSS的payload)

见框就插(有时候可能会在数据包里面插)

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第19张图片

返回评论区会弹窗

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第20张图片

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第21张图片

实验17:将XSS反射到HTML上下文中,大多数标记和属性被阻止

信息:

1、本实验在搜索功能中包含一个反映的XSS漏洞,但使用Web应用程序防火墙(WAF)来防范常见的XSS向量。

2、解决实验:执行跨站点脚本攻击,绕过WAF并调用print()函数

3、访问XSS备忘单并单击复制保存(测试过滤器的时候用的Cross-Site Scripting (XSS) Cheat Sheet - 2022 Edition | Web Security Academy)


part1:

注入标准XSSpayload

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第22张图片

 发现失败

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第23张图片


part2:

分析数据包,并发送到Burp Intruder

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第24张图片

在Burp Intruder中的位置选项卡中,单击"清除§"。将搜索项的值替换为:<>
将光标放在尖括号之间,点击"Add §"(添加§)两次,创建有效载荷位置。搜索项的值现在应如下所示:<§§>

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第25张图片

 测试哪些标记和属性被阻止

 (Cross-Site Scripting (XSS) Cheat Sheet - 2022 Edition | Web Security Academy)

访问XSS 备忘单并单击“Copy tags to clipboard”

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第26张图片


在Burp Intruder的"有效负载"选项卡中,单击"粘贴"将标记列表粘贴到有效负载列表中。单击"开始攻击"。

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第27张图片

 攻击完成后,查看结果,所有有效负载都导致HTTP 400响应,但body有效负载除外,它导致200响应

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第28张图片


part3:

返回Burp Intruder中的Positions选项卡,将搜索词替换为:

将光标放在=字符前,点击"Add §"两次,创建有效载荷位置

 【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第29张图片

访问XSS 备忘单并单击“Copy events to clipboard”

Cross-Site Scripting (XSS) Cheat Sheet - 2022 Edition | Web Security Academy

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第30张图片

 在Burp Intruder的"有效负载"选项卡中,单击"清除"以删除以前的有效负载。然后单击"粘贴"将属性列表粘贴到有效负载列表中。单击"开始攻击"。

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第31张图片

攻击完成后,查看结果。请注意,所有有效负载都会导致HTTP 400响应,只有3个负载导致200响应

【burpsuite安全练兵场-客户端11】跨站点脚本XSS-20个实验(上)_第32张图片

payload:
">
URL编码后:
%22%3E%3Cbody%20onresize=print()%3E


part4:

这里使用onresize负载

转到漏洞利用服务器并粘贴以下代码,将YOUR-LAB-ID替换为自己实验室ID:

(千万别填错了)