Собираюсь покопаться в эксплойтах XSS... Хочу немного расписать про это...
В 2025 году в XSS настоящий бум... DOM Clobbering с новым трюком. Теперь это не просто инъекция <a id="window">. Хакеры активно используют Shadow DOM. Создавая кастомный элемент в Shadow Root и переписывая чувствительные методы, такие как document.createElement, можно внедрить вредоносный JS код прямо в движок рендеринга браузера. Поскольку это отделено от стандартного DOM, классические фильтры WAF оказываются слепыми!
Вторая тема... токсичные MutationObserver, которые реально портят жизнь. Их можно настроить так, чтобы отслеживать любые изменения в DOM и в бесконечном цикле внедрять XSS-пейлоады в динамические элементы. Представьте SPA на React: если запустить вредоносный Observer, можно перед финальным рендером закинуть скрипт в DOM и полностью разрушить состояние приложения. Это клиентская атака, так что сервер вообще не в курсе!
Третий момент — обход CSP через JSONP и старые эндпоинты. Многие сайты до сих пор используют небрежные CSP, думая, что unsafe-inline их спасёт. Хакеры эксплуатируют callback’и JSONP, чтобы загружать вредоносные скрипты как ответы API. Например, <script src="/api/jsonp?cb=maliciousCode"> может обойти все политики CSP. Этот метод — как два пальца для legacy-приложений, которые всё ещё сидят на jQuery 3.x!
Четвёртое — XSS в WebAssembly! Поверьте, некоторые уже манипулируют WASM, чтобы запускать XSS на более низком уровне. Внедряя вредоносный модуль WASM в приложения, использующие WebAssembly для рендеринга или тяжёлых вычислений, можно инжектировать JS-код прямо в память браузера. Поскольку это работает на бинарном уровне, антивирусы и WAF просто парализованы. А ещё WASM не подчиняется CORS, так что может утечь чувствительные данные на любой домен!
Пятое — крутая техника под названием Event Listener Hijacking. Это реально подло! Хакеры внедряют вредоносный слушатель на чувствительные элементы, вроде <form> или <button>, и могут отслеживать любые события (клики, нажатия клавиш) и выполнять свой код раньше основного приложения. Например, повесь слушатель на oninput поля пароля... и всё, что вводит пользователь, у тебя в кармане! Этот метод часто встречается в приложениях на Vue.js с небрежной делегацией событий.
Шестое... злоупотребление postMessage в iframe’ах или воркерах. Многие сайты используют window.postMessage для общения между фреймами, но не проверяют origin должным образом. Хакер может внедрить вредоносный iframe и отправить фейковое сообщение, чтобы выполнить JS-код в контексте родительского окна. Этот метод активно косит жертв в чатах или дашбордах с Web Worker’ами. Был случай с известной платформой, где из-за простого postMessage украли сессию пользователя!
И последнее... эксплуатация Fetch API через уязвимые credentials. Хакеры используют fetch с credentials: include, чтобы отправлять вредоносные запросы к чувствительным API. Например, если приложение не использует SameSite Cookie правильно, XSS-пейлоад может отправить fetch на /api/delete-account и... пух! — аккаунт пользователя удалён. Поскольку запрос идёт из браузера жертвы, сервер думает, что это сам пользователь.
Если что-то протестировали, кидайте в форум, посмотрим, как с этим бороться!
В 2025 году в XSS настоящий бум... DOM Clobbering с новым трюком. Теперь это не просто инъекция <a id="window">. Хакеры активно используют Shadow DOM. Создавая кастомный элемент в Shadow Root и переписывая чувствительные методы, такие как document.createElement, можно внедрить вредоносный JS код прямо в движок рендеринга браузера. Поскольку это отделено от стандартного DOM, классические фильтры WAF оказываются слепыми!
Вторая тема... токсичные MutationObserver, которые реально портят жизнь. Их можно настроить так, чтобы отслеживать любые изменения в DOM и в бесконечном цикле внедрять XSS-пейлоады в динамические элементы. Представьте SPA на React: если запустить вредоносный Observer, можно перед финальным рендером закинуть скрипт в DOM и полностью разрушить состояние приложения. Это клиентская атака, так что сервер вообще не в курсе!
Третий момент — обход CSP через JSONP и старые эндпоинты. Многие сайты до сих пор используют небрежные CSP, думая, что unsafe-inline их спасёт. Хакеры эксплуатируют callback’и JSONP, чтобы загружать вредоносные скрипты как ответы API. Например, <script src="/api/jsonp?cb=maliciousCode"> может обойти все политики CSP. Этот метод — как два пальца для legacy-приложений, которые всё ещё сидят на jQuery 3.x!
Четвёртое — XSS в WebAssembly! Поверьте, некоторые уже манипулируют WASM, чтобы запускать XSS на более низком уровне. Внедряя вредоносный модуль WASM в приложения, использующие WebAssembly для рендеринга или тяжёлых вычислений, можно инжектировать JS-код прямо в память браузера. Поскольку это работает на бинарном уровне, антивирусы и WAF просто парализованы. А ещё WASM не подчиняется CORS, так что может утечь чувствительные данные на любой домен!
Пятое — крутая техника под названием Event Listener Hijacking. Это реально подло! Хакеры внедряют вредоносный слушатель на чувствительные элементы, вроде <form> или <button>, и могут отслеживать любые события (клики, нажатия клавиш) и выполнять свой код раньше основного приложения. Например, повесь слушатель на oninput поля пароля... и всё, что вводит пользователь, у тебя в кармане! Этот метод часто встречается в приложениях на Vue.js с небрежной делегацией событий.
Шестое... злоупотребление postMessage в iframe’ах или воркерах. Многие сайты используют window.postMessage для общения между фреймами, но не проверяют origin должным образом. Хакер может внедрить вредоносный iframe и отправить фейковое сообщение, чтобы выполнить JS-код в контексте родительского окна. Этот метод активно косит жертв в чатах или дашбордах с Web Worker’ами. Был случай с известной платформой, где из-за простого postMessage украли сессию пользователя!
И последнее... эксплуатация Fetch API через уязвимые credentials. Хакеры используют fetch с credentials: include, чтобы отправлять вредоносные запросы к чувствительным API. Например, если приложение не использует SameSite Cookie правильно, XSS-пейлоад может отправить fetch на /api/delete-account и... пух! — аккаунт пользователя удалён. Поскольку запрос идёт из браузера жертвы, сервер думает, что это сам пользователь.
Если что-то протестировали, кидайте в форум, посмотрим, как с этим бороться!
