Czy jakiś haker może ukraść plik cookie od użytkownika i zalogować się z tą nazwą na stronie internetowej?

Czytając to pytanie

Różni użytkownicy otrzymują tę samą wartość pliku cookie w aspxanonymous

I szukać rozwiązania, zaczynam myśleć, czy jest możliwe, aby ktoś naprawdę ukraść cookie w jakiś sposób, a następnie umieścić go w swojej przeglądarce i zalogować powiedzmy jako administrator .

Czy wiesz, w jaki sposób uwierzytelnianie formularza może zapewnić, że nawet jeśli plik cookie zostanie zablokowany, haker nie zaloguje się za jego pomocą ?

Czy znasz jakiś inny automatyczny mechanizm obronny ?

Dziękuję w zaawansowanym.

Author: Community, 2010-03-23

6 answers

Czy można ukraść ciasteczko i uwierzytelnić jako administrator?

Tak jest to możliwe, jeśli formularze Auth cookie nie są szyfrowane, ktoś może zhakować swoje pliki cookie, aby nadać im podwyższone uprawnienia lub jeśli SSL nie jest wymagane, skopiuj plik cookie innej osoby. Jednak istnieją kroki, które możesz podjąć, aby zmniejszyć te ryzyko:

W systemie.web/authentication / forms element:

  1. requiessl = true Wymaga to, aby plik cookie był tylko przesyłane przez SSL
  2. slidingExpiration = false. Kiedy to prawda, wygasły bilet może zostać reaktywowany.
  3. cookieless = false. Nie używaj sesji bez gotowania w środowisku, w którym próbujesz wyegzekwować bezpieczeństwo.
  4. enableCrossAppRedirects = false. Jeśli są fałszywe, przetwarzanie plików cookie w aplikacjach jest niedozwolone.
  5. Ochrona = wszystkie. Szyfruje i hashuje Pliki cookie formularzy za pomocą klucza maszynowego określonego w maszynie.config lub web.config. Ta funkcja zatrzymałaby się ktoś z hakowania własnego pliku cookie, ponieważ to ustawienie mówi systemowi, aby wygenerował podpis pliku cookie i przy każdym żądaniu uwierzytelnienia porównał podpis z przekazanym plikiem cookie.

Jeśli tak chcesz, możesz dodać niewielką ochronę, umieszczając pewne informacje uwierzytelniające w sesji, takie jak hash nazwy użytkownika użytkownika (nigdy nazwa użytkownika w zwykłym tekście ani hasło). Wymagałoby to od atakującego kradzieży zarówno pliku cookie sesji, jak i Formularze Auth cookie.

 24
Author: Thomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-15 20:52:47

Scenariusz, w którym plik cookie może zostać skradziony, ma miejsce w publicznym środowisku bezprzewodowym. Chociaż ty lub ja nigdy nie działalibyśmy w takiej konfiguracji, może być niemożliwe, aby uniemożliwić to swoim klientom.

Jeśli atakujący wie, z jaką bezpieczną witryną jesteś połączony, chodzi o to, że twoja przeglądarka może zostać oszukana w celu wysłania wiadomości do niezabezpieczonej wersji tego samego adresu url. W tym momencie Twój plik cookie jest zagrożony.

Dlatego oprócz httpOnlyCookies będziesz chciał określić requireSSL="true"

<httpCookies httpOnlyCookies="true" requireSSL="true" />

Nie zgadzam się z komentarzem wieżyczki, ponieważ uważam to za niesprawiedliwe;

@Aristos zaktualizowałem swoją odpowiedź. Ale szczerze mówiąc, jeśli korzystasz z platformy programistycznej Microsoft, Twoja aplikacja będzie z natury niepewna. - Wieża 22 min. temu

Bezpieczeństwo nie dzieje się przez przypadek i nie dzieje się "od razu po wyjęciu z pudełka", przynajmniej nie z mojego doświadczenia. Nic nie jest bezpieczne, dopóki nie zostanie tak zaprojektowane, niezależnie od platformy lub narzędzi.

 12
Author: uncle brad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-12 06:35:38

W wielu przypadkach pliki cookie używane do uwierzytelniania są dopasowane do sesji na serwerze, więc nie jest możliwe tylko pobranie pliku cookie i "zalogowanie się", jednak możesz chcieć przeczytać o fałszerstwach żądań między witrynami, które pozwalają na złośliwe wykorzystanie tego pliku cookie:

Http://en.wikipedia.org/wiki/Cross-site_request_forgery

 3
Author: Paddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-23 09:17:58

Istnieje wiele sposobów, że identyfikator sesji może zostać wycieknięty do atakującego. XSS jest najczęściej używanym atakiem do przechwycenia identyfikatora sesji i powinieneś przetestować luki XSS w swojej aplikacji. . Powszechną metodą poprawy siły sesji jest sprawdzenie adresu IP. Gdy użytkownik się loguje, Zapisz adres ip. Sprawdź adres IP dla każdego żądania, jeśli ip się zmieni, to prawdopodobnie porwana sesja. Ten bezpieczny środek może zapobiec uzasadnionym wnioskom, ale to jestbardzo mało prawdopodobne.

Do not Sprawdź X-Forwarded-For lub User-Agent, to trywialne dla atakującego, aby zmodyfikować te wartości.

Polecam również włączenie httpOnlyCookies w Twojej sieci.plik konfiguracyjny:

<httpCookies httpOnlyCookies="true"/>

Utrudnia to atakującemu przechwycenie sesji za pomocą javascript, ale nadal jest to możliwe.

 2
Author: rook,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-24 01:06:46

Nie znam specyfiki danego pliku cookie, ale ogólnie złe jest przechowywanie zarówno nazwy użytkownika, jak i hasła w pliku cookie użytkownika. Zazwyczaj chcesz przechowywać tylko nazwę użytkownika w pliku cookie wraz z innymi informacjami poufnymi. W ten sposób użytkownik jest proszony o podanie hasła tylko podczas logowania.

 1
Author: Brian Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-23 09:12:45

Pracuję nad tym i wpadam na pomysł, że nie jestem pewien, czy jest to w 100% bezpieczne, ale jest to pomysł.

Mój pomysł jest taki, że każdy użytkownik musi przejść ze strony logowania.
Jeśli ktoś ukradł plik cookie, nie przechodzi stronę logowania, ale jest przejść bezpośrednio do strony reszta. nie może przejść strony logowania, ponieważ nie znał naprawdę hasła, więc jeśli przejdzie, to i tak zawiedzie.

Więc umieszczam dodatkową wartość sesji, którą użytkownik został przekazany z sukces strony logowania. Teraz wewnątrz każdej krytycznej strony, sprawdzam tę dodatkową wartość sesji i jeśli znalazłem ją null, loguję się i pytam ponownie o hasło.

Teraz Nie wiem, może wszystko, co zrobione wszystko gotowe przez microsoft, trzeba to sprawdzić więcej.

Aby sprawdzić ten pomysł używam tej funkcji, która bezpośrednio sprawia, że użytkownik jest zalogowany.

FormsAuthentication.SetAuthCookie("UserName", false);

Moim drugim zabezpieczeniem, które mam gotowe naprawić i użyć, jest to, że sprawdzam różne adresy IP i lub Różne Pliki cookie z tego samego zalogowany użytkownik. Wielu się nad tym zastanowiłem, wiele sprawdzianów (jeśli jest za proxy, jeśli jest z różnych krajów, czego szukać, ile razy go widziałem itp...) ale to jest ogólna idea.

Ten film pokazuje dokładnie to, co staram się zapobiec. Używając tej sztuczki, którą tutaj opisałem, nie możesz po prostu ustawić tylko pliku cookie logowania.

Dzielę się swoimi pomysłami...
 1
Author: Aristos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-20 12:06:59