Uygulamamda kimlik doğrulama (aspwin kimlik) için asp.net kimlik 2.0 kullanıyorum. Oturum ele geçirme: Kimlik girdiğimde, AspNet.ApplicationCookie.then'i oluşturduğumda, AspNet.ApplicationCookie değerini kopyaladım.Uygulamadan çıkış yaptım.Aramadan sonra, el ile tanımlama bilgisi (AspNet.ApplicationCookie) oluşturuyorum ve yeniden başlatıyorum ben ana sayfa.Privilege Escalation & Session Kimlik Çalma MVC5
Ayrıcalık Escalation: i Kullanıcı kopyalanan AI (AspNet.ApplicationCookie) onun çerez olarak oturum Aynı zamanda ve ben BI B kullanıcısı Cookie düzenlediğimden bir kullanıcı olarak oturum out.After açmış ve yapıştırılan Kullanıcı A çerez ve kaydedildi. Tarayıcıyı yeniledikten sonra UserA erişimi ve kimlik doğrulaması alabilirim.
Tüm oturumları temizliyorum ve tüm çerezleri siliyorum Oturumu kapattığımda.Even Asp.Net kimliği (Owin) her zaman yeni AspNet.ApplicationCookie üretir.Ama yine de eski tanımlama bilgilerini kabul eder ve bana erişim sağlar Neden bilmiyorum Herhangi biri, çıkış yaptıktan sonra eski AspNet.ApplicationCookie'yi geçersiz kılma hakkını verebilir. Bu Startup.Auth.cs benim kodudur
public void ConfigureAuth(IAppBuilder app)
{
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
// Use a cookie to temporarily store information about a user logging in with a third party login provider
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
}
// Bu çıkış kodudur
public ActionResult LogOff ()
{
//Delete all cookies while user log out
string[] myCookies = Request.Cookies.AllKeys;
foreach (var cookies in myCookies)
{
Response.Cookies[ cookies ].Expires = DateTime.Now.AddDays(-1);
}
Request.GetOwinContext().Authentication.SignOut(Microsoft.AspNet.Identity.DefaultAuthenticationTypes.ApplicationCookie);
// AuthenticationManager.SignOut();
Session.Clear();
Session.RemoveAll();
Session.Abandon();
return RedirectToAction("LoginPage", "Account");
}
// Bu Bu tasarım gereğidir
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user != null)
{
await SignInAsync(user, model.RememberMe);
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}