Тут Bo0oM запостил интересную фичу.
В ASP.NET есть удобная олдскульная фича - cookieless session. Она осталась ещё с тех времён, когда куки поддерживались не всеми браузерами и сессию приходилось передавать внутри URL.
Например,
При использовании Control.ResolveUrl метода, это значение может выводится без корректного энкодинга символов, что может давать нам XSS-ку:
+
->
Более подробно об этой особенности и эксплуатации можно почитать ТУТ
Кроме того, эту фичу можно использовать для обхода ограничений на реверс прокси к админке приложения бэкэнда (всё что начинается с “/admin”), например:
Работает в .NET 2.0-4.8. В .NET Core всех версий и в .NET5 это не поддерживается.
В ASP.NET есть удобная олдскульная фича - cookieless session. Она осталась ещё с тех времён, когда куки поддерживались не всеми браузерами и сессию приходилось передавать внутри URL.
Например,
http://www.example.com/(S(lit3py55t21z5v55vlm25s55))/default.aspxПри использовании Control.ResolveUrl метода, это значение может выводится без корректного энкодинга символов, что может давать нам XSS-ку:
<script src="<%= ResolveUrl("~/Script.js") %>"></script>+
http://example.com/(A(%22onerror=%22alert`1`%22))/default.aspx->
<script src="/(A("onerror="alert`1"))/Script.js"></script>Более подробно об этой особенности и эксплуатации можно почитать ТУТ
Кроме того, эту фичу можно использовать для обхода ограничений на реверс прокси к админке приложения бэкэнда (всё что начинается с “/admin”), например:
http://victim.com/admin - 403http://victim.com/(A(ABCD))/admin - 200Работает в .NET 2.0-4.8. В .NET Core всех версий и в .NET5 это не поддерживается.