2010-03-20 10 views
5

Ho avuto un caso piuttosto interessante di hacking sul mio sito Web ASP.Net MVC. Per questo sito ho implementato un sistema di autenticazione piuttosto semplice per la mia area di amministrazione: un cookie crittografato che aveva una firma identificativa per il membro. Ogni volta che l'amministratore visita il sito Web, il cookie viene decodificato e la firma viene verificata. Se corrispondenza non avrebbe dovuto firmare in.Il mio sito web è stato violato usando Statcounter! Statcounter conserva un registro dei cookie?

paio di giorni fa un visitatore sul mio sito mi ha detto che era in grado di accedere al mio sito web semplicemente cliccando senza un link di riferimento per la sua console di Statcounter, che ha indicato il mio area di amministrazione (avevo visitato il suo sito da un link nella mia vista amministratore).

Ha appena fatto clic su un collegamento in statcounter e ha effettuato l'accesso come amministratore!

L'unico modo in cui questo poteva essere successo era se statcounter in qualche modo registrava i miei cookie e li usava quando ha cliccato sul link che punta al mio amministratore!

È logico o comprensibile?

Non capisco cosa sta succedendo. Hai qualche suggerimento su come posso proteggere il mio sito web da cose del genere?

Aggiornamento: Ho creato un sistema di whitelisting degli indirizzi IP per proteggere il mio amministratore da accessi non autorizzati. Fondamentalmente il server ora confronterà l'indirizzo IP del visitatore con una whitelist e consentirà l'accesso solo se l'indirizzo IP è in quell'elenco. Supporta anche i caratteri jolly, quindi andrà bene anche per gli indirizzi IP dinamici.

Anche se non è infallibile, ma prende la sicurezza molte tacche.

risposta

2

Non vedo come sarebbe potuto accadere tramite StatCounter - anche se ha esposto il link all'area di amministrazione come descritto, il suo computer locale non avrebbe il cookie di autenticazione. Chiedigli di inviarti il ​​link che ha seguito e di provare tu stesso su un browser che non usi normalmente o su un PC diverso. La mia ipotesi è che ci sia qualcosa di difettoso nel tuo sistema di autenticazione che significa che un link all'area di amministrazione funziona automaticamente se qualcuno (cioè tu) ha già effettuato l'accesso altrove. In alternativa, il link include tutte le credenziali e non è colpa di StatCounter.

+0

non sto usando una variabile statica o globale per contenere i dati di accesso. È fatto attraverso il dizionario ViewData, quindi non penso che il problema che hai delineato possa essersi verificato. Hai qualche altra idea. –

0

Probabilmente il sito è vulnerabile a XSS passivo. Posso aiutarti, ma è necessario pubblicare l'indirizzo del sito.

Per il futuro, se si vuole proteggere il vostro (o utente) biscotto, impostate in questo modo:

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


successivo, per verificare la firma:

if (decoded($cookie) == $user-ip-address){ 
    //succesefull login 
} 
+0

Ma l'indirizzo IP dell'utente non è permanente per la maggior parte degli utenti e questo è un cookie a lungo termine (ricordati di me). Come posso usare questo? –

+0

Se l'accesso non ha esito positivo, è possibile visualizzare un modulo di accesso, oppure inviare un'e-mail con un link speciale all'utente e informarlo al riguardo. Inoltre, quando è impostato cookie, non è necessario utilizzare solo IP, è possibile utilizzare la subnet. Per maggiore sicurezza, puoi combinare la subnet + OS o la versione del browser. – B7ackAnge7z

3

I don So come hai fatto l'autenticazione sul tuo sito, ma è così che l'ho fatto, e non mi importa che qualcuno possa rompere questo:

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); 

questo utilizza FormsAuthentication e crittografa il cookie utilizzando la chiave dal vostro machine.config

+0

No, non ho usato l'autenticazione basata su form. Ho arrotolato il mio ed ero abbastanza convinto che non si dovesse rompere. Ma a quanto pare ha ... E non a causa di hacking intenzionale, solo un link cliccato. –

+2

Perché non ti piace FormsAuthentication o WindowsAuthentication, non è abbastanza sicuro ?, Non ho sentito nessuno rompere quelle 2 – Omu

0

Suona come un cookie rubato tramite XSS. Abbastanza vecchio article ma questo ti interessa.

0

No, StatCounter non registra i cookie!

I cookie possono essere inviati solo a/dal loro dominio di origine, quindi i cookie per il tuo sito non potrebbero mai essere stati inviati a StatCounter in ogni caso.

La mia ipotesi è che il membro originale che ha effettuato l'accesso al sito di amministrazione non abbia abilitato i cookie e che il sito Web .net sia ricondotto all'URL che codifica l'id di sessione.

Questa sessione codificata nell'urea è stata registrata da StatCounter come collegamento di riferimento, che ha fatto fuoriuscire l'autenticazione.

Maggiori informazioni: Session Hijacking Protection in ASP.NET

Problemi correlati