Vraag:
Waarom is het stelen van cookies niet voldoende om te verifiëren?
Kartikey singh
2018-01-29 23:19:41 UTC
view on stackexchange narkive permalink

Ik heb geprobeerd al mijn cookies te exporteren via de extensie 'Deze cookie bewerken' op een aangemelde pagina die cookieverificatie gebruikt. Terwijl ik uitgelogd was, probeerde ik die cookies in te voegen in de hoop dat ik zou zijn ingelogd, maar er gebeurde niets.

Na zoeken kwam ik erachter dat de verzonden cookies in gecodeerde vorm zijn. Maar de pagina gebruikte geen TLS-codering. Mis ik iets?

BEWERKEN: ik heb geprobeerd dezelfde cookies te gebruiken terwijl ik was aangemeld , dwz alle cookies exporteerde en in een incognitovenster geïmporteerd, maar er gebeurde niets.
Ook dit soort aanval lijkt niet te werken op de meeste populaire sites zoals Google, Facebook enz. Dus hoe beschermen ze tegen dergelijke aanvallen?

Uitloggen moet niet alleen de cookies verwijderen, maar de huidige sessie ongeldig maken, dat is een goede gewoonte.U zou sessiecookies dus niet opnieuw moeten kunnen gebruiken nadat u zich hebt afgemeld.
Hoe ben je "uitgelogd" geworden?Heb je een privébrowsersessie gebruikt, heb je de cookies gewoon verwijderd nadat je ze hebt geëxporteerd of heb je een uitlogknop op de webpagina gebruikt?
De onderstaande antwoorden beantwoorden ook uw nieuwe bewerking.
Zeven antwoorden:
Wadih M.
2018-01-30 01:40:54 UTC
view on stackexchange narkive permalink

Technisch gezien, zelfs als de inhoud van de cookie zou worden versleuteld, als cookies correct naar de nieuwe browser worden gekopieerd en de nieuwe browser dezelfde HTTP-headers verzendt (dezelfde user-agent-string, verwijzende URL is zoals verwacht, computer heeft hetzelfde IP-adres adres, en alle andere headers die de server eerder had kunnen opslaan en vergelijken), zou de server in theorie niet in staat zijn om onderscheid te maken tussen de oorspronkelijke browser en de nieuwe browser .

Ik neem aan dat u de cookie (s) probeert te kopiëren van een site die u automatisch aanmeldt telkens wanneer u uw browser opent en u niet bent uitgelogd.

Sommige sites kunnen andere manieren gebruiken om te detecteren of dit een gestolen cookie / sessie is, maar het is een verloren strijd omdat ze allemaal nog steeds kunnen worden vervalst. Bijvoorbeeld:

  • Controleer of het IP-adres is gewijzigd
  • Is de User-Agent hetzelfde
  • Controleer of de verwijzer zinvol is
  • Eventuele andere HTTP-headers die de browser stuurt

Om je vraag te beantwoorden, zou je het moeten kunnen laten werken als je te maken hebt met een auto-login site en je bent niet uitgelogd. Zorg ervoor dat alle HTTP-headers die uw nieuwe browser verzendt dezelfde zijn, dat het IP-adres hetzelfde is en dat de verwijzende URL de verwachte, dezelfde user-agent is.

Merk op dat de service die u gebruikt misschien ook een 2e cookie gebruikt die u bent vergeten te kopiëren, en dus een anomalie creëert en u eruit schopt.

Goed antwoord.Het enige dat ik mis, is een time-out - zelfs als het verzoek precies hetzelfde is, kan de sessie tussen de twee verzoeken zijn verlopen.
Sommigen gebruiken zelfs extra nonce om te controleren of u daadwerkelijk een link van een eerder geladen pagina hebt gebruikt, maar dit kan ook worden gestolen en vermindert meestal xss
Dit is de reden waarom de sessie-validatie server-side gebeurt.Als je token is verlopen, is er geen manier om een geldige sessie te vervalsen, tenzij je directe toegang hebt tot de tokenopslag (maar op dat moment zijn er VEEL grotere problemen dan het simpelweg stelen van cookies).
U kunt beginnen met het verzenden van exact dezelfde kopteksten en vervolgens de koppen verwijderen die u niet nodig hebt.Ik heb onlangs een app gemaakt die een interface heeft met de API van een website die ik had reverse-engineered.Het bleek dat ik alleen de sessiecookie, de verwijzer en het CSFR-token (voor posts) nodig had.Ik weet niet eens welke user-agent ik verstuur, waarschijnlijk "Java".
John Wu
2018-01-30 08:53:42 UTC
view on stackexchange narkive permalink

De inhoud van een cookie is toepassingsgedefinieerd en er zijn allerlei manieren om ze te gebruiken. Hier is een korte lijst met enkele van de mogelijke redenen waarom uw poging is mislukt.

  1. De cookie is gebonden aan het IP-adres, de vingerafdruk van het apparaat of andere niet-cookiegegevens die u niet hebt vastgelegd .
  2. De originele cookie bevat een vervaldatum en is verstreken.
  3. De cookie is voor eenmalig gebruik, dwz de server roteert de waarde bij elk verzoek / antwoord en maakt elke cookiewaarde ongeldig die is al gebruikt.
  4. De cookie is gebonden aan een sessie die niet langer op de server bestaat (mogelijk omdat je bent uitgelogd).
  5. De cookie is gekoppeld aan een verborgen element binnen de pagina (bijv. een CSRF-token) en je hebt die waarde niet vastgelegd of opnieuw gemaakt.
  6. De server is load-balanced, met de sessiestatus in proc en een tijdelijk sessie-stickiness-mechanisme dat wordt afgedwongen door de load-balancer. In uw nieuwe sessie kreeg uw cliënt een ander knooppunt toegewezen binnen de farm waar de sessie niet bestaat.
  7. De webserver gebruikt een regelsengine om verdachte activiteit te detecteren, en uw vervalste cookie werd gepresenteerd buiten volgorde of op een onverwacht moment.
  8. De cookies waren prima, maar je hebt een ander detail verknoeid, zoals de verwijzende koptekst.
user169249
2018-01-29 23:26:44 UTC
view on stackexchange narkive permalink
  1. De cookies zelf zijn mogelijk ondertekend of gecodeerd, niet de verbinding die ze heeft afgeleverd.
  2. De server heeft mogelijk de sessie uit de database verwijderd toen je uitlogde.
Merk ook op dat sessies soms aan meer dan alleen de cookie gebonden zijn, zoals user-agent of IP-adres.Als die veranderen, werkt de cookie mogelijk ook niet.
Slechts één hiervan is waar.
@micheal-johnson, waarom maar één?Een server kan sessies onderhouden en cookies ondertekenen die sessie-informatie bevatten ...
@Naim Ondertekende of gecodeerde cookies voorkomen geen aanval waarbij de cookies rechtstreeks worden gekopieerd.
@Naim Door de cookies te versleutelen, voorkomt u dat een aanvaller gevoelige informatie steelt die mogelijk in de cookies is opgeslagen, maar dit zou vandaag niet nodig moeten zijn, aangezien cookies altijd via HTTPS moeten worden verzonden en geen gevoelige informatie mogen bevatten.
@Naim Door de cookies te ondertekenen, kan de server controleren of ze niet zijn gewijzigd (slecht gemaakte sites hebben soms de gebruikers-ID in de cookie opgeslagen en de gebruiker kan toegang krijgen tot het account van iemand anders door de opgeslagen ID te wijzigen) maar als uw cookies alleen opslaaneen sessie-ID (dat is alles wat ze zouden moeten opslaan), maar nogmaals, dit is niet nodig.Het feit dat cookies moeten worden ondertekend of gecodeerd, duidt op een slecht ontwerp elders.
Kunt u alstublieft verder gaan met # 1?Ik zie niet in hoe het versleutelen / ondertekenen van de cookie-inhoud [sessie-kaping] (https://en.wikipedia.org/wiki/Session_hijacking) kan voorkomen (wat in wezen is wat het OP met zichzelf probeerde te doen).
@Bergi # 1 was een reactie op hoe cookies kunnen worden beveiligd zonder een tls / ssl-verbinding.Toegegeven, het voorkomt het kapen van sessies niet
@micheal-johnson Het is waar, het beschermt niet tegen kapingen.Over HTTPS, niet elke site kan er een betalen ... Ik ben het er niet mee eens dat het ondertekenen van cookies een slecht ontwerp is, het hangt af van de toepassing.
@Naim U kunt gratis HTTPS-certificaten krijgen.Maar zelfs zonder HTTPS zal een gecodeerde cookie dit soort kapingen niet voorkomen, en gevoelige informatie mag sowieso niet in een cookie worden opgeslagen (alleen een gebruiker of sessie-ID), dus het versleutelen van de cookie zelf zou nog steeds niet nodig moeten zijn.
@micheal-johnson Ik ben het ermee eens dat het kaping niet voorkomt, # 1 was een opmerking over hoe een cookie op een veilige manier kan worden afgeleverd zonder een ssl-verbinding
@Naim Dat is niet echt relevant voor de vraag.
Kallmanation
2018-01-30 01:40:38 UTC
view on stackexchange narkive permalink

Zoals gezegd heeft de server de cookie die je zojuist hebt gestolen ongeldig gemaakt toen je je afmeldde, waardoor het waardeloos werd om te doen alsof je jezelf was.

Dus als je echt wilt testen of je je cookies probeert te stelen om te testen wat er nodig is om uw sessie van deze specifieke webservice te stelen, moet u uw cookies exporteren en ze importeren in een nieuwe browser / incognitomodus zonder uit te loggen op uw oorspronkelijke browsertabblad.

Maar Let op: cookies worden ook vaak gecontroleerd aan de hand van een hele reeks andere criteria. We kunnen controleren op IP, user-agent, enz. https://wingsdream.wordpress.com/tag/mitigating-http-session-hijacking/

We zouden ook kunnen bedenken nog slimmere strategieën, zoals een systeem van voortdurende verversing van tokens of browser-vingerafdrukken, om te controleren of de persoon die in het bezit is van deze cookie de persoon is aan wie we die cookie hebben gegeven en dat deze niet is gestolen. Dus zelfs als u de authenticatiecookies 'steelt', kunt u mogelijk nog steeds niet verifiëren met hen.

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

De sessie is ongeldig gemaakt op de server. Beveiligde websites doen dit om precies het soort aanval te voorkomen dat u beschrijft. Wanneer u zich afmeldt, verwijdert de server de sessie uit zijn eigen database, zodat zelfs als dezelfde sessiecookies opnieuw worden gebruikt, ze niet door de server worden geaccepteerd. Daarom is het belangrijk om correct uit te loggen bij de website in plaats van gewoon uw browser te sluiten, zelfs als uw browser de cookies niet bewaart.

Onveilige websites kunnen de sessie op de server laten rondslingeren, zodat zelfs als u eenmaal bent "uitgelogd" (dwz de cookies uit uw browser hebt verwijderd), kunnen dezelfde sessiecookies later nog steeds worden gebruikt.

Probeer uw experiment te herhalen, maar log deze keer niet uit vooraf. Log in op de website en verwijder de cookies vervolgens handmatig uit uw browser. Als u de website opnieuw bezoekt zonder de cookies, bent u niet ingelogd. Herstel nu de cookies en probeer de website opnieuw te bezoeken, en u zou opnieuw moeten zijn ingelogd.

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

Voor eenvoudige sites zou het kopiëren van cookies voldoende moeten zijn. Een meer "veilige" site pint uw sessie vast zoals anderen al noemden op andere factoren, zoals IP.

Er is ook de mogelijkheid dat er een JavaScript-code is die andere permanente waarden controleert, zoals Local / Session Storage, IndexDB enzovoort. Aan. Probeer ze eens te bekijken. Het zou ook kunnen dat dit een single site applicatie is waarbij alle data wordt geladen via ajax en oAuth samen met een vorm van persistent storage. Geen cookies nodig omdat het geheim ergens anders wordt opgeslagen.

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

In veel gevallen is het stelen van cookies IS voldoende om te authenticeren, de kans is groot dat je iets verkeerd hebt gedaan.

Let op: TLS / encryptie is hier niet relevant. Tegen de tijd dat u de cookie uit de header leest, is het verkeer al gedecodeerd. Alles wat Chrome u laat zien, is al gedecodeerd, codering is volledig transparant.

Om de vraag te beantwoorden. Authenticatieschema's variëren. Soms gebruiken ze alleen cookies, in dat geval is stelen voldoende. Soms gebruiken ze helemaal geen cookies. Soms gebruiken ze een combinatie van cookies en andere gegevens.

Er zijn oneindig veel cookieschema's. Er is geen eenvoudig antwoord voor alle.



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 3.0-licentie waaronder het wordt gedistribueerd.
Loading...