Domanda:
Perché rubare i cookie non è sufficiente per l'autenticazione?
Kartikey singh
2018-01-29 23:19:41 UTC
view on stackexchange narkive permalink

Ho provato a esportare tutti i miei cookie tramite l'estensione "Modifica questo cookie" su una pagina di accesso che utilizza l'autenticazione dei cookie. Mentre ero disconnesso ho provato a inserire quei cookie sperando di essere loggato, ma non è successo niente.

Dopo la ricerca sono venuto a sapere che i cookie inviati sono in forma crittografata. Ma la pagina non utilizzava alcuna crittografia TLS. Mi manca qualcosa?

MODIFICA: ho provato a utilizzare gli stessi cookie mentre ero collegato , ovvero ho esportato tutti i cookie e importati in una finestra di navigazione in incognito ma non è successo niente.
Inoltre, questo tipo di attacco non sembra funzionare sui siti più popolari come Google, Facebook ecc. Quindi come si proteggono da tali attacchi?

La disconnessione non dovrebbe solo eliminare i cookie ma invalidare la sessione corrente, questa è una buona pratica.Quindi non dovresti essere in grado di riutilizzare i cookie di sessione dopo esserti disconnesso.
Come hai fatto a diventare "disconnesso"?Hai utilizzato una sessione del browser privato, hai semplicemente eliminato i cookie dopo averli esportati o hai utilizzato un pulsante di disconnessione dalla pagina web?
Le risposte seguenti rispondono anche alla tua nuova modifica.
Sette risposte:
Wadih M.
2018-01-30 01:40:54 UTC
view on stackexchange narkive permalink

Tecnicamente, anche se i contenuti nel cookie dovessero essere crittografati, se i cookie vengono copiati correttamente nel nuovo browser e il nuovo browser invia le stesse intestazioni HTTP (stessa stringa dell'agente utente, il referrer è come previsto, il computer ha lo stesso IP indirizzo e tutte le altre intestazioni che il server avrebbe potuto memorizzare in precedenza e confrontarle), teoricamente il server non sarebbe in grado di distinguere tra il browser originale e il nuovo browser .

Suppongo che tu stia cercando di copiare i cookie da un sito che ti registra automaticamente ogni volta che apri il browser e non ti sei disconnesso.

Alcuni siti potrebbero utilizzare altri modi per rilevare se si tratta di un cookie / sessione rubato, ma è una battaglia persa perché tutti questi possono ancora essere falsificati Ad esempio:

  • Controlla se l'indirizzo IP è cambiato
  • Lo user-agent è lo stesso
  • Controlla se il referrer ha senso
  • Qualsiasi altra intestazione HTTP che il browser invia

Per rispondere alla tua domanda, dovresti essere in grado di farlo funzionare se hai a che fare con un sito con login automatico e non sei disconnesso. Assicurati che tutte le intestazioni HTTP inviate dal tuo nuovo browser siano le stesse, che l'indirizzo IP sia lo stesso, il referrer sia quello previsto, lo stesso agente utente.

Nota che forse anche il servizio che stai utilizzando sta utilizzando un secondo cookie che ti sei dimenticato di copiare, e quindi crea un'anomalia e ti caccia fuori.

Bella risposta.L'unica cosa che mi manca è il timeout: anche se la richiesta è esattamente la stessa, la sessione potrebbe essere scaduta tra le due richieste.
Alcuni usano persino nonce aggiuntivi per verificare che tu abbia effettivamente utilizzato il collegamento dalla pagina caricata in precedenza, ma questo può anche essere rubato e per lo più mitiga xss
Questo è il motivo per cui la convalida della sessione viene eseguita sul lato server.Se il tuo token è scaduto, non c'è modo per te di falsificare una sessione valida, a meno che tu non abbia accesso diretto alla memorizzazione del token (ma a quel punto, ci sono problemi MOLTO più grandi del semplice furto di cookie).
Puoi iniziare inviando esattamente le stesse intestazioni, quindi eliminare quelle che non ti servono.Recentemente ho creato un'app che si interfaccia con l'API di un sito Web che avevo decodificato.Si scopre che avevo bisogno solo del cookie di sessione, del referrer e del token CSFR (per i post).Non so nemmeno quale user agent sto inviando, probabilmente "Java".
John Wu
2018-01-30 08:53:42 UTC
view on stackexchange narkive permalink

I contenuti di un cookie sono definiti dall'applicazione e ci sono tutti i modi per usarli. Di seguito è riportato un breve elenco di alcuni dei possibili motivi per cui il tuo impegno non è riuscito.

  1. Il cookie è associato all'indirizzo IP, all'impronta digitale del dispositivo o ad altri dati non cookie che non hai acquisito .
  2. Il cookie originale contiene una scadenza ed è passata.
  3. Il cookie è monouso, ovvero il server ruota il valore ad ogni richiesta / risposta e invalida qualsiasi valore del cookie che è già stato utilizzato.
  4. Il cookie è stato associato a una sessione che non esiste più sul server (potenzialmente perché ti sei disconnesso).
  5. Il cookie è associato a un elemento nascosto all'interno la pagina (ad esempio un token CSRF) e non hai catturato o ricreato quel valore.
  6. Il server è bilanciato, con lo stato della sessione in proc e un meccanismo di appiccicosità della sessione temporanea applicato dal bilanciamento del carico. Nella nuova sessione, al tuo client è stato assegnato un nodo diverso all'interno della farm in cui la sessione non esiste.
  7. Il server web utilizza un motore di regole per rilevare attività sospette e il tuo cookie falsificato è stato presentato fuori sequenza o in un momento inaspettato.
  8. I cookie andavano bene, ma hai sbagliato qualche altro dettaglio, come l'intestazione del referrer.
user169249
2018-01-29 23:26:44 UTC
view on stackexchange narkive permalink
  1. I cookie stessi potrebbero essere stati firmati o crittografati, non la connessione che li ha forniti.
  2. Il server potrebbe aver rimosso la sessione dal database quando ti sei disconnesso.
Si noti inoltre che le sessioni a volte sono legate a qualcosa di più del semplice cookie, come l'agente utente o l'indirizzo IP.Se questi cambiano, anche il cookie potrebbe non funzionare.
Solo uno di questi è vero.
@micheal-johnson, perché solo uno?Un server può mantenere sessioni e firmare cookie che contengono informazioni sulla sessione ...
@Naim I cookie firmati o crittografati non impediranno un attacco che implichi la copia diretta dei cookie.
@Naim La crittografia dei cookie impedisce a un utente malintenzionato di rubare informazioni sensibili che potrebbero essere contenute nei cookie, ma questo non dovrebbe essere necessario oggi poiché i cookie dovrebbero essere sempre inviati tramite HTTPS e non dovrebbero contenere informazioni sensibili.
@Naim La firma dei cookie consente al server di verificare che non siano stati modificati (i siti mal fatti a volte memorizzano l'ID utente nel cookie e l'utente potrebbe accedere all'account di qualcun altro modificando l'ID memorizzato) ma se i cookie memorizzano soloun ID di sessione (che è tutto ciò che dovrebbero memorizzare), anche questo non è necessario.La necessità di firmare o crittografare i cookie è indicativa di una cattiva progettazione altrove.
Potresti espandere il numero 1?Non vedo come la crittografia / firma del contenuto dei cookie possa impedire [il dirottamento della sessione] (https://en.wikipedia.org/wiki/Session_hijacking) (che è essenzialmente ciò che l'OP ha cercato di fare su se stesso).
@Bergi # 1 è stata una risposta su come proteggere i cookie senza una connessione tls / ssl.È vero, non impedisce il dirottamento della sessione
@micheal-johnson Vero, non protegge il dirottamento.A proposito di HTTPS, non tutti i siti possono permettersene uno ... Non sono d'accordo che firmare i cookie sia un cattivo design, dipende dall'applicazione.
@Naim Puoi ottenere certificati HTTPS gratuitamente.Ma anche senza HTTPS, un cookie crittografato non impedirà questo tipo di dirottamento e le informazioni sensibili non dovrebbero comunque essere memorizzate in un cookie (solo un utente o un ID di sessione), quindi la crittografia del cookie stesso non dovrebbe essere necessaria.
@micheal-johnson Sono d'accordo sul fatto che non impedisce il dirottamento, # 1 era un commento su come un cookie può essere consegnato in modo sicuro senza una connessione SSL
@Naim Questo non è particolarmente rilevante per la domanda.
Kallmanation
2018-01-30 01:40:38 UTC
view on stackexchange narkive permalink

Come accennato, quando ti sei disconnesso, il server ha invalidato il cookie che hai appena rubato, rendendo inutile il tentativo di fingere di essere te stesso.

Quindi, se vuoi davvero provare a rubare i tuoi cookie per testare ciò che è necessario per rubare la tua sessione da questo particolare servizio web, dovrai esportare i tuoi cookie e importarli in un nuovo browser / modalità di navigazione in incognito senza disconnetterti nella scheda del browser originale.

Ma , solo per notare, i cookie vengono spesso controllati anche rispetto a una serie di altri criteri. Possiamo controllare IP, user-agent, ecc. https://wingsdream.wordpress.com/tag/mitigating-http-session-hijacking/

Potremmo anche ideare strategie ancora più intelligenti, come un sistema di aggiornamento continuo dei token o il fingerprinting del browser, per ricontrollare che la persona in possesso di questo cookie sia la persona a cui abbiamo dato quel cookie e che non sia stato rubato. Quindi, anche se "rubi" i cookie di autenticazione, potresti comunque non essere in grado di autenticarti con essi.

Micheal Johnson
2018-01-30 14:48:41 UTC
view on stackexchange narkive permalink

La sessione è stata invalidata sul server. I siti Web protetti lo fanno per prevenire esattamente il tipo di attacco che stai descrivendo. Quando ti disconnetti, il server cancella la sessione dal proprio database in modo che anche se gli stessi cookie di sessione fossero stati riutilizzati, non saranno accettati dal server. Questo è il motivo per cui è importante disconnettersi correttamente dal sito Web invece di chiudere semplicemente il browser, anche se il browser non conserva i cookie.

I siti Web non sicuri potrebbero lasciare la sessione in giro sul server in modo che anche una volta che ti sei "disconnesso" (ovvero cancellato i cookie dal tuo browser), gli stessi cookie di sessione possono essere riutilizzati in seguito.

Prova a ripetere l'esperimento, ma questa volta non disconnetterti in anticipo. Accedi al sito Web e quindi elimina manualmente i cookie dal browser. Se visiti di nuovo il sito Web senza i cookie, non sarai connesso. Ora ripristina i cookie e prova a visitare di nuovo il sito Web e dovresti eseguire nuovamente l'accesso.

Fritz
2018-01-31 04:05:18 UTC
view on stackexchange narkive permalink

Per siti semplici, la copia dei cookie dovrebbe essere sufficiente. Il sito più "sicuro" blocca la tua sessione come altri hanno menzionato ad altri fattori come l'IP.

C'è anche la possibilità che ci sia del codice javascript che controlla altri valori persistenti come Local / Session Storage, IndexDB e così via sopra. Prova a dargli un'occhiata. Sarebbe anche possibile che questa sia un'applicazione a sito singolo in cui tutti i dati vengono caricati tramite ajax e oAuth insieme a una forma di archiviazione persistente. Nessun cookie necessario poiché il segreto è memorizzato altrove.

Matviy Kotoniy
2018-02-01 13:27:23 UTC
view on stackexchange narkive permalink

In molti casi il furto di cookie È sufficiente per l'autenticazione, è probabile che tu abbia fatto qualcosa di sbagliato.

Nota, TLS / crittografia non sono rilevanti qui. Nel momento in cui stai leggendo il cookie dall'intestazione, il traffico è già stato decrittografato. Tutto ciò che Chrome ti mostra è già decrittografato, la crittografia è completamente trasparente.

Per rispondere alla domanda. Gli schemi di autenticazione variano. A volte usano solo i cookie, nel qual caso sarà sufficiente rubarli. A volte non usano affatto i cookie. A volte usano una combinazione di cookie e altri dati.

Ci sono infiniti schemi di cookie. Non esiste una risposta semplice per tutti loro.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...