dom scripting代码_利用Sboxr自动发现和利用DOM型XSS-Part 2

645c2ffe2ec9594098827b7d16d5ca23.png
Part 1 —— https://nosec.org/home/detail/2421.html

大家好,这是我关于利用Sboxr自动挖掘DOM型XSS的第二部分。在这篇文章中我将继续讲述我所搭建的XSS演示网站https://domgo.at中的4个演示(演示3到演示6)。通过利用Sboxr,我可以自动化挖掘出这四个演示中的隐藏的DOM型XSS漏洞。

当然,我将详细讲述Sboxr的利用方法和漏洞发现流程,并为所挖掘出的XSS创建一个简单的PoC。如果你想了解更多关于安全方面的信息,欢迎光临我的gitbook,https://appsecco.com/books/。

演示 3

在许多Web应用中,来自第三方应用的数据会通过接收器成为自身应用的一部分。在这种情况下,第三方应用的XHR端点就可以将恶意代码注入目标应用中。

即使XHR只限于同一站点,也需要验证数据的安全性。在现代应用中,有很多会直接接收未经检查的外部数据,并存储到数据库中,最终导致持久的DOM型XSS。

此练习涉及JSON端点的XHR请求,最终所请求的数据将回应到客户端,然后由HTMLElement.innerHTML接受,形成DOM型XSS。

1.在演示网站左侧点击“Exercise - 3”页面,然后往文本框中输入随机字符串,最后单击Execute Payload按钮。

8c24613246cf858ef0636e6f86e5b311.png

2.其中涉及的JSON端点如下 https://domgo.at/data.json?payload=thanos

3.使用Sboxr你可以看到如下数据流

ac2fbdf48486217681ea13549a8c2ce8.png

4.同时我们也可以准确的看到接收器中使用的JSON响应数据,方便创建exploit

d74001a2d069dc7bd3fe5e0a60a4c625.png

5.最后,payload为,直接输入到文本框中

94b713b34c5c08d27ea1640822ef47ba.png

演示 4

与XHR类似,websocket所传递的数据也并不是全可信,在缺乏安全过滤的情况下,很有可能导致DOM型XSS漏洞。

此演示涉及websocket请求所引发的漏洞,其请求的数据将直接返回到客户端,然后被接收器HTMLElement.innerHTML读取,形成XSS。

1.在“Exercise - 4”页面的文本框中输入随机字符串,然后单击Execute Payload按钮。

0b054bbc1c77bfa19a2c49ebcc73d4a4.png

2.注意,此时的数据是由Websocketwss://domgo.at/ws提供的

3.使用Sboxr查看数据流

b3c6cba953f561b5d2e1f51d7422e74f.png

4.我们可以清楚看到接收器所接受的数据,借此创建exploit

975a5bd28df3b1ee96cd2e70a35482db.png

5.最后,我们在文本框中输入就可以看到弹框

136c1f898db8307cfb4a4b0dcecea5f9.png

演示 5

XHR,fetch API,websockets或postMessage等外部信道经常会被忽视,但都有可能成为DOM型XSS的源头。特别是当数据来自很多不同的来源时,就容易隐藏漏洞。作为安全人员,你必须留时刻意这些数据源。

本演示涉及一个postMessage,它将用户输入的数据发送到window.onmessage,然后再将数据发送到接收器HTMLElement.innerHTML,导致XSS漏洞。

1.在“Exercise - 5”页面的文本框中输入随机字符串,然后单击Execute Payload按钮

9c423bb3c0a6053c1351e22c39009652.png

2.在这种情况下,数据源头是来自https://domgo.at(同源)的窗口消息。

3.在Sboxr中查看整条数据流

1728d3e1dcde82dbdb946e055d92f20d.png

4.我们可以直接看到接收器所接受的数据,快速创建exploit

5b2a97ce9f8233410fa507180cb3477c.png

5.最后,我们在文本框中输入,就可以看到弹框

b2530ee8dd194bec5126ac9b1090160f.png

演示 6

另一个不可信的数据源是浏览器的本地存储,例如localStorage,sessionStorage和IndexedDB。虽然攻击者无法直接控制DOM Storage,但可能能够通过其他HTML元素或JS将恶意数据导入存储中。而这些数据最终可能会被提取出来并渲染,形成DOM型XSS。

一个很好的例子就是Twitter子域上的DOM型XSS——https://hackerone.com/reports/297968

在此演示中,利用的数据源是HTML LocalStorage。页面的JS会从localStorage读取数据,并将其发送到HTMLElement.innerHTML,最终形成XSS。

1.在“Exercise - 6”页面的文本框中输入随机字符串,然后单击Execute Payload按钮。

a6bf1ee6201d10eb3f88e3815eb5fa52.png

2.此时,渲染到页面的数据来自HTML localStorage。

3.我们可以在Sboxr查看从源到接收器的数据流

624eeb191dd56a03d890e1510db9b368.png

4.查看漏洞附近的代码,并创建exploit

dfaa54daf1b6d8bdbe02ea454cb95a6a.png

5.最后,在文本框中输入,就可以看到弹框

ca696d845f2a95f5db1f84390163d976.png

这就是这篇文章的全部内容。我将在接下来的几天放出第3部分的文章,再见!

参考

  1. Sboxr-https://sboxr.com
  2. DOM/Client XSS-https://www.owasp.org/index.php/Types_of_Cross-Site_sc ripting#DOM_ba sed_XSS_.28AKA_Type-0.29
  3. xm lHttpRequest(XHR)MDN-https://developer.mozilla.org/en-US/docs/Web/API/xm lHttpRequest
  4. window.postMessage()MDN-https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
  5. WebSocket API MDN-https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
  6. Fetch API MDN-https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API
  7. Web Storage API MDN-https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值