Мой сайт был взломан с помощью Statcounter! Ведет ли Statcounter учет файлов cookie? - PullRequest
5 голосов
/ 20 марта 2010

У меня был довольно интересный случай взлома на моем сайте ASP.Net MVC. Для этого веб-сайта я внедрил довольно простую систему аутентификации для моей административной области - зашифрованный куки-файл, который имел идентификационную подпись для участника. Каждый раз, когда администратор посещает веб-сайт, cookie-файл будет расшифровываться и проверяться подпись. При совпадении ему не нужно будет входить.

Пару дней назад посетитель моего сайта сказал мне, что он может войти на мой сайт, просто не щелкнув по реферальной ссылке на его консоли Statcounter, которая указывает на мою область администратора (я заходил на его сайт по ссылке внутри мой админский вид).

Он просто нажал на ссылку в statcounter, и он вошел как администратор!

Единственный способ, которым это могло бы произойти, это если бы statcounter каким-то образом записал мои куки и использовал их, когда щелкнул ссылку, указывающую на моего администратора!

Это логично или понятно?

Я не понимаю, что происходит. Есть ли у вас какие-либо предложения относительно того, как я могу защитить свой веб-сайт от подобных вещей?

Обновление : я создал систему белых списков IP-адресов, чтобы защитить моего администратора от несанкционированного доступа. По сути, теперь сервер будет сравнивать IP-адрес посетителя с белым списком и разрешать доступ только в том случае, если IP-адрес находится в этом списке. Он также поддерживает подстановочные знаки, так что это будет хорошо даже для динамических IP-адресов.

Несмотря на то, что он не защищен от дурака, он требует много защиты.

Ответы [ 5 ]

3 голосов
/ 20 марта 2010

Я не знаю, как вы сделали аутентификацию на вашем сайте, но я так и сделал, и я не думаю, что кто-то может взломать это:

var authTicket = new FormsAuthenticationTicket(
          1,
          userName,  //user id
          DateTime.Now,
          DateTime.Now.AddMinutes(20),  // expiry
          createPersistentCookie, 
          null,
          "/");

        var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(authTicket));

        HttpContext.Current.Response.Cookies.Add(cookie);

это использует FormsAuthentication и шифрует куки, используя ключ от вашего компьютера .config

2 голосов
/ 20 марта 2010

Я не понимаю, как это могло произойти через StatCounter - даже если бы он раскрыл ссылку на вашу административную область, как описано, на его локальном компьютере не было бы куки-файла аутентификации. Попросите его отправить вам ссылку, по которой он перешел, и попробуйте сами в браузере, который вы обычно не используете, или на другом компьютере. Я предполагаю, что в вашей системе аутентификации есть какой-то недостаток, который означает, что ссылка на область администратора автоматически работает, если кто-то (то есть вы) уже вошел в систему в другом месте. Кроме того, ссылка включает в себя ваши полные учетные данные, и это не ошибка StatCounter.

0 голосов
/ 05 сентября 2012

Нет, StatCounter не ведет учет файлов cookie!

Файлы cookie можно отправлять только на исходный домен или с него, поэтому файлы cookie для вашего сайта в любом случае никогда не могли быть отправлены в StatCounter.

Я предполагаю, что у первоначального участника, который заходил на ваш сайт администратора, не были включены куки, и ваш сайт .net использовал URL, кодирующий идентификатор сеанса.

Этот кодированный в сеансе URL-адрес был записан StatCounter в качестве реферальной ссылки, которая просочилась при аутентификации.

Подробнее: Защита от перехвата сеанса в ASP.NET

0 голосов
/ 20 марта 2010

Похоже на украденное печенье через XSS .Довольно старая статья но это вас интересует.

0 голосов
/ 20 марта 2010

Вероятно, сайт уязвим для пассивного XSS. Я могу вам помочь, но вам нужно опубликовать адрес сайта.

На будущее, если вы хотите защитить свой (или пользовательский) файл cookie, установите его следующим образом:

$cookie = encoded($user-ip-address);


Далее, для проверки подписи:

if ( decoded($cookie) == $user-ip-address ){
    //succesefull login
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...