Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
У цьому [**виклику**](https://github.com/terjanq/same-origin-xss), створеному [**NDevTK**](https://github.com/NDevTK) та [**Terjanq**](https://github.com/terjanq), вам потрібно експлуатувати XSS у закодованому
Основна проблема полягає в тому, що [**головна сторінка**](https://so-xss.terjanq.me) використовує DomPurify для відправки `data.body`, тому для того, щоб надіслати свої власні html дані до цього коду, вам потрібно **обійти**`e.origin !== window.origin`.
Коли `//example.org` вбудовано в **пісочницю iframe**, тоді **походження** сторінки буде **`null`**, тобто **`window.origin === null`**. Тож просто вбудувавши iframe через `<iframe sandbox="allow-scripts" src="https://so-xss.terjanq.me/iframe.php">`, ми можемо **примусити походження `null`**.
Менш відомий факт полягає в тому, що коли **значення пісочниці `allow-popups` встановлено**, тоді **відкритий спливаючий вікно** буде **успадковувати** всі **атрибути пісочниці**, якщо не встановлено `allow-popups-to-escape-sandbox`.\
Отже, відкриття **спливаючого вікна** з **null походження** зробить **`window.origin`** всередині спливаючого вікна також **`null`**.
Отже, для цього виклику можна **створити****iframe**, **відкрити спливаюче вікно** на сторінку з вразливим обробником коду XSS (`/iframe.php`), оскільки `window.origin === e.origin`, тому що обидва є `null`, можливо **надіслати корисне навантаження, яке експлуатує XSS**.
Це **корисне навантаження** отримає **ідентифікатор**і надішле **XSS****назад на верхню сторінку** (сторінка, яка відкрила спливаюче вікно), **яка****змінить місцезнаходження** на **вразливу**`/iframe.php`. Оскільки ідентифікатор відомий, не має значення, що умова `window.origin === e.origin` не задовольняється (пам'ятайте, походження - це **спливаюче вікно** з iframe, яке має **походження****`null`**) тому що `data.identifier === identifier`. Тоді **XSS спрацює знову**, цього разу в правильному походженні.
Вивчайте та практикуйте AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Вивчайте та практикуйте GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)