Как безвредный сканер обошел аутентификацию WebForms и перехватил сеанс пользователя?
Прошлой ночью клиент позвонил, отчаянно, потому что Google кэшировал версии информации о частных сотрудниках. Информация недоступна, пока вы не авторизуетесь.
Они сделали поиск Google для своего домена, например:
site:example.com
и заметил, что Гугл сканировал и кэшировал некоторые внутренние страницы.
Глядя на кэшированные версии страниц самостоятельно:
Это гуглс кешемhttps://example.com/(F(NSvQJ0SS3gYRJB4UUcDa1z7JWp7Qy7Kb76XGu8riAA1idys-nfR1mid8Qw7sZH0DYcL64GGiB6FK_TLBy3yr0KnARauyjjDL3Wdf1QcS-ivVwWrq-htW_qIeViQlz6CHtm0faD8qVOmAzdArbgngDfMMSg_N4u45UysZxTnL3d6mCX7pe2Ezj0F21g4w9VP57ZlXQ_6Rf-HhK8kMBxEdtlrEm2gBwBhOCcf_f71GdkI1))/ViewTransaction.aspx?transactionNumber=12345, Это снимок страницы, как он появился 15 сентября 2013 г. 00:07:22 GMT
Я был смущен длинным URL. Скорее, чем:
https://example.com/ViewTransaction.aspx?transactionNumber=12345
была вставлена длинная строка:
https://example.com/[...snip...]/ViewTransaction.aspx?transactionNumber=12345
Мне потребовалось несколько минут, чтобы вспомнить: это может бытьсимптом ASP.net "сеансы без печенья ", Если ваш браузер не поддерживаетSet-Cookieсайт будет вставлять куки в URL.
Кроме нашего сайта нетне использовать это.
И даже если наш сайтсделал автоматическое обнаружение сеансов без файлов cookie, и Google удалось убедить веб-сервер передать ему сеанс в URL, как он перешел к другому пользователю »сессия?
Да,Google не злой бот похитил сессиюСайт сканируется ботами в течение многих лет. И прошедшее 29 мая ничем не отличалось.
Google обычно начинает сканирование, проверяяrobots.txt
файл (мы неесть). Но никто не имеет права что-либо готовить на сайте (в том числеrobots.txt
) без предварительной проверки подлинности, поэтому она не работает:
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
Все это время Google искал файл robots.txt. Такого никогда не было. Затем он возвращается, чтобы попытаться сканировать корень:
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
И еще одна проверка robots.txt на защищенном сайте:
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
А затем таблица стилей на странице входа в систему:
Time Uri Port User Name Status
======== ======================= ==== ================ ======
1:33:04 GET /Styles/Site.css 443 200
И этоКак работает каждый обход GoogleBot, msnbot и BingBot. Роботы, логин, безопасный, логин. Никогда никуда не денется, потому что не может пройтиАутентификация веб-форм, И все хорошо с миром.
До одного дня; из ниоткудаДо тех пор, пока однажды не появится GoogleBot с файлом cookie сеансав руке!
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
Пользователь,[email protected]
не был зарегистрирован более суток. (Я надеялся, что IIS предоставил один и тот же идентификатор сеанса двум одновременным посетителям, разделенным перезаписью приложения). И наш сайт (web.config
) не настроен для включения сеансовых файлов cookie. И сервер (machine.config
) не настроен для включения сеансовых файлов cookie.
Так:
как Google получил файл cookie без сессии?как Google завладеладействительный безсессионный cookie?как Google завладеладействительный безсессионный cookie, принадлежавший другому пользователю?Совсем недавно, 1 октября (4 дня назад), GoogleBot былеще обнаружение, cookie в руке, вход в систему под этим пользователем, сканирование, кэширование и публикация, некоторые из их личных данных.
КакGoogle обход вредоносного веб-сканераWebForms аутентификация?
IIS7, Windows Server 2008 R2, один сервер.
ТеорииСервер не настроен на выдачу сеансов без файлов cookie. Но игнорируя этот факт, как Google может обойти аутентификацию?
GoogleBot посещает веб-сайт и пытается выбрать случайные имена пользователей и пароли(маловероятно, что в журналах нет попыток войти)GoogleBot решил вставить в строку URL случайный сеанс без файлов cookie, и он совпадал с сеансом существующего пользователя.(скорее всего, не)Пользователю удалось выяснить, как заставить веб-сайт IIS возвращать URL без файлов cookie(скорее всего, не), а затем вставил этот URL на другой веб-сайт(скорее всего, не)где Google нашел URL без файлов cookie и просканировал егоПользователь работает через мобильный прокси(которому они'повторно нет), Прокси-сервер неt не поддерживает файлы cookie, поэтому IIS создает сеанс без файлов cookie. Это (например,Opera Mobile) сервер кеширования был взломан(скорее всего, не) и все кешированные ссылки размещены на хакерском форуме. GoogleBot просканировал хакерский форум и начал переходить по всем ссылкам; в том числе наш[email protected]
URL сеанса без файлов cookie.У пользователя есть вирус, который успокаивает любые веб-серверы IIS и возвращает URL без файлов cookie. Этот вирус затем возвращается в штаб-квартиру. URL-адреса публикуются на общедоступном ресурсе, который сканирует GoogleBot. Затем на нашем сервере появляется GoogleBot с URL-адресом без файлов cookie.Ничто из этого не является правдоподобным.
Как можетGoogle не вредоносный веб-сканер обходит аутентификацию WebForms и захватывает пользователяСуществующая сессия?
Что ты спрашиваешь?Я недаже не знаюкак веб-сайт ASP.net, который не настроен на выдачу сеансов без cookie, может выдавать сеанс без cookie. Возможно ли обратное преобразованиеидентификатор сеанса на основе файлов cookie видентификатор сеанса без файлов cookie? Я мог бы процитировать соответствующие раздел
web.config
а такжеmachine.config
и показать нет присутствия
Как веб-сервер решает, что браузер нене поддерживает куки? Я пытался заблокировать файлы cookie в Chrome, и мне никогда не давали идентификатор сеанса без файлов cookie. Могу ли я смоделировать браузер, который не поддержка файлов cookie, чтобы убедиться, что мой сервер не выдает сеансы без файлов cookie?
Решает ли сервер сеансы без файлов cookieUser-Agent строка? Если так, я мог бы установить Internet Explorer с поддельным UA.
Идентификация сеанса в ASP.net зависит исключительно от файла cookie? Может ли кто-нибудь с любого IP с URL-адресом cookie получить доступ к этому сеансу? Разве ASP.net по умолчанию тоже не учитывает?
Если ASP.netделает связать IP-адрес с сеансом, неЭто означает, что сессия не можетt произошли от сотрудника на их домашнем компьютере? Потому что тогда, когда сканер GoogleBot попытался использовать его с Google IP, он потерпел бы неудачу?
Были ли где-нибудь (кроме того, на который я ссылался) экземпляры ASP.net, когда он выдавал сессии без файлов cookie?не настроен на? Есть ли проблема с Microsoft Connect?
Известно ли, что аутентификация Web-Forms имеет проблемы и не должна использоваться для безопасности?
Чтение бонусовПарень из StackOverflow, которыйвеб-сервер иногда выдает URL без файлов cookie, когдане настроен наредактировать: Удалено имяGoogle бот, который обошел привилегию, так как люди отстают в затылках; запутаннымGoogle имя гусеничного для чего-то другого. я используюGoogle имя сканера в качестве напоминания о том, что это не злонамеренный веб-сканер смог его отсканироватьпуть в другого пользователяс WebForm 'сессия. Это должно противопоставить его вредоносному сканеру, который пытался проникнуть в другого пользователя.сессия. Ничего подобного педанту, чтобы вызвать обострение.