tgoop.com/webpwn/267
Last Update:
В те времена, когда трава была зеленее, солнце светило ярче, самым крутым браузером был Netscape, а сайты верстали таблицами - не было CORS. Тем более таких штук как postMessage.
Но была крутая фича - имя текущего окна.window.name
- переменная, в которую можно записать данные на одном сайте, а прочитать уже на другом. Поэтому, во времена frameset, олдфаги использовали имя окна для полноценного междоменного взаимодействия. Сейчас это, конечно же, легаси.
Но переменная name
все еще доступна! Использование её в рамках одной вкладки позволяет передавать большое количество данных, тем самым минимизируя вектор атаки. А еще на сервере не залогируется, что именно ты выполнил (тоже забавно).
Особенно это полезно в случае CSRF + Reflected XSS, когда ты можешь определить name до того, как отправишь жертву на уязвимую ссылку прямо на странице с формой.
Ведь для полноценного выполнения полезной нагрузки достаточно вызвать eval(name)
(10 байт), а для подключения внешнего скрипта в Chrome import(name)
(12 байт).
Вот примерчик.
Ставим name с alert'ом на одном домене, а выполняем его на другом.
BY Кавычка
Share with your friend now:
tgoop.com/webpwn/267