2012-06-03 11 views
6

Używam uwierzytelniania formularza to ASP.NET. Prowadzę testy penetracyjne dla projektu szkolnego. Używam narzędzia do badania penetracji LENS -ASP.NET. W wynikach powiedział mi, że moja aplikacja może być podatna na utrwalanie sesji. Czy ktoś wie, jak można temu zaradzić?Session Fixation - Uwierzytelnianie formularza

Dzięki

Odpowiedz

11

utrwalenie sesja jest atakiem, w którym jedna osoba mocuje identyfikator sesji innej osoby (SID).

Atak rozpoczyna się od atakującego odwiedzającego stronę internetową i ustanawiającego prawidłową sesję, gdy aplikacja dostarcza plik cookie zawierający identyfikator sesji, atakujący naprawił lub zablokował znaną dobrą sesję. Następnie osoba atakująca oszuka ofiarę za pomocą tego identyfikatora sesji. W tym momencie atakujący i ofiara mają ten sam identyfikator sesji. W każdej chwili informacje przechowywane w tej sesji utrwalonej są wykorzystywane do podejmowania decyzji dotyczących ofiary lub wyświetlania informacji, które ofiara powinna zobaczyć, może potencjalnie wykorzystać i wyświetlić ją atakującemu! Możesz read more here.

Jedynym obejściem tego problemu będzie ASP.NET do wydać NOWY identyfikator sesji po udanym uwierzytelnieniu, W ten sposób, gdy ofiara zaloguje się, osoba atakująca nie będzie miała dostępu do sesji. Kolejnym punktem do zapamiętania. NIGDY dostarczyć sesji aż użytkownik loguje się

Pamiętaj, że w ASP.NET Session.Abandon() nie jest wystarczająca do tego zadania, to nie usuwa cookie identyfikator sesji z przeglądarki użytkownika, więc każda nowa wniosek do tej samej aplikacji, po zakończeniu sesji, użyje tego samego identyfikatora sesji i nowej instancji stanu sesji! As Microsoft states here. Trzeba porzucić sesję i wyraźny identyfikator sesji ciasteczko:

Session.Abandon(); 
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); 

Jest to również dobra praktyka, aby zmienić nazwę pliku cookie uwierzytelniania Form, w pliku web.config:

<authentication mode="Forms"> 
    <forms name=".CookieName" loginUrl="LoginPage.aspx" /> 
</authentication> 

Oto dobry artykuł na Session Attacks and ASP.NET i jak go rozwiązać.