W jaki sposób nieszkodliwy robot przeoczył uwierzytelnianie WebForms i przejął sesję użytkownika?

Ostatniej nocy zadzwonił klient, szalony, ponieważ Google przechował w pamięci podręcznej wersje prywatnych informacji o pracownikach. Informacje nie są dostępne, chyba że się zalogujesz.

Poszukiwali swojej domeny w Google, np .:

site:example.com

i zauważyłem, że Googled zaindeksował i zbuforował niektóre wewnętrzne strony.

Sam przeglądam wersje stron w pamięci podręcznej:

To jest pamięć podręczna Google'ahttps://example.com/(F(NSvQJ0SS3gYRJB4UUcDa1z7JWp7Qy7Kb76XGu8riAA1idys-nfR1mid8Qw7sZH0DYcL64GGiB6FK_TLBy3yr0KnARauyjjDL3Wdf1QcS-ivVwWrq-htW_qIeViQlz6CHtm0faD8qVOmAzdArbgngDfMMSg_N4u45UysZxTnL3d6mCX7pe2Ezj0F21g4w9VP57ZlXQ_6Rf-HhK8kMBxEdtlrEm2gBwBhOCcf_f71GdkI1))/ViewTransaction.aspx?transactionNumber=12345. Jest to migawka strony, która ukazała się 15 września 2013 r. 00:07:22 GMT

Byłem zdezorientowany długim adresem URL. Zamiast:

https://example.com/ViewTransaction.aspx?transactionNumber=12345

wstawiono długi ciąg:

https://example.com/[...snip...]/ViewTransaction.aspx?transactionNumber=12345

Kilka minut zajęło mi zapamiętanie: to może byćobjaw stron ASP.net„sesje bez ciastek”. Jeśli Twoja przeglądarka nie obsługujeSet-Cookie, strona internetowa umieści ciasteczko w adresie URL.

Z wyjątkiem tego, że nasza strona tego nie używa.

A nawet jeśli nasza stronazrobił automatycznie wykrywane są sesje bez plików cookie, a Google zdołał nakłonić serwer WWW do przekazania mu sesji w adresie URL, w jaki sposób przejął sesję innego użytkownika?

Tak,Google nie-złośliwy bot przejął sesję

Witryna jest indeksowana przez boty od lat. A ten ostatni maj 29 nie był inny.

Google zwykle zaczyna indeksować, sprawdzającrobots.txt plik (nie mamy go). Ale nikt nie może przygotowywać niczego na stronie (w tymrobots.txt) bez uprzedniego uwierzytelnienia, więc kończy się niepowodzeniem:

Time      Uri                      Port  User Name         Status
========  =======================  ====  ================  ======
1:33:04   GET /robots.txt          80                      302    ;not authenticated, see /Account/Login.aspx
1:33:04   GET /Account/Login.aspx  80                      302    ;use https plesae
1:33:04   GET /Account/Login.aspx  443                     200    ;go ahead, try to login

Cały czas Google szukał pliku robots.txt. Nigdy go nie dostał. Następnie powraca, aby zaindeksować root:

Time      Uri                      Port  User Name         Status
========  =======================  ====  ================  ======
1:33:04   GET /                    80                      302    ;not authenticated, see /Account/Login.aspx
1:33:04   GET /Account/Login.aspx  80                      302    ;use https plesae
1:33:04   GET /Account/Login.aspx  443                     200    ;go ahead, try to login

I kolejna kontrola robots.txt w bezpiecznej witrynie:

Time      Uri                      Port  User Name         Status
========  =======================  ====  ================  ======
1:33:04   GET /robots.txt          443                     302    ;not authenticated, see /Account/Login.aspx
1:33:04   GET /Account/Login.aspx  443                     200    ;go ahead, try to login

A potem arkusz stylów na stronie logowania:

Time      Uri                      Port  User Name         Status
========  =======================  ====  ================  ======
1:33:04   GET /Styles/Site.css     443                     200    

I tak działa każdy indeks z GoogleBota, msnbota i BingBota. Roboty, logowanie, bezpieczeństwo, logowanie. Nigdy nie nigdzie się nie dostaniesz, ponieważ nie może przejść przez toUwierzytelnianie formularzy internetowych. I wszystko jest dobrze ze światem.

Aż pewnego dnia; z nikąd

Do pewnego dnia pojawia się GoogleBot z plikiem cookie sesjiw ręce!

Time      Uri                        Port  User Name            Status
========  =========================  ====  ===================  ======
1:49:21   GET /                      443   [email protected]  200    ;they showed up logged in!
1:57:35   GET /ControlPanel.aspx     443   [email protected]  200    ;now they're crawling that user's stuff!
1:57:35   GET /Defautl.aspx          443   [email protected]  200    ;back to the homepage
2:07:21   GET /ViewTransaction.aspx  443   [email protected]  200    ;and here comes the private information

Użytkownik,[email protected] nie był zalogowany przez ponad dzień. (Miałem nadzieję, że IIS poda ten sam identyfikator sesji dwóm równoczesnym odwiedzającym, rozdzielonym przez recykling aplikacji). I nasza strona (web.config) nie jest skonfigurowany do włączania plików cookie bez sesji. I serwer (machine.config) nie jest skonfigurowany do włączania plików cookie bez sesji.

Więc:

w jaki sposób Google otrzymał plik cookie bez sesji?w jaki sposób Google otrzymałważny bez sesyjny plik cookie?w jaki sposób Google otrzymałważny sesyjny plik cookie należący do innego użytkownika?

Jeszcze 1 października (4 dni temu) GoogleBot byłnadal pojawia się, ciasteczko w ręku, logując się jako ten użytkownik, indeksując, buforując i publikując, niektóre z ich prywatnych danych.

Jak jestGoogle nieszkodliwe pominięcie przeszukiwacza sieciFormularze internetowe poświadczenie?

IIS7, Windows Server 2008 R2, pojedynczy serwer.

Teorie

Serwer nie jest skonfigurowany do wydawania sesji gotowania. Ale ignorując ten fakt, w jaki sposób Google może ominąć uwierzytelnianie?

GoogleBot odwiedza stronę internetową i próbuje losowych nazw użytkowników i haseł(mało prawdopodobne, dzienniki nie pokazują żadnych prób logowania)GoogleBot zdecydował się wstawić losową sesję cookieless do łańcucha adresu URL i zdarzyło się, że pasował do sesji istniejącego użytkownika(raczej nie)Użytkownikowi udało się dowiedzieć, jak sprawić, by witryna internetowa IIS zwróciła adres URL strony internetowej(raczej nie), a następnie wkleił ten adres URL do innej strony internetowej(raczej nie), gdzie Google znalazł adres e-mail kucharza i go zaindeksowałUżytkownik działa za pośrednictwem mobilnego serwera proxy(których nie ma). Serwer proxy nie obsługuje plików cookie, dzięki czemu IIS tworzy sesję „cookieless”. To (np.Opera Mobile) serwer buforujący został złamany(raczej nie) i wszystkie linki z pamięci podręcznej opublikowane na forum hakerów. GoogleBot zaindeksował forum hakerów i zaczął śledzić wszystkie linki; w tym nasz[email protected] url sesji cookieless.Użytkownik ma wirusa, który udaje się przykleić dowolne serwery internetowe IIS do przekazania adresu URL bez kucharza. Wirus następnie zgłasza się do centrali. Adresy URL są umieszczane na publicznie dostępnym zasobie, który indeksuje GoogleBot. GoogleBot pojawia się następnie na naszym serwerze z adresem URL bez kucharza.

Żadne z nich nie są naprawdę możliwe.

Jak możnaGoogle niezbyt złośliwy robot internetowy pomija uwierzytelnianie WebForms i przejmuje kontrolę nad istniejącą sesją użytkownika?

O co pytasz?

Nawet nie wiemw jaki sposób strona internetowa ASP.net, która nie jest skonfigurowana do wydawania sesji kucharskich, mogłaby dać sesję kucharzy. Czy możliwe jest cofnięcie konwersjiidentyfikator sesji oparty na plikach cookie w a identyfikator sesji oparty na cookieless? Mógłbym zacytować odpowiednie<sessionState> Sekcjaweb.config imachine.configi pokaż, że nie ma obecności

<sessionState cookieless="true">

W jaki sposób serwer internetowy decyduje, że przeglądarka nie obsługuje plików cookie? Próbowałem zablokować pliki cookie w Chrome i nigdy nie otrzymałem identyfikatora sesji bez plików cookie. Czy mogę symulować przeglądarkę, która nie obsługuje plików cookie, w celu sprawdzenia, czy mój serwer nie rozdaje sesji Cookieess?

Czy serwer decyduje o sesjach kucharzyAgent użytkownika strunowy? Jeśli tak, mogę ustawić Internet Explorera za pomocą sfałszowanego UA.

Czy tożsamość sesji w ASP.net zależy wyłącznie od pliku cookie? Czy każdy, z dowolnego adresu IP, z cookie-url, może uzyskać dostęp do tej sesji? Czy ASP.net również domyślnie nie bierze pod uwagę?

Jeśli ASP.netrobi powiązać adres IP z sesją, czy nie oznacza to, że sesja nie mogła pochodzić od pracownika na ich komputerze domowym? Ponieważ wtedy, gdy robot GoogleBot próbował użyć go z Google IP, nie powiodło się?

Czy były jakieś przypadki w dowolnym miejscu (poza tym, do którego dowiązałem) ASP.net udostępniające sesje cookieless, gdy nie jest skonfigurowane? Czy jest na tym problem Microsoft Connect?

Czy wiadomo, że uwierzytelnianie formularzy internetowych ma problemy i nie powinno być używane do zabezpieczeń?

Czytanie premiiFacet na StackOverflow, który jest serwerem internetowym, czasami rozdaje adresy URL, gdy nie jest skonfigurowany

Edytować: Usunięto nazwęGoogle bot, który ominął przywilej, ponieważ ludzie są opóźnieni w spodniach; myląceGoogle nazwa robota dla czegoś innego. używamGoogle nazwa robota jako przypomnienie, że był to nie złośliwy robot sieciowy, który zdołał zaindeksować go w sesji WebForm innego użytkownika. Ma to na celu przeciwstawienie go złośliwemu robotowi, który próbował włamać się do sesji innego użytkownika. Nic jak pedant, aby wydobyć pogorszenie.

questionAnswers(2)

yourAnswerToTheQuestion