de Ramesh Lingappa

Ce este deturnarea sesiunii și cum o puteți opri

Ce este deturnarea sesiunii si cum o puteti opri
Cookies delicioase

Această poveste este pentru începători și oricine are o înțelegere de bază despre cookie-uri (cookie-uri de sesiune), dar care nu știe cum să le securizeze în mod corespunzător. Nu trebuie să fii expert în securitate pentru a face asta. Trebuie doar să înțelegeți procesul și atunci veți ști.

Dacă nu aveți nicio idee despre cookie-uri sau despre modul în care acestea funcționează, atunci vă rugăm să citiți acest articol despre Cookie-uri HTTP.

Să ajungem la asta! Aveți o aplicație web uimitoare care oferă un serviciu excelent pentru clienți. Asta înseamnă că veți avea un Autentificare mecanism pentru a duce utilizatorul la aplicația dvs. Știi cât de importantă este securitatea. Ați implementat tot felul de măsuri de securitate în timpul autentificării. Grozav!

După autentificarea cu succes, trebuie să creați un fișier Sesiune pentru acel utilizator. Aceasta înseamnă că de fapt creați un fursec și trimiterea înapoi la browser. De exemplu, într-o aplicație web Java, în mod implicit, se numește JSESSIONID. Arată cam așa:

Ce este deturnarea sesiunii si cum o puteti opri
Informații despre cookie-uri din Chrome Dev Console -> Aplicații -> Cookie-uri

Prin utilizarea acestui cookie, numai serverul dvs. web este capabil să identifice cine este utilizatorul și va furniza conținut în consecință. Și acest cookie arată grozav. Nu există informații sensibile în cookie, ci doar ID-ul aleatoriu (care nu poate fi ghicit). Deci, utilizatorul este Sigur! …dreapta?

Ei bine, nu exact, să aruncăm o privire mai atentă.

1612134307 407 Ce este deturnarea sesiunii si cum o puteti opri

Există două proprietăți în acest cookie: HttpOnly (HTTP) și Sigur. Valorile lor sunt goale, adică nu este activat pentru acest cookie. Acolo se ajunge la punctul că nu mai este sigur.

Aici intră în joc Session Hijacking.

Deturnarea sesiunii, uneori cunoscut și sub numele de cookie deturnare este exploatarea unui computer valid sesiune – uneori numit și a sesiune cheie – pentru a obține acces neautorizat la informații sau servicii într-un sistem informatic. – Wikipedia

Deci, este acțiunea de a fura ID-ul de sesiune al unui client, prin care acesta poate accesa aplicația dvs. web ca și cum ar fi acel client.

Este posibil? Cum obțin acel ID de sesiune care se află în browserul utilizatorului?

Da este posibil. Cele două proprietăți cookie (sau steaguri) pe care le-am văzut mai devreme (HttpOnly și Sigur) sunt motivul pentru aceasta.

HttpOnly Flag

HttpOnly cookie-urile sunt inaccesibile pentru JavaScript Document.cookie API; acestea sunt trimise numai către server. De exemplu, cookie-urile care persistă sesiunile de pe server nu trebuie să fie disponibile pentru JavaScript și HttpOnly pavilion ar trebui să fie setat.

Deci, în termeni simpli, dacă nu setați semnalizatorul httpOnly, atunci cookie-ul dvs. poate fi citit din codul JavaScript frontal.

Deschideți orice pagină web al cărei cookie nu are setat semnalizatorul httpOnly. Apoi deschide Consola Chrome Dev și apoi atingeți Fila Consolă (Cmd + Shift + J sau Ctrl + Shift + J). Tip document.cookie și Enter, și veți vedea așa ceva:

1612134307 740 Ce este deturnarea sesiunii si cum o puteti opri
document.utilizarea cookie-urilor

După cum puteți vedea, primiți toate informațiile despre cookie-uri. Un atacator JavaScript poate pur și simplu posta acest lucru pe propriul server pentru o utilizare ulterioară.

S-ar putea să vă întrebați cum pot scrie acest cod în aplicația dvs. Este posibil în mai multe moduri.

O modalitate este să injectați câteva bibliotecă JS terță parte de încredere cum ar fi jurnalizarea, utilitarele de asistență etc. Citiți acest articol Recoltez numerele cardurilor de credit și parolele de pe site-ul dvs. Iată cum.

Un alt mod este prin utilizarea unui Cross Site Scripting Attack. Nu vom intra în detalii, dar amintiți-vă că se poate face.

Deci, cum o putem remedia?

Cookie-ul de sesiune nici măcar nu trebuie să fie accesibil clientului JavaScript. Este necesar doar pentru server. Ar trebui să îl facem accesibil numai pentru server. Se poate face adăugând un cuvânt (httpNumai) în dumneavoastră set_cookie antetul de răspuns http. Asa:

Set-Cookie: JSESSIONID=T8zK7hcII6iNgA; Expires=Wed, 21 May 2018 07:28:00 GMT; HttpOnly

Prin adăugarea httpNumai pavilion, informați browserul că acest cookie nu trebuie citit de codul JavaScript. Browserul se va ocupa de restul. Așa arată după adăugarea steagului httpOnly:

1612134307 76 Ce este deturnarea sesiunii si cum o puteti opri
cookie setat cu steagul httpOnly

Observați bifa în proprietatea HTTP. Asta indică faptul că httpNumai este activat.

1612134308 800 Ce este deturnarea sesiunii si cum o puteti opri

Aici puteți vedea asta document.cookie nu ne returnează cookie-ul de sesiune. Adică niciun JS nu îl poate citi, inclusiv orice scripturi externe.

Gata – unul jos unul!

Steag securizat

sigur flag indică browserului că cookie-ul trebuie returnat aplicației numai prin conexiuni criptate, adică o conexiune HTTPS.

Deci, atunci când un cookie este trimis browserului cu steagul sigur, iar când faceți o cerere către aplicație utilizând HTTP, browserul nu va atașa acest cookie în cerere. Îl va atașa numai într-o solicitare HTTPS. Solicitarea HTTPS va fi criptată, astfel încât cookie-urile să fie trimise în siguranță prin rețea către aplicația dvs.

Cum poate cineva să citească cookie-ul în cererea HTTP?

Acest lucru se poate realiza atunci când cineva (numit a “Bărbatul din mijloc” atac) monitorizează tot traficul din rețeaua clienților. Aceștia pot vedea datele cu text clar dacă solicitarea se află HTTP.

Când este trimis HTTPS, toate datele vor fi criptate din browser și trimise în rețea. Atacatorul nu va putea obține datele brute pe care le-ați trimis. Nici atacatorul nu va putea decripta conținutul. Acesta este motivul pentru care trimiterea datelor prin SSL este sigură.

Deci, cum o putem remedia?

La fel ca steagul httpOnly, trebuie doar să adăugați fișierul sigur steag în dumneavoastră set_cookie Antet de răspuns HTTP. Asa:

Set-Cookie: JSESSIONID=T8zK7hcII6iNgA; Expires=Wed, 21 May 2018 07:28:00 GMT; HttpOnly; Secure

În Java se poate face în mai multe moduri. Dacă utilizați Servlet 3.0 sau o versiune ulterioară, puteți configura aceste setări în web.xml asa:

<session-config>    <cookie-config>        <http-only>true</http-only>        <secure>true</secure>    </cookie-config> </session-config>

Dacă mediul dvs. nu îl acceptă, îl puteți adăuga manual. De exemplu, folosind servletele puteți face acest lucru:

În cele din urmă, așa arată când sunt setate ambele steaguri,

1612134308 627 Ce este deturnarea sesiunii si cum o puteti opri

Concluzie

Deci, atunci când aveți de-a face cu cookie-uri de sesiune sau orice alte cookie-uri importante, asigurați-vă că adăugați aceste două semnalizatoare.

Mulțumesc pentru lectură, Fericit de securizare!