Posta 是一个用于研究跨文档消息传递(Cross-document Messaging)通信的工具。它允许你跟踪、探索和利用 postMessage 漏洞,并包含诸如重放在已附加浏览器中窗口之间发送的消息等功能。

在开发环境中运行 Posta:
git clone https://github.com/benso-io/posta
cd posta
npm install
npm start
开发模式包含一个本地 Web 服务器,用于提供一个小型测试站点和漏洞利用页面。 在开发模式下运行时,你可以通过 http://localhost:8080/exploit/ 访问漏洞利用页面。
开发环境会在源代码发生变化时重新构建扩展。若要对 UI 进行开发,请启动开发环境,进行更改并刷新。请注意,后台页面的更改会被重新构建,但只有在扩展程序重启(通过浏览器菜单)后才会生效。
以 Chrome / Chromium 扩展程序运行 Posta:
git clone https://github.com/benso-io/posta.git
chrome://extensionschrome-extension 目录并上传到浏览器在标签页部分,我们可以找到我们的主源(Origin),以及它通过会话托管和通信的 iframe。 我们可以通过点击选择特定的框架,并仅观察与该框架相关的 postMessages。

在消息部分,我们可以检查从源发送到其 iframe 以及反向的所有 postMessage 流量。
我们可以通过点击选择特定的通信以进行进一步检查。
监听器区域展示了负责处理通信的代码,我们可以点击并复制其内容以进行 JS 代码观察。

在控制台部分,我们可以修改原始的 postMessage 流量,并使用篡改后的值重放消息,这些消息将从源发送到其 iframe。
我们应该进行测试,看看能否通过更改 postMessage 内容来影响网站的行为。如果成功,那么就该尝试从不同的源进行利用,点击“模拟漏洞利用”。

点击“主机”按钮以导航到漏洞利用窗口。
在漏洞利用部分,Posta 将尝试将指定的源作为 iframe 托管,以启动 postMessage 通信。大多数情况下我们无法做到,因为原始网站上启用了 X-Frame-Options。
因此,为了继续我们的利用,我们需要通过启动 window.open 方法来获取与源的通信引用,这可以通过点击**“以标签页方式打开”**来实现。
我们右侧有控制台,它将帮助我们修改和定制指定的负载,并在跨源通信中进行测试,通过点击漏洞利用按钮启动。
