У меня был довольно интересный случай взламывания на моем веб-сайте MVC ASP.NET. Для этого веб-сайта я реализовал довольно несложную систему аутентификации для своей администраторской области - зашифрованный cookie, который имел подпись идентификации для участника. Каждый раз, когда администратор посещает веб-сайт, cookie был бы дешифрован, и подпись проверяется. При соответствии он не должен был бы регистрироваться.
Несколько дней назад посетитель на моем сайте сказал мне, что смог подписаться в мой веб-сайт просто путем нажатия не на реферальную ссылку на его консоль Statcounter, которая указала на мою администраторскую область (я посетил его сайт из ссылки в моем администраторском представлении).
Он просто нажал на ссылку в statcounter, и он регистрировался как администратор!
Единственным путем это, возможно, произошло, был то, если statcounter так или иначе записал мои cookie и использовал их, когда он нажал на ссылку, указывающую на моего администратора!
Это логично или измеримо?
Я не понимаю то, что продолжается. У Вас есть какие-либо предложения относительно того, как я могу защитить свой веб-сайт от вещей как это?
Обновление: Я создал систему белого списка IP-адреса для защиты моего администратора от несанкционированного доступа. В основном сервер теперь сравнит IP-адрес посетителя против белого списка и только предоставит доступ, если IP-адрес будет в том списке. Это также поддерживает подстановочные знаки, таким образом, это будет хорошо даже для динамических IP-адресов.
Хотя это не является надежным, но это поднимает безопасность много меток.
Я не знаю, как вы выполняли аутентификацию на своем сайте, но я сделал это так, и я не думаю, что кто-то может сломать этот:
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 и шифрует cookie с помощью ключа с вашего компьютера. config
Я не понимаю, как это могло произойти через StatCounter - даже если он предоставит ссылку на вашу админку, как описано, его локальный компьютер не сможет иметь файл cookie аутентификации. Попросите его прислать вам ссылку, по которой он перешел, и попробуйте сами в браузере, который вы обычно не используете, или на другом ПК. Я предполагаю, что в вашей системе аутентификации есть какой-то недостаток, что означает, что ссылка на админка работает автоматически, если кто-то (то есть вы) уже вошел в систему в другом месте. В качестве альтернативы ссылка включает ваши полные учетные данные, и это не вина StatCounter.
Вероятно, сайт уязвим для пассивного XSS. Я могу вам помочь, но вам нужно опубликовать адрес сайта.
На будущее, если вы хотите защитить свой (или пользовательский) cookie, установите его следующим образом:
$cookie = encoded($user-ip-address);
Далее, для проверки подписи:
if ( decoded($cookie) == $user-ip-address ){
//succesefull login
}