
Расширение браузера для отслеживания, анализа и эксплуатации уязвимостей cross-document postMessage с возможностями повторения и симуляции эксплойтов между источниками.
Posta — это инструмент для исследования междокументной передачи сообщений. Он позволяет отслеживать, изучать и эксплуатировать уязвимости postMessage, а также включает функции, такие как повторная отправка сообщений между окнами в любом подключенном браузере.

Запустите Posta в среде разработки:
git clone https://github.com/benso-io/posta
cd posta
npm install
npm start
Режим разработки включает локальный веб-сервер, который обслуживает небольшой тестовый сайт и страницу эксплойта. При работе в режиме разработки вы можете получить доступ к странице эксплойта по адресу http://localhost:8080/exploit/
Среда разработки будет пересобирать расширение при изменении исходного кода. Чтобы работать с интерфейсом, запустите среду разработки, внесите изменения и обновите страницу. Обратите внимание, что изменения на фоновой странице пересобираются, но вступают в силу только после перезапуска расширения (из меню браузера).
Запустите Posta как расширение Chrome / Chromium:
git clone https://github.com/benso-io/posta.git
chrome://extensionschrome-extension внутри Posta и загрузите его в ваш браузерВ разделе Вкладки мы можем найти наш основной Origin с iframe, которые он размещает и с которыми взаимодействует в рамках сессии. Мы можем выбрать конкретный фрейм, щелкнув по нему, и наблюдать только postMessages, относящиеся к этому фрейму.

В разделе Сообщения мы можем просмотреть весь трафик postMessage, отправляемый от источника к его iframe и обратно.
Мы можем выбрать конкретное сообщение для дальнейшего изучения, щелкнув по нему.
Область Listeners представляет код, который отвечает за обработку сообщений; мы можем щелкнуть и скопировать его содержимое для анализа JS-кода.

В разделе консоли мы можем изменять исходный трафик postMessage и повторно отправлять сообщения с измененными значениями, которые будут отправлены от Origin к его iframe.
Мы должны проводить тесты и смотреть, можем ли мы повлиять на поведение веб-сайта, изменяя содержимое postMessage. Если это удается, пора попытаться использовать это из другого Origin, нажав «Симулировать эксплойт».

Нажмите кнопку «Хост», чтобы перейти к окну эксплуатации.
В разделе Эксплойт Posta попытается разместить указанный источник как iframe, чтобы инициировать обмен postMessage. В большинстве случаев это не удастся из-за включенной опции X-Frame-Options на исходном веб-сайте.
Поэтому, чтобы продолжить эксплуатацию, нам нужно получить ссылку на общение с нашим Origin, инициировав метод window.open, что можно сделать, нажав «Открыть как вкладку».
Справа у нас есть консоль, которая поможет нам изменять и создавать заданные полезные нагрузки и тестировать их в междоменной связи, инициируемой нажатием кнопки Эксплойт.
