Używasz ResolveUrl? Słyszałeś…

Categories Informatyka

Używasz ResolveUrl? Słyszałeś o Cookieless? #od0dopentestera
Twój kod odwołuje się do skryptu #js

<script src=”<%= ResolveUrl(„~/Script.js”) %>”></script>

Ciężko znaleźć tu błąd. Chyba, że wczytamy się w instrukcję.
Dawno temu nie każda przeglądarka obsługiwała ciasteczka.
Serwisy chciały jednak w jakiś sposób zapamiętywać stan sesji użytkownika.
Wymyślono więc, że informacje na ten temat będą przekazywane w adresie URL.

Adres:
http://example.com/aplikacja/home.aspx
Zamieniano na:
http://example.com/aplikacja/(A(XXXX)S(XXXX)F(XXXX))/home.aspx

W miejscu XXXX aplikacja automatycznie doklejała identyfikator sesji.
Dziś mało kto korzysta z tej opcji – ale ona dalej istnieje.

Paweł Hałdrzyński (autor badań) postanowił sprawdzić jakie znaki może zawierać identyfikator sesji – czyli co można użyć w miejscu XXXX.
.NET zwraca błąd 400 dla nieprawidłowych znaków – między innymi >, <, ?, %, $, ).
Nie zwraca jednak błędu dla spacji oraz dla ` i „.

A to może prowadzić do błędów XSS. Dlaczego? Spójrz na przykład z góry.
W miejsce ResolveUrl wstawiamy złośliwe dane przekazane przez użytkownika:

http://example.com/aplikacja/(S( onerror=alert`1` ))/home.aspx

Taki adres zostanie wyświetlony jako:

src=”/(S(” onerror=alert`1 `

Czyli przeglądarka spróbuje pobrać obrazek /(S(. Jeżeli go nie znajdzie – wykona event onerror – czyli wyświetli okienko alert.

Zobacz film na YouTube.

Chcesz otrzymywać takie materiały na swój email? Dołącz do newslettera.
Masz pytanie na temat bezpieczeństwa? Zadaj je na grupie od 0 do pentestera na Facebooku.
Subskrybuj kanał na YouTube
Jeżeli chcesz być wołany dodaj się do Mirkolisty.

#gruparatowaniapoziomu #ciekawostki #informatyka #security #programowanie #programista15k #javascript #dotnet #csharp #aspnet #webdev